Skip to content

feat: drop support for Python < 3.9 #1

feat: drop support for Python < 3.9

feat: drop support for Python < 3.9 #1

Workflow file for this run

# This workflow runs when a pull request is closed.
#
# - Gets list of PR labels.
# - If 'release' label:
# - Get release version using Poetry.
# - Build the release.
# - Draft a new GitHub release.
# - Upload the wheel to the new GitHub release.
# - Upload wheel to Test PyPi if build succeeds. (Future)
# - Test install from Test PyPi. (Future)
# - Upload wheel to PyPi if install test succeeds. (Future)
# - Generate new CHANGELOG.
# - Get next semantic version.
# - Close old milestones.
# - Create new minor version milestone.
# - Create new major version milestone.
name: Do Release Workflow
on:
pull_request:
branches:
- master
types:
- closed
jobs:
create_new_release:
name: Create New Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get PR labels
id: prlabels
uses: joerick/[email protected]
- name: Get release version
id: relversion
if: contains(steps.prlabels.outputs.labels, ' release ')
run: |
pip install poetry
echo "version=$(echo $(poetry version | cut -d' ' -f2))" >> $GITHUB_OUTPUT
if [[ $version != *"-rc"* ]]; then
echo "do_release=1" >> $GITHUB_ENV
echo "do_changelog=1" >> $GITHUB_ENV
echo "do_milestones=1" >> $GITHUB_ENV
fi
- name: Build release
id: build
if: ${{ env.do_release == 1 }}
run: |
pip install -U pip poetry twine
poetry build && twine check dist/* && echo "build_ok=1" >> $GITHUB_ENV
- name: Cut the release
id: cutrelease
if: ${{ env.build_ok == 1 }}
uses: release-drafter/release-drafter@v5
with:
name: "${{ steps.relversion.outputs.new_tag }}"
tag: "${{ steps.relversion.outputs.new_tag }}"
version: "${{ steps.relversion.outputs.new_tag }}"
prerelease: false
publish: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload wheel to GitHub release
id: upload-wheel
if: ${{ env.build_ok == 1 }}
uses: shogo82148/actions-upload-release-asset@v1
with:
upload_url: ${{ steps.cutrelease.outputs.upload_url }}
asset_path: ./dist/*.whl
# - name: Publish to Test PyPi
# if: ${{ env.build_ok == 1 }}
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# user: __token__
# password: ${{ secrets.TEST_PYPI_API_TOKEN }}
# repository_url: https://test.pypi.org/legacy/
# - name: Test install from Test PyPI
# if: ${{ env.build_ok == 1 }}
# run: |
# sudo apt-get update
# pip install \
# --index-url https://test.pypi.org/simple/ \
# --extra-index-url https://pypi.org/simple \
# docformatter==${{ steps.newversion.outputs.new_version }} && echo "install_ok=1" >> $GITHUB_ENV
# - name: Publish to PyPi
# if: ${{ env.install_ok == 1 }}
# uses: pypa/gh-action-pypi-publish@release/v1
# with:
# user: __token__
# password: ${{ secrets.PYPI_API_TOKEN }}
- name: Generate release changelog
uses: heinrichreimer/github-changelog-generator-action@master
if: ${{ env.do_changelog == 1 }}
with:
token: ${{ secrets.GITHUB_TOKEN }}
sinceTag: "v1.3.1"
excludeTagsRegex: "-rc[0-9]"
breakingLabel: "Breaking Changes"
breakingLabels: "V: major"
enhancementLabel: "Features"
enhancementLabels: "P: enhancement"
bugsLabel: "Bug Fixes"
bugLabels: "P: bug"
excludeLabels: "release"
issues: false
issuesWoLabels: false
maxIssues: 100
pullRequests: true
prWoLabels: false
author: true
unreleased: true
compareLink: true
stripGeneratorNotice: true
verbose: true
- name: Check if diff
if: ${{ env.do_changelog == 1 }}
continue-on-error: true
run: >
git diff --exit-code CHANGELOG.md &&
(echo "### No update" && exit 1) || (echo "### Commit update")
- uses: EndBug/add-and-commit@v9
name: Commit and push if diff
if: ${{ env.do_changelog == 1 }}
with:
add: CHANGELOG.md
message: 'chore: update CHANGELOG.md for new release'
author_name: GitHub Actions
author_email: [email protected]
committer_name: GitHub Actions
committer_email: [email protected]
push: true
- name: Get next semantic version
id: nextversion
if: ${{ env.do_milestones == 1 }}
uses: WyriHaximus/[email protected]
with:
version: ${{ steps.relversion.outputs.version }}
- name: Close old milestone
if: ${{ env.do_milestones == 1 }}
uses: WyriHaximus/github-action-close-milestone@master
with:
number: ${{ steps.relversion.outputs.version }}
- name: Create new minor release milestone
if: ${{ env.do_milestones == 1 }}
uses: WyriHaximus/[email protected]
with:
title: "${{ steps.nextversion.outputs.v_minor }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create new major release milestone
if: ${{ env.do_milestones == 1 }}
uses: WyriHaximus/[email protected]
with:
title: "${{ steps.nextversion.outputs.v_major }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}