release #3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: release | |
on: | |
release: | |
types: [published, edited] | |
workflow_dispatch: | |
env: | |
IMAGE_NAME: ${{ github.repository }} | |
jobs: | |
build-artifact: | |
name: Build DASstore package | |
runs-on: ubuntu-22.04 | |
permissions: | |
id-token: write | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # Fetch all history for all branches and tags. | |
- name: Set up Python | |
uses: actions/setup-python@v4.5.0 | |
with: | |
python-version: 3.9 | |
- name: Install dependencies | |
run: python -m pip install build | |
- name: Build source and wheel distributions | |
run: | | |
python -m build | |
echo "" | |
echo "Generated files:" | |
ls -lh dist/ | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: releases | |
path: dist | |
test-built-dist: | |
name: Test DASstore package | |
needs: build-artifact | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/setup-python@v4.5.0 | |
name: Install Python | |
with: | |
python-version: 3.9 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: releases | |
path: dist | |
- name: Publish to Test PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
verbose: true | |
skip-existing: true | |
- name: Check pypi packages | |
id: check_pkg | |
run: | | |
# Install local wheel to get the version number | |
pip install dist/dasstore*.whl | |
latest_version="$(python -c 'import dasstore; print(dasstore.__version__)')";export latest_version | |
echo "latest_version=$latest_version" >> $GITHUB_OUTPUT | |
echo "=== Got version $latest_version from local wheel install ===" | |
python -m pip uninstall --yes dasstore | |
sleep 5 | |
python -m pip install --upgrade pip | |
echo "=== Testing wheel file ===" | |
# Install wheel to get dependencies and check import | |
python -m pip install --extra-index-url https://test.pypi.org/simple --upgrade --pre dasstore==$latest_version | |
echo "=== Done testing wheel file ===" | |
echo "=== Testing source tar file ===" | |
# Install tar gz and check import | |
python -m pip uninstall --yes dasstore | |
python -m pip install --extra-index-url https://test.pypi.org/simple --upgrade --pre --no-binary=dasstore dasstore==$latest_version | |
python -c "import dasstore; print(dasstore.__version__)" | |
echo "=== Done testing source tar file ===" | |
outputs: | |
package-version: ${{steps.check_pkg.outputs.latest_version}} | |
publish-pypi: | |
name: Push DASstore to production pypi | |
needs: test-built-dist | |
if: startsWith(github.ref, 'refs/tags') | |
runs-on: ubuntu-22.04 | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/download-artifact@v3 | |
with: | |
name: releases | |
path: dist | |
- name: Publish to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 |