Skip to content

Version 1.4.0

Version 1.4.0 #5

Workflow file for this run

---
# yamllint disable rule:truthy rule:line-length
name: New Release
on:
release:
types:
- published
jobs:
check_release:
runs-on: ubuntu-22.04
outputs:
is_prerelease: ${{ steps.release.outputs.is_prerelease }}
is_devrelease: ${{ steps.release.outputs.is_devrelease }}
version: ${{ steps.release.outputs.version }}
major_minor_version: ${{ steps.release.outputs.major_minor_version }}
latest_tag: ${{ steps.release.outputs.latest_tag }}
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
with:
submodules: true
- name: "Set up Python"
uses: "actions/setup-python@v5"
with:
python-version: "3.12"
- name: "Install Poetry"
uses: "snok/install-poetry@v1"
with:
virtualenvs-create: true
virtualenvs-in-project: true
installer-parallel: true
- name: "Setup Python environment"
run: |
poetry config virtualenvs.create true --local
poetry env use 3.12
- name: "Install dependencies"
run: "poetry install --no-interaction --no-ansi"
- name: "Check prerelease type"
id: release
run: |
echo is_prerelease=$(poetry run python -c "from packaging.version import Version; print(int(Version('$(poetry version -s)').is_prerelease))") >> "$GITHUB_OUTPUT"
echo is_devrelease=$(poetry run python -c "from packaging.version import Version; print(int(Version('$(poetry version -s)').is_devrelease))") >> "$GITHUB_OUTPUT"
echo "version=$(poetry version -s)" >> "$GITHUB_OUTPUT"
echo major_minor_version=$(poetry run python -c "from packaging.version import Version; print(f\"{Version('$(poetry version -s)').major}.{Version('$(poetry version -s)').minor}\")") >> "$GITHUB_OUTPUT"
echo latest_tag=$(curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ github.token }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/${{ github.repository }}/releases/latest \
| jq -r '.tag_name') >> "$GITHUB_OUTPUT"
- name: Check tag version
if: github.event.release.tag_name != format('v{0}', steps.release.outputs.version)
run: |
echo "Tag version does not match python project version"
exit 1
- name: Check prerelease and project version
if: github.event.release.prerelease == true && steps.release.outputs.is_prerelease == 0 && steps.release.outputs.is_devrelease == 0
run: |
echo "Cannot pre-release a non pre-release or non dev-release version (${{ steps.release.outputs.version }})"
exit 1
- name: Check release and project version
if: github.event.release.prerelease == false && (steps.release.outputs.is_prerelease == 1 || steps.release.outputs.is_devrelease == 1)
run: |
echo "Cannot release a pre-release or dev-release version (${{ steps.release.outputs.version }})"
exit 1
publish-pypi:
needs: check_release
uses: ./.github/workflows/publish-pypi.yml
secrets: inherit
with:
publish: true
update-submodule:
needs: check_release
uses: ./.github/workflows/update-submodule.yml
secrets: inherit
with:
version: ${{ github.ref_name }}