LoginSignup
3
0

More than 1 year has passed since last update.

GitHub ActionsをCIに使うとき、マージ先のコードでビルトやテストが行われてしまう

Last updated at Posted at 2023-01-28

はじめに

職場でGitHub Actionsを使ってCI構築しているときに、うまくいなかなったことを記事にしてみました。
実験用リポジトリ
https://github.com/kbc18a11/actions-branch

GitHub ActionsでCIを作ってみた

以下のようなyamlをCIとして構築をしてみました。
CIの目的としては、マージ先で変更したa.shファイルを実行することです。

ci.yml
name: CI

on: pull_request_target

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 出力!!!!
        run: sh a.sh

そしてa.shの中身は、マージ元とマージ先それぞれ以下になります。

マージ元のa.sh
echo moge
マージ先の:a.sh
echo main

CIを実行

キャプチャ.PNG

えええええええ、マージ元のコードが実行されてるやんけ!!

なぜマージ元のコードが実行されたのか?

【結論】イベントをpull_request_targetで指定していたから

on: pull_request_target

pull_request_targetactions/checkout@v3を実行する際に、マージ先ブランチにチェックアウトされるため、マージ先のコードが実行されました。

【解決方法】イベントをpull_requestに指定する

on: pull_request

イベントをpull_requestに指定するすることで、actions/checkout@v3を実行する際に、マージ元ブランチにチェックアウトされて、マージ元のコードが実行されるようになります。

最終的に修正したyaml

ci.yml
name: CI

on: pull_request

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 出力!!!!
        run: sh a.sh
3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0