From 695b52f902820741457f39ad8d2541b1bb999c8d Mon Sep 17 00:00:00 2001 From: Max Jones <14077947+maxrjones@users.noreply.github.com> Date: Mon, 10 Jun 2024 13:50:59 -0400 Subject: [PATCH] Add release workflow --- .github/workflows/release.yml | 103 ++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..4fdf4a8e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,103 @@ +name: Build distribution +on: + release: + types: + - published + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build-artifacts: + runs-on: ubuntu-latest + if: github.repository == 'zarr-developers/VirtualiZarr' + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: "3.12" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install setuptools setuptools-scm wheel twine check-manifest + + - name: Build tarball and wheels + run: | + git clean -xdf + git restore -SW . + python -m build --sdist --wheel . + + - name: Check built artifacts + run: | + python -m twine check dist/* + python -m pip check + pwd + if [ -f dist/virtualizarr-unknown.tar.gz ]; then + echo "❌ INVALID VERSION NUMBER" + exit 1xxw + 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 + # environment: # TODO: Have a VirtualiZarr maintainer create a test-release environment + # name: test-release + # url: https://test.pypi.org/p/virtualizarr + permissions: + id-token: write # this permission is mandatory for trusted publishing + steps: + - uses: actions/setup-python@v5 + name: Install Python + with: + python-version: "3.12" + - 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 + if: github.event_name == 'push' + run: | + python -m pip install --upgrade pip + python -m pip install dist/virtualizarr*.whl + python -c "import virtualizarr; print(virtualizarr.__version__)" + + - name: Publish package to TestPyPI + uses: pypa/gh-action-pypi-publish@v1.8.14 + with: + 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 + # environment: # TODO: Have a VirtualiZarr maintainer create a release environment + # name: release + # url: https://pypi.org/p/virtualizarr + permissions: + id-token: write # this permission is mandatory for trusted publishing + 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: + verbose: true