Skip to content

Commit

Permalink
Update release workflow with poetry (#5308)
Browse files Browse the repository at this point in the history
  • Loading branch information
Serene-Arc authored Jun 15, 2024
2 parents 54a8ef7 + 190198b commit bbb9aad
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 55 deletions.
120 changes: 69 additions & 51 deletions .github/workflows/make_release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,77 +7,112 @@ 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/[email protected]
- 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/[email protected]
- 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
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry

- name: Install dependencies
run: poetry install --only=release

- name: Install pandoc
run: sudo apt update && sudo apt install pandoc -y

- name: Obtain the changelog
run: echo "changelog=$(poe changelog)" >> $GITHUB_OUTPUT

- name: Build a binary wheel and a source tarball
env:
TZ: UTC
run: python3 -m build
run: poetry build

- name: Store the distribution packages
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: python-package-distributions
path: dist/

make_github_release:
publish-to-pypi:
name: Publish distribution 📦 to PyPI
runs-on: ubuntu-latest
needs: build
environment:
name: pypi
url: https://pypi.org/p/beets
permissions:
id-token: write
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
- name: Download all the dists
uses: actions/download-artifact@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
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.1
uses: mathieudutour/github-tag-action@v6
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
custom_tag: ${{ inputs.version }}
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: ${{ steps.tag_version.outputs.new_tag }}
name: Release ${{ steps.tag_version.outputs.new_tag }}
tag: ${{ env.NEW_TAG }}
name: Release ${{ env.NEW_TAG }}
body: ${{ env.CHANGELOG }}
artifacts: dist/*
- name: Send release toot to Fosstodon
Expand All @@ -86,20 +121,3 @@ jobs:
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:
runs-on: ubuntu-latest
needs: build
environment:
name: pypi
url: https://pypi.org/p/beets
permissions:
id-token: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
2 changes: 1 addition & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit bbb9aad

Please sign in to comment.