From 3ef10cd78f28a1d15fa5e9ca4095fa3390f0dd63 Mon Sep 17 00:00:00 2001 From: "Noah D. Brenowitz" Date: Fri, 31 May 2024 21:25:52 -0700 Subject: [PATCH] setup ci (#4) --- .github/workflows/ci.yml | 54 +++++++++++++++++++++ .github/workflows/dev.yml | 50 -------------------- .github/workflows/preview.yml | 50 -------------------- .github/workflows/release.yml | 89 ----------------------------------- makefile | 3 +- pyproject.toml | 4 +- tests/test_latlon.py | 1 + 7 files changed, 60 insertions(+), 191 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/dev.yml delete mode 100644 .github/workflows/preview.yml delete mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..bf0c2d7 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,54 @@ +name: Test CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Set up Python + uses: actions/setup-python@v2 + with: + python-version: '3.9' + + - name: Install dependencies + run: | + apt-get update && apt-get install -y make + python -m pip install --upgrade pip + pip install pre-commit + + - name: Install pre-commit hooks + run: | + pre-commit install + + - name: Run lint + run: | + make lint + build: + + runs-on: ubuntu-latest + container: + image: pytorch/pytorch:latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + - name: Build package + run: | + apt-get update && apt-get install -y build-essential + python -m pip install --upgrade pip + pip install --no-build-isolation .[test] + python setup.py build_ext --inplace + - name: Run tests + run: make unittest + - name: coverage + run: make coverage diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml deleted file mode 100644 index ad5345b..0000000 --- a/.github/workflows/dev.yml +++ /dev/null @@ -1,50 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: dev workflow - -# Controls when the action will run. -on: - # Triggers the workflow on push or pull request events but only for the master branch - push: - branches: [ master, main ] - pull_request: - branches: [ master, main ] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "test" - test: - # The type of runner that the job will run on - strategy: - matrix: - python-versions: [3.6, 3.7, 3.8, 3.9] - os: [ubuntu-18.04, macos-latest, windows-latest] - runs-on: ${{ matrix.os }} - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-versions }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install poetry tox tox-gh-actions - - - name: test with tox - run: - tox - - - name: list files - run: ls -l . - - - uses: codecov/codecov-action@v1 - with: - fail_ci_if_error: true - files: coverage.xml diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml deleted file mode 100644 index 953a60e..0000000 --- a/.github/workflows/preview.yml +++ /dev/null @@ -1,50 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: stage & preview workflow - -# Controls when the action will run. -on: - # Triggers the workflow on push or pull request events but only for the master branch - push: - branches: [ master, main ] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - publish_dev_build: - runs-on: ubuntu-latest - - strategy: - matrix: - python-versions: [ 3.8 ] - - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-versions }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install poetry tox tox-gh-actions - - - name: test with tox - run: - tox - - - name: Build wheels and source tarball - run: | - poetry version $(poetry version --short)-dev.$GITHUB_RUN_NUMBER - poetry version --short - poetry build - - - name: publish to Test PyPI - uses: pypa/gh-action-pypi-publish@master - with: - user: __token__ - password: ${{ secrets.TEST_PYPI_API_TOKEN}} - repository_url: https://test.pypi.org/legacy/ - skip_existing: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 6060909..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,89 +0,0 @@ -# Publish package on main branch if it's tagged with 'v*' - -name: release & publish workflow - -# Controls when the action will run. -on: - # Triggers the workflow on push events but only for the master branch - push: - tags: - - 'v*' - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "release" - release: - name: Create Release - runs-on: ubuntu-20.04 - - strategy: - matrix: - python-versions: [3.8] - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - - name: Get version from tag - id: tag_name - run: | - echo ::set-output name=current_version::${GITHUB_REF#refs/tags/v} - shell: bash - - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v2 - - - name: Get Changelog Entry - id: changelog_reader - uses: mindsers/changelog-reader-action@v2 - with: - validation_depth: 10 - version: ${{ steps.tag_name.outputs.current_version }} - path: ./CHANGELOG.md - - - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-versions }} - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install poetry - - - name: build documentation - run: | - poetry install -E doc - poetry run mkdocs build - - - name: publish documentation - uses: peaceiris/actions-gh-pages@v3 - with: - personal_token: ${{ secrets.PERSONAL_TOKEN }} - publish_dir: ./site - - - name: Build wheels and source tarball - run: >- - poetry build - - - name: show temporary files - run: >- - ls -l - - - name: create github release - id: create_release - uses: softprops/action-gh-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - body: ${{ steps.changelog_reader.outputs.changes }} - files: dist/*.whl - draft: false - prerelease: false - - - name: publish to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - user: __token__ - password: ${{ secrets.PYPI_API_TOKEN }} - skip_existing: true diff --git a/makefile b/makefile index 207939c..db755b1 100644 --- a/makefile +++ b/makefile @@ -16,7 +16,8 @@ lint: license unittest: coverage run --source earth2grid/ -m pytest - coverage run --source earth2grid/ -a -m pytest --doctest-modules earth2grid/ -vv + # requires vtk so don't run in ci + # coverage run --source earth2grid/ -a -m pytest --doctest-modules earth2grid/ -vv coverage: coverage report diff --git a/pyproject.toml b/pyproject.toml index f366390..24d0f1b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,11 +38,13 @@ dependencies = [ test = [ "pytest>=6.2.4", "black>=21.5b2", + "coverage>=7.0.0", "isort>=5.8.0", "mypy>=0.900", "flake8>=3.9.2", "flake8-docstrings>=1.6.0", - "pytest-cov>=2.12.0" + "pytest-cov>=2.12.0", + "pytest-regtest>=1.5.1,<2" ] dev = [ "tox>=3.20.1", diff --git a/tests/test_latlon.py b/tests/test_latlon.py index 8b395e3..78ad304 100644 --- a/tests/test_latlon.py +++ b/tests/test_latlon.py @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. import torch + from earth2grid.latlon import equiangular_lat_lon_grid