Как использовать условие if-else для gitlabci - PullRequest
0 голосов
/ 19 февраля 2019

Как использовать if else условие внутри gitlab-CI.

У меня есть код ниже:

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?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2019

Здесь три варианта синтаксиса для такого рода операторов.

Использование переменной оболочки

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

demo1-deploy-dev:
variables:
  MODULE: demo1

demo2-deploy-dev:
variables:
  MODULE: demo2

.deploy-dev:
image: testimage
environment: dev
tags:
  - kubectl
script:
  - kubectl apply -f ${MODULE} --record=true
0 голосов
/ 19 февраля 2019

Я думаю, вам нужно просто добавить точку с запятой и закрыть "fi" в конце.Я не смог найти ссылку на документацию.

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