github から CPANモジュールを直接 ShipIt
ひと月くらい前に、Github Actions から CPANに直接アップロードをしてみた記事を書いた。
Github Actions で CPANアップロードまでやってみた
そのときは、master にマージしたらアップロードする感じにしようとしていたんですが、その後あれこれ試行錯誤した結果、tag を打ったら CPAN アップロードすることにして、それなりにメンテしているモジュールにフローとして投入してみた。
以下のような普通の感じ。
- master は直接 push しない
- 各ブランチで開発をして master にじゃんじゃんマージ
- bump version もブランチで済ませて master にマージ
- リリース用にタグ打ったら Github Actions から CPAN UPLOAD
手元で ShipIt する場合だとたぶん master を push する感じにするんじゃないかと思うんですが、この方法だと bump までマージしたあとにおもむろに tag を打って、それをトリガーに CPANアップロードまでやる感じになります。手元の操作が増えているけど、master 直接 push しないので良いとか、そのことによりリバートしやすいとか、bump はコマンド一発でブランチプッシュまでやる(ようにした)ので手間は感じないとかそんな感じに落ち着きました。たぶん一番大きいポイントは
git 操作だけで CPAN アップロードまで終わる
です。
あとはCPANアップロードするフロー自体がそのモジュールの git 管理下に入って明快というのもあります。手元に環境を用意する必要もありません。その代わりに、PAUSEアカウントのメール、ID/PASSWORD を github 上で secret に登録する必要があり、また複数人でモジュールをメンテナンスする場合はさらに工夫が必要になります。そのあたりが都合つくならやってみる価値はあるかもしれません。
CPANアップロードを実施する Github Action はこんな感じ です。
やってみた感じだと、.gitignore とか MANIFEST.SKIP あたりがはまりどころかと思われる。