経緯
今関わってるプロジェクトのソースコード管理をGitlabからGithub移行する事になった
ソースコードだけではなく、CI(自動ビルド)もやっていて、合わせて移行することになったのだが、ここで一つ問題が発生した
gradleに記載しているversioncodeのパラメータを、GitlabCIのビルド時にversioncodeをジョブIDに上書きする処理を入れて入れていた
これ自体はgradleのtaskなので問題なく、Githubに移行後もそのまま使えるのだが、ジョブIDは連番のため、Githubに移行するとまた1からのカウントになってします
つまり「Githubに移行することによってバージョンがリセットされる」ということ
現状古いバージョンに上書きすることはできず(ローカルでやる場合は可能だが)、GithubでもCIを行うためには、GitlabのジョブIDを引き継ぐ必要がある
解決策
gradleのtaskの中で計算するしかないか、めんどくさいなー、と思った矢先、いいライブラリを発見した
使い方はかんたん
- Tagを打ってPushする
git tag build-number-500 git push origin build-number-500
※ 500は初期値にしたい値に変えれば良い
- Actionsに導入する
jobs: build: runs-on: ubuntu-latest steps: - name: Generate build number id: buildnumber uses: einaregilsson/build-number@v3 with: token: ${{secrets.github_token}} # Now you can pass ${{ steps.buildnumber.outputs.build_number }} to the next steps. - name: Another step as an example uses: actions/hello-world-docker-action@v1 with: who-to-greet: ${{ steps.buildnumber.outputs.build_number }}
「Generate build number」のジョブで「einaregilsson/build-number@v3 」を使うことで、ビルド番号を取得できる その際にTagを打っている場合はそのTagに記載している番号からスタートする (上記の例では500を打っているので、501からスタートすることになる)
※ ちなみにTagが打たれていない場合は、自動的に「1」のTagが打たれるみたい
取得したビルド番号を使うには${{ steps.buildnumber.outputs.build_number }}でおk
すごいかんたん
今回は同じJob内の別Stepで使用する方法を記載しているが、リンク先には別Jobに引き渡す方法や、複数のビルド番号を使う方法とかも書いてある
まとめ
今の時代、自分がぶち当たってる問題は先人の誰かが必ず通ってる道で、その中のすごい先人様が道標を用意してくれてることが多いんだなと実感しました
今はありがたく使わせていただきますが、いずれはこういうのを作れる側になりたいな