🗂
GitHub Actionsが起こしたイベントでGitHub ActionsをTriggerできない
そういう仕様です
無限ループを防ぐため
どうする
GitHub Appsを作り、それに実行させる。
PATを作るのは微妙なので、 actions/create-github-app-token
を使う。
コピペで使える例
事前準備
- Github Appsを作る
- APP_IDとPRIVATE_KEYを設定する
ファイル作成
create-github-app-token
でTokenを取得してそれを使用します。
GitHub Actionsでgofumptを実行してcommitまで行い自動修正してもらう に対応を加える例です
name: Autofix Gofumpt
on:
pull_request:
types: [ opened, synchronize ]
env:
GO_VERSION: "1.22.6"
jobs:
format:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
# 無限ループ対策のためにGitHub ActionsがPushしたTriggerでGitHub Actionsを動かすことができないためGitHub AppsにPushさせています。
# ref: https://github.com/ad-m/github-push-action/issues/32
- uses: actions/create-github-app-token@v1
id: github_apps
with:
app-id: ${{ vars.AUTOFIX_BOT_APP_ID }}
private-key: ${{ secrets.AUTOFIX_BOT_PRIVATE_KEY }}
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
token: ${{ steps.github_apps.outputs.token }}
- name: Setup Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Install gofumpt
run: go install mvdan.cc/gofumpt@latest
- name: Run gofumpt
id: gofumpt
run: |
gofumpt -d -e -l -w .
if [ -n "$(git status --porcelain)" ]; then
echo "changes_detected=true" >> $GITHUB_OUTPUT
else
echo "changes_detected=false" >> $GITHUB_OUTPUT
fi
- name: Commit changes
if: steps.gofumpt.outputs.changes_detected == 'true'
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add .
git commit -m "style: apply gofumpt formatting"
git push
Discussion