Doc link fix #96
Workflow file for this run
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: Publish to PyPI | |
on: | |
pull_request: | |
release: | |
types: [published] | |
push: | |
tags: ["v*"] | |
concurrency: | |
group: publish-pypi-{{ github.sha }} | |
cancel-in-progress: false | |
jobs: | |
build-packages: | |
name: Build packages | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Get tags | |
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
shell: bash | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Build package | |
run: | | |
python -m pip install --upgrade pip wheel setuptools setuptools_scm build twine | |
python -m build --sdist --wheel . --outdir dist | |
- name: Check files | |
run: | | |
ls dist | |
shell: bash | |
- name: Test wheels | |
run: | | |
pushd dist | |
python -m pip install ultraplot*.whl | |
version=$(python -c "import ultraplot; print(ultraplot.__version__)") | |
echo "Version: $version" | |
if [[ "$version" == "0."* ]]; then | |
echo "Version is not set correctly!" | |
exit 1 | |
fi | |
python -m twine check * | |
popd | |
shell: bash | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: dist-${{ github.sha }}-${{ github.run_id }}-${{ github.run_number }} | |
path: dist/* | |
if-no-files-found: error | |
publish-pypi-test: | |
name: Publish to TestPyPI | |
needs: build-packages | |
if: github.event_name != 'pull_request' | |
environment: | |
name: test | |
url: https://test.pypi.org/project/ultraplot/ | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist-${{ github.sha }}-${{ github.run_id }}-${{ github.run_number }} | |
path: dist | |
- name: Check files | |
run: | | |
ls dist | |
shell: bash | |
- name: Publish to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
repository-url: https://test.pypi.org/legacy/ | |
verbose: true | |
# releases generate both release and tag events so | |
# we get a race condition if we don't skip existing | |
skip-existing: ${{ (github.event_name == 'release' || github.event_name == 'push') && 'true' || 'false' }} | |
publish-pypi: | |
name: Publish to PyPI | |
needs: publish-pypi-test | |
environment: | |
name: prod | |
url: https://pypi.org/project/ultraplot/ | |
runs-on: ubuntu-latest | |
if: github.event_name == 'release' | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: dist-${{ github.sha }}-${{ github.run_id }}-${{ github.run_number }} | |
path: dist | |
- name: Check files | |
run: | | |
ls dist | |
shell: bash | |
- name: Publish to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
verbose: true |