Gitlabci で if-else 条件を使用する方法 質問する

Gitlabci で if-else 条件を使用する方法 質問する

Gitlab-CI 内で if else 条件を使用する方法。

以下のコードがあります:

deploy-dev:
  image: testimage
  environment: dev
  tags:
    - kubectl
  script:
   - kubectl apply -f demo1 --record=true
   - kubectl apply -f demo2 --record=true

ここで、次のような条件を追加したいと思います

script:
    - (if [ "$flag" == "true" ]; then kubectl apply -f demo1 --record=true; else kubectl apply -f demo2 --record=true);

誰か正しい構文を教えてもらえますか? gitlabci の条件 (if-else、for ループ) に関するドキュメントはありますか?

ベストアンサー1

以下に、そのようなステートメントの3つの構文オプションを示します。gitlab-ciよりドキュメンテーション:

シェル変数の使用

deploy-dev:
image: testimage
environment: dev
tags:
 - kubectl
script:
 - if [ "$flag" == "true" ]; then MODULE="demo1"; else MODULE="demo2"; fi
 - kubectl apply -f ${MODULE} --record=true

yaml マルチラインブロックでシェル変数を使用する

deploy-dev:
image: testimage
environment: dev
tags:
  - kubectl
script:
  - >
    if [ "$flag" == "true" ]; then
      kubectl apply -f demo1 --record=true
    else
      kubectl apply -f demo2 --record=true
    fi

GitLabルールの使用

workflow:
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'
      when: never
    - if: '$CI_PIPELINE_SOURCE == "push"'
      when: never
    - when: always

GitLabのテンプレートと変数の使用

demo1-deploy-dev:
  extends: .deploy-dev
  only:
    variables: [ $flag == "true" ]
  variables:
    MODULE: demo1
        
demo2-deploy-dev:
  extends: .deploy-dev
  only:
    variables: [ $flag == "false" ]
  variables:
    MODULE: demo2
        
.deploy-dev:
image: testimage
environment: dev
tags:
  - kubectl
script:
  - kubectl apply -f ${MODULE} --record=true

おすすめ記事