背景
- 最近、SREを学習しているため、システムの構築、運用に対して、新たな考え方が出ました。今回はコスト削減を含めて、常に利用しているCodepipeline、Codecommit、CodebuildというAWSのCI/CDサービスを脱却して、Github actionsをためしたが、面白いことを見つけましたので、個人メモを含めて共有させます。
Target
- ブランチによって、github Actionsの動作を異なることにしたい
- ①ブランチ:feature/test1
- push の際にActionsを動かない
- ②ブランチ:develop
- push_request の際にActionsを動く
- ①ブランチ:feature/test1
ソース
- 今回利用ソースはこちら
操作順番
まずは、Actionsファイルを作成して、Actionsを動きます。
name: test github actions
on:
push:
branches:
"feature/**"
pull_request:
branches:
"develop"
jobs:
build-for-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: echo name
run: |
echo "::debug this activate"
「feature/test1」ブランチにcommitして、Actionsを動けましたね。ーー有効性を証明した
さて、pushの部分をcommand outして、動作を確認しましょう。
name: test github actions
on:
# push:
# branches:
# "feature/**"
pull_request:
branches:
"develop"
jobs:
build-for-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: echo name
run: |
echo "::debug this activate"
うん、良さそうですね。「feature/test1」ブランチにcommitしても、Actionsを動かなかった。ーーTargetの①を達成した。
さあ、PRを出してみましょう。
あれ、なんか動いている。
なるほど、なるほど、githubは「feature/test1」ブランチの中に、workflowsにymlファイルが検知できて、自動テストしているぽいね。
最高~~~
つまり、developブランチに対して、実際の手動マージをしなくても、PRの自動テストによりpull-requstテストができることですね。ーーTargetの②を達成した。
このことです~~~~
じゃあ、まずいものがきました。
PRがOpenのまま、「feature/test1」ブランチにcommitして、どうなるでしょうか。
Actionsが動いている。。
※は↓↓↓↓↓↓
※は↑↑↑↑↑↑
マジか、ymlファイルのミスがあるのか。待って、待って、
PRをcloseして、もう一度、ブランチにcommitしたら......ドキドキ......
ジャンジャン。。。Actionsを動かなかった。Safe~~~~~
PS:※の画像をよく見ると、push actionではなく、pull requestですね。
まとめ
- Ationsの修正があるのPRを出す際に、Github側は自動テストを行うため、手動確認なしでOK
- Ationsの修正があるのPRがOPEN状態だと、作業ブランチにコミットすると、Actionsが動けますので、注意してね。。