Open10

tagpr の仕組み調べる

nukopynukopy

versionFile の検索

detectVersionFile
https://github.com/Songmu/tagpr/blob/4c8e0c433614e5915a7049413885246b854dfd4e/versionfile.go#L55

versionFile: detectVersionFile 内で呼ばれるけど現状ここの言語情報は使ってないっぽい
https://github.com/Songmu/tagpr/blob/4c8e0c433614e5915a7049413885246b854dfd4e/versionfile.go#L102

bumpVersionFile: 正規表現で replace
https://github.com/Songmu/tagpr/blob/4c8e0c433614e5915a7049413885246b854dfd4e/versionfile.go#L175

nukopynukopy

GitHub Actions デフォルトのトークンで tagpr を使用するには、organization 側で GitHub Actions が PR 作成することを許可しないといけない。

https://stackoverflow.com/questions/72376229/github-actions-is-not-permitted-to-create-or-approve-pull-requests-createpullre

  1. organization の Settings > Actions で Allow GitHub Actions to create and approve pull requests をチェック
  2. repository 側で Allow GitHub Actions to create and approve pull requests をチェック
nukopynukopy

tagpr で作られたブランチはデフォルトで patch バージョンを bump する。これを修正したいとき、リポジトリのバージョン管理で versionfile を使ってる場合は main ブランチで versionfile を変更して push する。

これをすると tagpr で作られた PR の書き換えが起きる。

nukopynukopy

tagpr で作られたブランチは常に main ブランチを追従してくれる。

nukopynukopy

個人のリポジトリでの tagpr の権限エラーが起きたとき、以下のように設定する。

リポジトリの Settings > Actions > General > Workflow permissions

ポイントは以下 2 つ:

  • tagpr はリポジトリ内のファイルを書き換えるので、リポジトリのコンテンツに対して read / write 権限が必要
  • tagpr は PR を作成するのでその作成権限が必要
nukopynukopy

tagpr で構築したワークフローが失敗したとき、正しく動くまで検証するとき

  1. main へ push
  2. tagpr により release PR が自動で作られる
  3. release PR 上でリリース作業を行う(CHANGELOG.md の編集など)
  4. マージ
  5. リリース用のフローが実行される
  6. 失敗する(このときタグとリリースは作成されてしまっている)
  7. リモートのタグを消す(リモートのタグを消すとタグに紐づいた GitHub Releases は消える)
    • git push origin :v1.2.0
  8. ローカルの tagpr ブランチを消す(このあと同じ名前のブランチがリモートで生成され、それを pull するので競合する)
    • git branch -d tagpr-from-v1.1.0
  9. GitHub Actions のワークフロー.yml を修正して main へ push
  10. release PR 上でリリース作業を行う(同じバージョンの CHANGELOG.md が追加されてしまうので削除する)
  11. マージ
  12. 3 ~ 9 を繰り返す
nukopynukopy

多分個人のプライベートリポジトリを作って小さく試してから本番環境に投入するのが良い。リモートのコミット履歴が CI の試行錯誤で汚れちゃうし。