🐡
GitHub Actions: 処理結果を自動的にコミットする (リトライあり)
GitHub Actions から何らかの変更をしてコミットする際、処理中に他からコミットがあるとコミットに失敗してしまいます。以下のように記述するとマージしてリトライすることができます。
jobs:
foo:
steps:
- name: Commit changes
if: always()
run: |
if [ "$(git diff)" != "" ]; then
git config user.email "action@github.com"
git config user.name "GitHub Actions"
git commit -a -m "(comment)"
for i in {0..4}; do
if git push; then
break
fi
if [ ${i} -eq 4 ]; then
echo "exceeded maximum retries, exiting with error"
exit 1
fi
echo "git push failed, retrying ($((${i} + 1)))"
sleep $((2 ** ${i})).$((RANDOM % 10))
git pull --no-ff
done
fi
補足
- マージでコンフリクトした場合は失敗します。
Discussion