寝ても覚めてもこんぴうた

プログラム書いたり、ネットワーク設計したり、サーバ構築したり、車いじったり、ゲームしたり。そんなひとにわたしはなりたい。 投げ銭は kyash_id : chidakiyo マデ

GitHub Actions で job や step 単位で条件での実行を行う

f:id:chidakiyo:20200226154149j:plain

こんにちは、GitHub Actionsつかってますか?

GitHub Actions は workflow(yamlファイル) 単位で柔軟に条件の指定ができます。

たとえば

on:
  push:
    branches:
      - 'master'
    paths: 
      - 'go/*'

こんな感じであれば、goディレクトリ配下のファイルに変更があるmasterへのpushがあった場合に実行されます。

workfrlow単位ではなく、その中の job や step といった条件でも特定の条件での実行の可否のコントロールができます。
それを下記していきます。

job 単位での実行の可否

jobs.<JOB_NAME>.if という記述が可能です。

手っ取り早く例を書くと以下のような記述になります。

jobs:
  hoge-job:
    name: hoge-job
    runs-on: ubuntu-latest
    if: "contains( github.ref , '/feat/hoge')"
    steps:

条件は、ブランチが feat/hoge にマッチする際にjobを実行します。

steps 単位での実行の可否

jobと同様にstepsに対してもifの記述が行なえます。
jobs.<JOB_NAME>.steps.if となり、例は以下のようになります。

jobs:
  hoge-job:
    name: hoge-job
    runs-on: ubuntu-latest
    steps::

    ~~ snip ~~

      - name: Set up Go 1.13
        uses: actions/setup-go@v1
        with:
          go-version: 1.13
        id: go
        if: "contains( github.ref , '/feat/foo')"

ブランチが /feat/foo に一致する場合に指定した steps を実行します。

参考

Workflow syntax for GitHub Actions - GitHub Help

Workflow syntax for GitHub Actions - GitHub Help

Contexts and expression syntax for GitHub Actions - GitHub Help

enjoy!