Clean Architecture, Clean Life

仕事・個人での技術的なことつぶやきます

【Github Actions】Githubのビルド番号を任意の値からカウントする

経緯

今関わってるプロジェクトのソースコード管理をGitlabからGithub移行する事になった

ソースコードだけではなく、CI(自動ビルド)もやっていて、合わせて移行することになったのだが、ここで一つ問題が発生した

gradleに記載しているversioncodeのパラメータを、GitlabCIのビルド時にversioncodeをジョブIDに上書きする処理を入れて入れていた

これ自体はgradleのtaskなので問題なく、Githubに移行後もそのまま使えるのだが、ジョブIDは連番のため、Githubに移行するとまた1からのカウントになってします

つまり「Githubに移行することによってバージョンがリセットされる」ということ

現状古いバージョンに上書きすることはできず(ローカルでやる場合は可能だが)、GithubでもCIを行うためには、GitlabのジョブIDを引き継ぐ必要がある

解決策

gradleのtaskの中で計算するしかないか、めんどくさいなー、と思った矢先、いいライブラリを発見した

github.com

使い方はかんたん

  1. Tagを打ってPushする
git tag build-number-500
git push origin build-number-500

※ 500は初期値にしたい値に変えれば良い

  1. 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に引き渡す方法や、複数のビルド番号を使う方法とかも書いてある

まとめ

今の時代、自分がぶち当たってる問題は先人の誰かが必ず通ってる道で、その中のすごい先人様が道標を用意してくれてることが多いんだなと実感しました

今はありがたく使わせていただきますが、いずれはこういうのを作れる側になりたいな