tagpr を機能強化してv1.0.0をリリースしました
前回のtagprの紹介エントリの反響が思ったより大きくて喜んでいます。ということで、積み残し及び、要望やヒントから着想を得て幾つかの機能を追加実装しv1.0.0をリリースしました。
https://github.com/Songmu/tagpr/releases/tag/v1.0.0
ありがたいことに、public repoだけでも十数名の方に既にご利用いただいているようで、フィードバックから細かいエッジケースの修正も幾つかおこなって敲かれたため、だいぶ使い物になるソフトウェアになったと言って良いでしょう。
ということで、追加された機能等について解説していきます。
uses: Songmu/tagpr@v1
これまではワークフロー上で uses: Songmu/tagpr@main
とブランチ直指定してもらっていましたが、uses: Songmu/tagpr@v1
と指定できるようになりました。こっちのほうが、tagpr
自体のリリースタイミング的にも若干安全なので、既にお使いの方にはお手数ですが切り替えを推奨します。
併せてMarketplaceへの公開もしました。GitHub ActionsのカスタムワークフローのMarketplace公開は初めてなので嬉しいですね。
CHANGELOG.md を自動変更しないオプション
CHANGELOG.md
を自動更新しない設定を .tagpr
設定ファイルに書けるようになりました。
[tagpr]
changelog = false
前回の紹介エントリを書いたらすぐにsiketyanさんからpull requestいただきました。ありがとうございます!
https://github.com/Songmu/tagpr/pull/86
Conventional Labelsの強化
リリース対象のpull request一覧を拾い、それらのラベルに"major"か"minor"が含まれていた場合、それを考慮して次バージョン番号候補をtagprが生成するpull request上に出力するようにしました。
これは便利だと思います。
GitHub Releases作成挙動の変更オプション
tagpr
はデフォルトでtagを打つと同時に、GitHub Releasesも作成しますが、この挙動を設定可能にしました。tagpr.release
設定キーに、true, false, draftの何れかを指定できます。
[tagpr]
release = false # [true/false/draft]
GitHub Actions用出力により後続のタスクとの連携が容易に
tagprがtagを打った後、別途ジョブを動かしたいケースは多いでしょう。実行ファイルやコンテナをビルドしてパッケージングし、それらを何らかのリポジトリにアップロードしたり、deployフローを動かしたりなど。
これは、tagをトリガーにして別ワークフローを動かすのが良いと思いますが、前のエントリで説明したように、GitHub tokenの権限周りの仕様の関係でトークン発行処理を組む必要が出てくるなど少し複雑になります。
ですので、tagpr実行後に直接後続のタスクを動かせれば一つのワークフローの責務は多めになりますが、お手軽です。
それを実現しやすくするために、GitHub Actions用の出力を出すようにしました。具体的にはtag
とpull_request
というoutputsを出力します。このtag
が空か否かを見ることで後続のフローを動かすかどうかの判定を簡単におこなえます。具体的には以下のような具合です。
- uses: actions/checkout@v3
- id: tagpr
uses: Songmu/tagpr@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/release
with:
tag: ${{ steps.tagpr.outputs.tag }}
if: "steps.tagpr.outputs.tag != ''"
このサンプルでは、後続のリリースフローをリポジトリローカルのカスタムアクションにまとめています。.github/actions/release/action.yml
に処理を記述することになるでしょう。
このようにしておくと便利な点としては、上記のtagprのワークフローが途中で意図せず失敗してしまった場合に、リリースフローをリカバリするために手動でタグを打つワークフローを別途用意しやすくなることです。
name: release
on:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: ./.github/actions/release
with:
tag: ${{ github.ref }} # Note that github.ref is formatted like refs/tag/v1.2.3
tagprがタグを打った時、secrets.GITHUB_TOKEN
を使っている限りはこのワークフローがトリガーされることはありませんが、手動でタグを打った場合にはこのワークフローが動くという具合です。
FUNDING.yml
FUNDING.ymlを配置してGitHub Sponsorsへの導線をつけました。ワンショットスポンサーのメニューもあるので、是非スポンサーをご検討下さい。
https://github.com/sponsors/Songmu?frequency=one-time
スポンサーのみならず、引き続きpull requestや感想や要望等お待ちしております!