今回はdevelopmentブランチにプルリクエストのリモートブランチ(test)をマージする流れ。その後terraform applyされる想定。
https://docs.github.com/ja/actions/using-workflows/events-that-trigger-workflows#issue_comment
https://github.com/actions/checkout
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
name: PR comment trigger apply on: issue_comment: jobs: dev-terraform-apply: if: contains(github.event.comment.html_url, '/pull/') && startsWith(github.event.comment.body, '/dev-terraform-apply') runs-on: ubuntu-latest steps: - uses: actions/github-script@v4 id: set-target-branch with: github-token: ${{secrets.GITHUB_TOKEN}} result-encoding: string script: | const pull_request = await github.pulls.get({ owner: context.repo.owner, repo: context.repo.repo, pull_number: context.issue.number }) return pull_request.data.head.ref - uses: actions/checkout@v4 with: ref: ${{ steps.set-target-branch.outputs.result }} fetch-depth: 0 - name: Set e-mail and username run: | git config --global user.email "hoge@gmail.com" git config --global user.name "GitHub Action" - name: git merge development run: | echo ${{ steps.set-target-branch.outputs.result }} git fetch git checkout development git pull origin development --ff-only git merge --no-ff ${{ steps.set-target-branch.outputs.result }} git push origin development - name: Add Comment uses: actions/github-script@v4 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | const result = await github.issues.createComment({ owner: context.repo.owner, repo: context.repo.repo, issue_number: context.issue.number, body: 'developmentブランチにマージしました。' }); console.log(result.data); |
actions/checkout@v4
では fetch-depth
を指定しないとcommit logが一部しか取れないのと、マージするときにコンフリクトが出てしまうのに注意すること。また、git merge --no-ff
でnon-fast-forward mergeになるので、マージコミットになる。つまりfast-forwardだとマージコミットしなので、指定したGitHubのユーザーが反映されないままになる。今出しているプルリクエストのリモートブランチを取得するにはgithub-scriptで変数化するしか方法がない。さらにデバッグ方法は毎回マージしないと実行されないことも認識しておくこと。
別ワークフローをkickしたい場合は以下。
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。