🦀
【Flutter】アプリバージョン変更時に自動でGit Tagをつける
はじめに
今までFlutterアプリの開発をgitで管理しているとき、アプリのバージョンを変更したときにそのバージョン名でgit tagを手動で作っていました。
今回、この作業をGithub Actionsで自動化すれば便利なのでは?と思い、実際に作ってみました。
作成したworkflow
.github/workflows/create_version_tag.yaml
name: Create App Version's Git Tag
on:
push:
branches:
- main
jobs:
create-version-tag:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: "Check app version"
run: |
echo "v$(yq '.version' pubspec.yaml)" | awk -F'[+]' '{print $1}' > TAG_NAME
echo "TAG_NAME=$(cat TAG_NAME)" >> $GITHUB_ENV
git ls-remote --tags | grep "$(cat TAG_NAME)$" > TAG_GREP || echo "" > TAG_GREP
echo "TAG_GREP=$(cat TAG_GREP)" >> $GITHUB_ENV
- name: "Create Git tag if not exist"
if: env.TAG_GREP == ''
run: |
git tag '${{ env.TAG_NAME }}'
git push origin '${{ env.TAG_NAME }}'
リポジトリのルート直下にpubspec.yamlがある想定です。
上記のworkflowを追加すると、例えば
version: 0.1.0+1
と記述されているpubspec.yamlをmainブランチにpushした時、「v0.1.0」のタグが存在しなければ自動で作成してくれます。
pubspec.yamlのversionはアプリをリリースしたいタイミングで変更することが多いと思いますが、そのタイミングで自動でgit tagを付けてくれるようになるわけです。
「0.1.0+1」を「v0.1.0」のタグ名に変換しているのは
echo "v$(yq '.version' pubspec.yaml)" | awk -F'[+]' '{print $1}' > TAG_NAME
の部分ですので、お好みに合わせて変更して使用していただければと思います。
(※注)yqコマンドはUbuntu 20.04以降で標準搭載らしいです。
おわりに
アプリリリースのタイミングだ、アプリのバージョン変えるぞ、ついでにgitのtag付けて残しておくぞ、と開発を進めるのが常だったのでその作業を自動化できるようになったのはありがたい。。。Github Actionsで他にももっと便利に開発を進められるようにしたいです。
参考文献
- yaml読み込みの参考:
https://zenn.dev/snowcait/articles/1ae73059a5ea4d - workflowでタグ付け、の参考:
https://scrapbox.io/ohbarye/GitHub_Actionsでgit_tagを自動生成 - git ls-remote --tagsの参考:
https://buchi.hatenablog.com/entry/2015/02/27/122830
Discussion