From e3075b76e01e5f06a3bbc83018ce914e4ed846d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Fri, 14 Jun 2024 16:39:46 +0100 Subject: [PATCH 1/7] Move dependencies required for release to a separate group --- poetry.lock | 2 +- pyproject.toml | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/poetry.lock b/poetry.lock index d4cc7df01..5050302ff 100644 --- a/poetry.lock +++ b/poetry.lock @@ -2752,4 +2752,4 @@ web = ["flask", "flask-cors"] [metadata] lock-version = "2.0" python-versions = ">=3.8,<4" -content-hash = "2ff0a67fbc8099eed500963f3338cf00d687abee9af56aac744a169f8f22d50d" +content-hash = "4ae4e4157dd4a0c7951ba1f642c8dc36ae8ca264789b2a224ecaaf5e3a2f289a" diff --git a/pyproject.toml b/pyproject.toml index bcd9252c7..950818ed2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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 From f964aa89c99d6686b54097f5fc3c4e8d5b44944c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Fri, 14 Jun 2024 22:07:43 +0100 Subject: [PATCH 2/7] Release workflow: use poe bump to bump the version --- .github/workflows/make_release.yaml | 31 +++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/.github/workflows/make_release.yaml b/.github/workflows/make_release.yaml index 4bfc36d63..eac16a1b5 100644 --- a/.github/workflows/make_release.yaml +++ b/.github/workflows/make_release.yaml @@ -7,27 +7,38 @@ 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: runs-on: ubuntu-latest - needs: increment_version + needs: increment-version steps: - uses: actions/checkout@v4 with: @@ -66,7 +77,7 @@ jobs: uses: mathieudutour/github-tag-action@v6.1 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: From 0a1bddd99e637a7435d0d50760e43c593a2e38aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Fri, 14 Jun 2024 22:16:31 +0100 Subject: [PATCH 3/7] Release workflow: Use poetry to build the package --- .github/workflows/make_release.yaml | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/make_release.yaml b/.github/workflows/make_release.yaml index eac16a1b5..48b299ca4 100644 --- a/.github/workflows/make_release.yaml +++ b/.github/workflows/make_release.yaml @@ -37,22 +37,17 @@ jobs: message: "Increment version to ${{ env.NEW_VERSION }}" build: + name: Build the distribution packages runs-on: ubuntu-latest needs: increment-version steps: - uses: actions/checkout@v4 - 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: Install Python tools + uses: BrandonLWhite/pipx-install-action@v0.1.1 + - 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 with: From 1f8c5b8b33f7b8cd9ee538538ac0c4b5e04d6df1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Fri, 14 Jun 2024 22:39:21 +0100 Subject: [PATCH 4/7] Release workflow: Use poe changelog in make-github-release job --- .github/workflows/make_release.yaml | 34 ++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/.github/workflows/make_release.yaml b/.github/workflows/make_release.yaml index 48b299ca4..e7c30936c 100644 --- a/.github/workflows/make_release.yaml +++ b/.github/workflows/make_release.yaml @@ -54,36 +54,49 @@ jobs: name: python-package-distributions path: dist/ - make_github_release: + make-github-release: + name: Create GitHub release runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v4 + - name: Install Python tools + uses: BrandonLWhite/pipx-install-action@v0.1.1 + - 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: 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 + run: echo CHANGELOG="$(poe changelog)" >> $GITHUB_ENV + + - name: Tag the commit id: tag_version uses: mathieudutour/github-tag-action@v6.1 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: ${{ 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 @@ -93,7 +106,8 @@ jobs: 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: From ed574f4307f338f12182916f450f469c5ac93b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Fri, 14 Jun 2024 22:53:46 +0100 Subject: [PATCH 5/7] Release workflow: Update external GitHub action versions This fixes three warnings seen on https://github.com/beetbox/beets/actions/runs/9296798803 --- .github/workflows/make_release.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/make_release.yaml b/.github/workflows/make_release.yaml index e7c30936c..4d5c48824 100644 --- a/.github/workflows/make_release.yaml +++ b/.github/workflows/make_release.yaml @@ -49,7 +49,7 @@ jobs: 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/ @@ -78,7 +78,7 @@ jobs: - 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: ${{ env.NEW_VERSION }} @@ -117,7 +117,7 @@ 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/ From 8b52f3f9a52a77b930715906cdba3e4033b2fe60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Sat, 15 Jun 2024 04:13:49 +0100 Subject: [PATCH 6/7] Release workflow: Move changelog retrieval to the build job --- .github/workflows/make_release.yaml | 38 ++++++++++++++--------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/.github/workflows/make_release.yaml b/.github/workflows/make_release.yaml index 4d5c48824..76a2b5170 100644 --- a/.github/workflows/make_release.yaml +++ b/.github/workflows/make_release.yaml @@ -37,27 +37,9 @@ jobs: message: "Increment version to ${{ env.NEW_VERSION }}" build: - name: Build the distribution packages + name: Get changelog and build the distribution package runs-on: ubuntu-latest needs: increment-version - steps: - - uses: actions/checkout@v4 - - name: Install Python tools - uses: BrandonLWhite/pipx-install-action@v0.1.1 - - - 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/ - - make-github-release: - name: Create GitHub release - runs-on: ubuntu-latest - needs: build steps: - uses: actions/checkout@v4 - name: Install Python tools @@ -74,8 +56,24 @@ jobs: run: sudo apt update && sudo apt install pandoc -y - name: Obtain the changelog - run: echo CHANGELOG="$(poe changelog)" >> $GITHUB_ENV + 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/ + + make-github-release: + name: Create GitHub release + runs-on: ubuntu-latest + needs: build + env: + CHANGELOG: ${{ needs.build.outputs.changelog }} + steps: - name: Tag the commit id: tag_version uses: mathieudutour/github-tag-action@v6 From 190198bfa6feecd4a70fafc7fbb3abbaf793716b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0ar=C5=ABnas=20Nejus?= Date: Sat, 15 Jun 2024 08:48:13 +0100 Subject: [PATCH 7/7] Make make-github-release job dependent on publish-to-pypi --- .github/workflows/make_release.yaml | 38 ++++++++++++++--------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/make_release.yaml b/.github/workflows/make_release.yaml index 76a2b5170..24218b6f9 100644 --- a/.github/workflows/make_release.yaml +++ b/.github/workflows/make_release.yaml @@ -67,10 +67,28 @@ jobs: 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: build + needs: publish-to-pypi env: CHANGELOG: ${{ needs.build.outputs.changelog }} steps: @@ -103,21 +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: - 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