From bf295b39edcdf55c92fad4a076538bb7de65e001 Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:23:31 -0400 Subject: [PATCH 1/5] Add release workflow --- .github/workflows/pypi-release.yaml | 102 ++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 .github/workflows/pypi-release.yaml diff --git a/.github/workflows/pypi-release.yaml b/.github/workflows/pypi-release.yaml new file mode 100644 index 00000000..cce8908a --- /dev/null +++ b/.github/workflows/pypi-release.yaml @@ -0,0 +1,102 @@ +name: Build and Upload cmip6_dowscaling to PyPI +on: + release: + types: + - published + # Runs for pull requests should be disabled other than for testing purposes + # pull_request: + # branches: + # - main + +permissions: + contents: read + +jobs: + build-artifacts: + runs-on: ubuntu-latest + if: github.repository == 'carbonplan/cmip6-downscaling' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-python@v5.0.0 + name: Install Python + with: + python-version: '3.11' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install build twine + git clean -xdf + git restore -SW . + + # This step is only necessary for testing purposes and for TestPyPI + - name: Fix up version string for TestPyPI + if: ${{ !startsWith(github.ref, 'refs/tags') }} + run: | + # Change setuptools-scm local_scheme to "no-local-version" so the + # local part of the version isn't included, making the version string + # compatible with PyPI. + sed --in-place "s/node-and-date/no-local-version/g" pyproject.toml + + - name: Build tarball and wheels + run: | + python -m build + - name: Check built artifacts + run: | + python -m twine check --strict dist/* + pwd + if [ -f dist/cmip6_downscaling-0.0.0.tar.gz ]; then + echo "❌ INVALID VERSION NUMBER" + exit 1 + else + echo "✅ Looks good" + fi + - uses: actions/upload-artifact@v4 + with: + name: releases + path: dist + + test-built-dist: + needs: build-artifacts + runs-on: ubuntu-latest + steps: + - uses: actions/setup-python@v5.0.0 + name: Install Python + with: + python-version: '3.11' + - uses: actions/download-artifact@v4 + with: + name: releases + path: dist + - name: List contents of built dist + run: | + ls -ltrh + ls -ltrh dist + - name: Verify the built dist/wheel is valid + run: | + python -m pip install --upgrade pip + python -m pip install dist/cmip6_downscaling*.whl + python -c "import cmip6_downscaling; print(cmip6_downscaling.__version__)" + - name: Publish package to TestPyPI + uses: pypa/gh-action-pypi-publish@v1.8.14 + with: + password: ${{ secrets.TEST_PYPI_TOKEN }} + repository-url: https://test.pypi.org/legacy/ + # verbose: true + + upload-to-pypi: + needs: test-built-dist + if: github.event_name == 'release' + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: releases + path: dist + - name: Publish package to PyPI + uses: pypa/gh-action-pypi-publish@v1.8.14 + with: + password: ${{ secrets.PYPI_TOKEN }} + # verbose: true From e6b00114033abb869078ab8f4e1e7f42dc3c3051 Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:27:58 -0400 Subject: [PATCH 2/5] Use GitHub env and OIDC --- .github/workflows/pypi-release.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/pypi-release.yaml b/.github/workflows/pypi-release.yaml index cce8908a..264d9cc4 100644 --- a/.github/workflows/pypi-release.yaml +++ b/.github/workflows/pypi-release.yaml @@ -90,6 +90,7 @@ jobs: needs: test-built-dist if: github.event_name == 'release' runs-on: ubuntu-latest + environment: release steps: - uses: actions/download-artifact@v4 with: @@ -97,6 +98,3 @@ jobs: path: dist - name: Publish package to PyPI uses: pypa/gh-action-pypi-publish@v1.8.14 - with: - password: ${{ secrets.PYPI_TOKEN }} - # verbose: true From 9484a5c96c8c8b745673a0b3a209b63c5fb62cf1 Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:29:49 -0400 Subject: [PATCH 3/5] Test workflow --- .github/workflows/pypi-release.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pypi-release.yaml b/.github/workflows/pypi-release.yaml index 264d9cc4..b32bb2ea 100644 --- a/.github/workflows/pypi-release.yaml +++ b/.github/workflows/pypi-release.yaml @@ -4,9 +4,9 @@ on: types: - published # Runs for pull requests should be disabled other than for testing purposes - # pull_request: - # branches: - # - main + pull_request: + branches: + - main permissions: contents: read From c793fdc21aece2df640f60ddf087857ecb08093b Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:48:38 -0400 Subject: [PATCH 4/5] Comment PR runs --- .github/workflows/pypi-release.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pypi-release.yaml b/.github/workflows/pypi-release.yaml index b32bb2ea..264d9cc4 100644 --- a/.github/workflows/pypi-release.yaml +++ b/.github/workflows/pypi-release.yaml @@ -4,9 +4,9 @@ on: types: - published # Runs for pull requests should be disabled other than for testing purposes - pull_request: - branches: - - main + # pull_request: + # branches: + # - main permissions: contents: read From eadea6a1f5efcacc8627f230d77f459b5fe01e15 Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Tue, 16 Apr 2024 11:51:54 -0400 Subject: [PATCH 5/5] Test on 3.11 --- .github/workflows/main.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 1d98c7a8..4c6f423f 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -22,7 +22,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ['3.9', '3.10'] #TODO: add 3.11 once sparse/numba support it + python-version: ['3.9', '3.10', '3.11'] timeout-minutes: 20 defaults: run: