Github Actionsによるprotoファイル整形とコミットを自動化
初めに
参考文献で紹介させていただいている「Github ActionsによるPythonのコード整形とコミットを自動化」を読みまして、簡単に記載していることを書きます。
Github Actionsでコード整形、コミットの自動化には2種類紹介してくれています。
- push されたときに自動でコードを整形 & コミットを行う
こちらはmasterブランチのコミットログを汚したくない方にお勧めの方法です。
- Pull Request がクローズされた時に自動でコードを整形 & コミットを行う
こちらはmasterブランチのコミットログは汚れても良いのでとにかく楽がしたい人におすすめです。
個人的にはmasterブランチのコミットログは汚したくないため、「pushされたときに自動でコードを整形 & コミット」を行うにしようとしましたが、新たな悩みが浮上しました。
pushしたときに自動でコードを整形 & コミットしてしまうと次にコミットするときにgit pull
をしてからコミットしないといけないということになってしまいます。あまり、気にしない人はいいですが、私の場合はよく小さなミスを残したままpushしてしまうことがあるので、そのたびにgit pullしていると開発体験がよくないです。
そのため、マージする前に整形と考えました。
/format
を入力するとコードを整形 & コミットを行う
Pull Requestのコメントにこちらは先ほどのメリット・デメリットを感じずにやることができます。
メリットは/format
と入力しないとコード整形されないのでPRのコミットログも増えず、わざわざgit pull
しなくてもコード修正が可能です。
デメリットを強いてあげるならば、フォーマットせずにマージしてしまうことだと思います。
これは致命的な気がするので、どこかで「/formatが入力されていない」または、「Github Actionsによるコミットがされていない」とマージできないようにしたほうがいいかもしれません。
以下にbufを用いたprotoファイルの整形のGithub Actionsのworkflowのyamlファイルを記載しておきます。
on:
issue_comment:
types:
- created
jobs:
formatter:
name: formatter
if: ${{ github.event.issue.pull_request }} && startsWith(github.event.comment.body, '/format')
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: get upstream branch
id: upstreambranch
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "branch=$(curl -H "Authorization: token ${GITHUB_TOKEN}" ${{ github.event.issue.pull_request.url }} | jq '.head.ref' | sed 's/\"//g')" >> $GITHUB_OUTPUT
- uses: actions/checkout@v3
with:
ref: ${{ steps.upstreambranch.outputs.branch }}
- name: setup buf
uses: bufbuild/buf-setup-action@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
- name: format
run: buf format -w
- name: commit
uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply Code Formatter Change
ref: ${{ steps.upstreambranch.outputs.branch }}
終わりに
Github Actionsを使用したコード整形とコミットの自動化の方法を調べ、その中で新たな改善点があるのではないかと思ってその一例としてコメントを認識して整形するといった方法を紹介しました。
他にもいい方法があれば教えていただけると幸いです。
Discussion