1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab CI/CDの効率化術:ルール設定の覚え書き

Last updated at Posted at 2024-06-26

GitLab のジョブのルールを書いていて、「あれ、このルールどう書くっけ・・・」となるので備忘録

ワークフローのルール

workflowは、パイプラインそのものを実行するかどうかを決定するルールです。
workflowのrulesはパイプラインの多重実行を防ぐためこのようなルールにしています。
マージリクエストイベントやスケジュールされたパイプラインのみが実行されるようにすることで、不必要な実行を防ぎます。

workflow:
  rules:
    # スケジュールパイプラインの時は常に実行
    - if: $CI_PIPELINE_SOURCE == 'schedule'
      when: always
    # マージリクエストイベントが発生した場合にパイプラインを実行する
    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
      when: always
    # pushイベントでマージリクエストが存在する場合はパイプラインを実行しない
    - if: $CI_PIPELINE_SOURCE == 'push' && $CI_OPEN_MERGE_REQUESTS
      when: never
    # 上記に一致しないブランチへのpushではパイプラインを実行する
    - if: $CI_COMMIT_BRANCH
      when: always
    # どの条件にも合致しない場合はパイプラインを実行しない
    - when: never

スケジュール実行のルール

スケジュールなら常に実行

  rules:
    - if: $CI_PIPELINE_SOURCE == 'schedule'
      when: always

スケジュールなら常に実行しない

  rules:
    - if: $CI_PIPELINE_SOURCE == 'schedule'
      when: never

実行日時のルール

たとえば 9時〜18時(業務時間内)は実行しないとか

  rules:
    - if: $CI_PIPELINE_SOURCE != "schedule" && $CI_PIPELINE_CREATED_AT =~ /T(09|1[0-8]):/
      when: never

デプロイ環境に影響を与えるような処理で使ったりします。
スケジュールの場合に許可しているのは、どうしても実行したい場合に実行できるようにするためこうしています。

コミットメッセージのルール

強制的にCIを実行させたりしたい時用
空コミットで、コミットメッセージに [force ci] と入れてコミット&pushすることで実行させることができます

  rules:
    - if: $CI_COMMIT_MESSAGE =~ /\[force ci\]/
      when: always

git commit --allow-empty -m "[force ci]" でコミットしてpushすれば実行できます。
※ゴミとして残るので rebase で drop しましょう。


ほかにも忘れがちなrulesあれば今後追記していきます。

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?