GitLab CI/CDで特定のファイルが変更された場合にのみジョブを実行する
GitLab 11.4から only:changes
という記法がサポートされました.これにより,特定のファイルが変更された場合のみジョブを実行できます.
https://docs.gitlab.com/ee/ci/yaml/#onlychangesexceptchanges
例えば,以下のように記述すると,ブランチをpushした時に terraform/
フォルダのファイルが変更されている場合にのみジョブが実行されます.
stages: - build terraform_plan: stage: build only: changes: - terraform/**/* - .gitlab-ci.yml image: name: hashicorp/terraform:0.12.8 entrypoint: - /usr/bin/env script: - cd terraform/ - terraform --version - terraform init - terraform validate - terraform plan -out=plan.tfplan artifacts: name: plan paths: - terraform/plan.tfplan tags: - terraform
only
はブランチ名と組み合わせることも可能です.以下のように記述すると,先ほどの条件に加えて,masterブランチに対してのみジョブが実行されます.
only: changes: - terraform/**/* - .gitlab-ci.yml refs: - master
.gitlab-ci.yml
を変更した場合は何らかの副作用がある場合が多いので,上記のように .gitlab-ci.yml
を変更した場合もジョブが実行されるようにしておくとよいでしょう.