Update release workflow with poetry (#5308)

This commit is contained in:
Serene 2024-06-15 18:56:08 +10:00 committed by GitHub
commit bbb9aad6fa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 83 additions and 63 deletions

View file

@ -7,87 +7,68 @@ on:
description: 'Version of the new release, just as a number with no prepended "v"'
required: true
env:
PYTHON_VERSION: 3.8
NEW_VERSION: ${{ inputs.version }}
jobs:
increment_version:
increment-version:
name: Bump project version and commit it
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
- name: Install Python tools
uses: BrandonLWhite/pipx-install-action@v0.1.1
- uses: actions/setup-python@v5
with:
python-version: "3.9"
- name: Run version script
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
- name: Install dependencies
run: poetry install --only=release
- name: Bump project version
id: script
run: |
python extra/release.py bump "${{ inputs.version }}"
run: poe bump "${{ env.NEW_VERSION }}"
- uses: EndBug/add-and-commit@v9
name: Commit the changes
with:
message: "Increment version numbers to ${{ inputs.version }}"
message: "Increment version to ${{ env.NEW_VERSION }}"
build:
name: Get changelog and build the distribution package
runs-on: ubuntu-latest
needs: increment_version
needs: increment-version
steps:
- uses: actions/checkout@v4
- name: Install Python tools
uses: BrandonLWhite/pipx-install-action@v0.1.1
- uses: actions/setup-python@v5
with:
fetch-depth: 0
ref: master
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
- run: pip install build wheel sphinx
- name: Build a binary wheel and a source tarball
env:
TZ: UTC
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
- name: Install dependencies
run: poetry install --only=release
make_github_release:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v4
- name: Install pandoc
run: sudo apt update && sudo apt install pandoc -y
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
- name: Obtain the changelog
run: echo CHANGELOG="$(python ./extra/release.py changelog)" >> $GITHUB_ENV
- name: Bump version and push tag
id: tag_version
uses: mathieudutour/github-tag-action@v6.1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ inputs.version }}
- name: Download all the dists
uses: actions/download-artifact@v3
run: echo "changelog=$(poe changelog)" >> $GITHUB_OUTPUT
- name: Build a binary wheel and a source tarball
run: poetry build
- name: Store the distribution packages
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Create a GitHub release
id: make_release
uses: ncipollo/release-action@v1
with:
tag: ${{ steps.tag_version.outputs.new_tag }}
name: Release ${{ steps.tag_version.outputs.new_tag }}
body: ${{ env.CHANGELOG }}
artifacts: dist/*
- name: Send release toot to Fosstodon
uses: cbrgm/mastodon-github-action@v2
with:
access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }}
url: ${{ secrets.MASTODON_URL }}
message: "Version ${{ steps.tag_version.outputs.new_tag }} of beets has been released! Check out all of the new changes at ${{ steps.create_release.outputs.html_url }}"
publish_to_pypi:
publish-to-pypi:
name: Publish distribution 📦 to PyPI
runs-on: ubuntu-latest
needs: build
environment:
@ -97,9 +78,46 @@ jobs:
id-token: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
make-github-release:
name: Create GitHub release
runs-on: ubuntu-latest
needs: publish-to-pypi
env:
CHANGELOG: ${{ needs.build.outputs.changelog }}
steps:
- name: Tag the commit
id: tag_version
uses: mathieudutour/github-tag-action@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ env.NEW_VERSION }}
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Create a GitHub release
id: make_release
uses: ncipollo/release-action@v1
env:
NEW_TAG: ${{ steps.tag_version.outputs.new_tag }}
with:
tag: ${{ env.NEW_TAG }}
name: Release ${{ env.NEW_TAG }}
body: ${{ env.CHANGELOG }}
artifacts: dist/*
- name: Send release toot to Fosstodon
uses: cbrgm/mastodon-github-action@v2
with:
access-token: ${{ secrets.MASTODON_ACCESS_TOKEN }}
url: ${{ secrets.MASTODON_URL }}
message: "Version ${{ steps.tag_version.outputs.new_tag }} of beets has been released! Check out all of the new changes at ${{ steps.create_release.outputs.html_url }}"

2
poetry.lock generated
View file

@ -2752,4 +2752,4 @@ web = ["flask", "flask-cors"]
[metadata]
lock-version = "2.0"
python-versions = ">=3.8,<4"
content-hash = "2ff0a67fbc8099eed500963f3338cf00d687abee9af56aac744a169f8f22d50d"
content-hash = "4ae4e4157dd4a0c7951ba1f642c8dc36ae8ca264789b2a224ecaaf5e3a2f289a"

View file

@ -34,16 +34,13 @@ Changelog = "https://github.com/beetbox/beets/blob/master/docs/changelog.rst"
[tool.poetry.dependencies]
python = ">=3.8,<4"
click = ">=8.1.7"
colorama = { version = "*", markers = "sys_platform == 'win32'" }
confuse = ">=1.5.0"
jellyfish = "*"
mediafile = ">=0.12.0"
munkres = ">=1.0.0"
musicbrainzngs = ">=0.4"
packaging = ">=24.0"
pyyaml = "*"
tomli = ">=2.0.1"
typing_extensions = "*"
unidecode = ">=1.3.6"
beautifulsoup4 = { version = "*", optional = true }
@ -106,6 +103,11 @@ types-urllib3 = "*"
pydata-sphinx-theme = "*"
sphinx = "*"
[tool.poetry.group.release.dependencies]
click = ">=8.1.7"
packaging = ">=24.0"
tomli = ">=2.0.1"
[tool.poetry.extras]
# inline comments note required external / non-python dependencies
absubmit = ["requests"] # extractor binary from https://acousticbrainz.org/download