Make a Beets Release #7
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Make a Beets Release | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
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: | |
name: Bump project version and commit it | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install Python tools | |
uses: BrandonLWhite/[email protected] | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ env.PYTHON_VERSION }} | |
cache: poetry | |
- name: Install dependencies | |
run: poetry install --only=release | |
- name: Bump project version | |
id: script | |
run: poe bump "${{ env.NEW_VERSION }}" | |
- uses: EndBug/add-and-commit@v9 | |
name: Commit the changes | |
with: | |
message: "Increment version to ${{ env.NEW_VERSION }}" | |
build: | |
name: Get changelog and build the distribution package | |
runs-on: ubuntu-latest | |
needs: increment-version | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: master | |
- name: Install Python tools | |
uses: BrandonLWhite/[email protected] | |
- uses: actions/setup-python@v5 | |
with: | |
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<<EOF' | |
poe changelog | |
echo EOF | |
} >> "$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/ | |
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: | |
- name: Download all the dists | |
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: | |
- uses: actions/checkout@v4 | |
with: | |
ref: master | |
- 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 }}" |