1. ホーム
  2. if-statement

[解決済み] gitlabciでif-else条件を使用する方法

2022-02-10 03:25:18

質問

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ループ)についてのドキュメントはありますか?

どのように解決するのですか?

以下は、そのようなステートメントのための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