以下の内容はhttps://7rikazhexde-techlog.hatenablog.com/entry/2024/10/09/233349より取得しました。


【GitHub Actions】pyproject.tomlのversionキーとgit tagを同じバージョン指定で更新してreleaseを作成するworkflowについて

はじめに

以前に以下の記事で、git hookを使用してコミットをトリガーにpyproject.tomlgit tagを更新するスクリプトについて紹介しました。

7rikazhexde-techlog.hatenablog.com

これは、pythonで作成したプロジェクトのバージョン情報として使用される、pyproject.tomlversionキーとgit tagのバージョンを揃えて更新したいという目的があり、git hook(pre-commit/post-commit)を使用することで作成しました。

しかし、しばらく運用する中で以下の使いづらさを感じていました。

  • major,minor,patchの値に対して、バージョンを上げる場合には999にする必要があること
  • git commit時にコミットキャンセルした場合はpyproject.tomlのバージョン更新用に使用するpre-commit正常終了しているため、一度値を戻さないといけないこと
  • 毎回手動でコミットが必要なこと

基本的にpyproject.tomlversionキーの更新とgit tagの実行はセットであり、バージョンを上げるときは取り消す処理は不要であるべきだと思いました。

そこで別の方法がないか考えたところ、github actionsでワークフローとして対応可能であることがわかりました。本記事はそのワークフローの紹介記事になります。

作成したもの

注意事項

本記事に記載された内容やコードによって生じたいかなる損害についても責任を負いません。使用する際は自己責任でお願いします。

本ワークフローではrepo権限追記のPATの設定が必要です。

  • token: ${{ secrets.PAT_FOR_PUSHES }}

詳細は下記ドキュメントを確認ください。

docs.github.com

YMLファイルについて

内部の処理はワークフローのコードを参照してください。

処理の流れとしてコメントで記載していますが、ポイントとしては、

pyproject.tomlversionキーを更新して、そのバージョンと同じ値git tagを実行します。これはpre-commitによる方法と同じですが、更新対象をワークフローのトリガー条件であるworkflow_dispatchから手動実行します。

さらに、git tag後は、action-gh-releaseアクションを使用してreleaseを作成します。

releaseでは、git logコマンドにより、バージョン間のコミットタイトルをreleaseノートとして出力するために、bodyに指定します。

このワークフローは、プルリクエストのマージやドキュメント更新後に最終的にプロジェクトのバージョンを更新してreleaseを作成するという運用イメージを想定しています。

まとめ

【Pythonバージョン管理】git hookを使用してコミットをトリガーにpyproject.tomlとgit tagを更新するスクリプトについて - 7rikazhexde’s tech logの改善として、GitHub Actionsによるワークフローを作成しました。

このワークフローにより、git hookで発生した使いづらさを改善しました。
個人的には満足していますが、releaseノートの内容など改善点はあります。
今後、改善する場合はgistの方を都度更新していきます。

以上です。




以上の内容はhttps://7rikazhexde-techlog.hatenablog.com/entry/2024/10/09/233349より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14