🚧 GitHub Actions: Add release workflow
parent
1dad18909c
commit
caef84cebb
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# We call setuptools.setup() here as we may rely on setuptools to interpret
|
||||||
|
# a dynamic version field. (Reading pyproject.toml is not enough in that case.)
|
||||||
|
expected_git_tag="v$(python -c 'from setuptools import setup; setup()' --version)"
|
||||||
|
actual_git_tag="$(git describe --tags)"
|
||||||
|
|
||||||
|
if [[ "$expected_git_tag" == "$actual_git_tag" ]]; then
|
||||||
|
echo "OK: Python package version $expected_git_tag matches git tag"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo "ERROR: Python package version $expected_git_tag does NOT match git tag $actual_git_tag"
|
||||||
|
exit 1
|
||||||
|
fi
|
@ -0,0 +1,58 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- "v*.*.*"
|
||||||
|
|
||||||
|
env:
|
||||||
|
PYPI_URL: https://pypi.org/p/dinglehopper
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- name: Check git tag vs package version
|
||||||
|
run: python3 -m pip install --upgrade setuptools && .github/workflows/release-check-version-tag
|
||||||
|
- name: Build package
|
||||||
|
run: python3 -m pip install --upgrade build && python3 -m build
|
||||||
|
- name: Test
|
||||||
|
run: python3 -m pip install -r requirements-dev.txt && pytest
|
||||||
|
- name: Upload dist
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: dist/
|
||||||
|
|
||||||
|
github-release:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Download dist
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: dist/
|
||||||
|
- name: Create release on GitHub
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
files: dist/*
|
||||||
|
|
||||||
|
pypi-publish:
|
||||||
|
needs: build
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment:
|
||||||
|
name: pypi
|
||||||
|
url: ${{ env.PYPI_URL }}
|
||||||
|
permissions:
|
||||||
|
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
||||||
|
steps:
|
||||||
|
- name: Download dist
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
|
with:
|
||||||
|
name: dist
|
||||||
|
path: dist/
|
||||||
|
- name: Publish package distributions to PyPI
|
||||||
|
uses: pypa/gh-action-pypi-publish@release/v1
|
Loading…
Reference in New Issue