Команда if else для файла gitlab ci yaml - PullRequest
0 голосов
/ 03 октября 2019

у меня есть файл yaml, и мне нужно, если отправленное сообщение истинного файла yaml будет успешным. потерпит неудачу

variables:
  NUGET_PATH: 'C:\Tools\Nuget\nuget.exe'
  MSBUILD_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\amd64\msbuild.exe'
  SOLUTION_PATH: 'Textbox_ComboBox.sln'

stages:
  - build
  - job1
  - job2

before_script:
  - "cd Source"

build_job:
  stage: build
  except:
    - schedules
  script:
    - '& "$env:NUGET_PATH" restore'
    - '& "$env:MSBUILD_PATH" "$env:SOLUTION_PATH" /nologo /t:Rebuild /p:Configuration=Debug'

job1:
  stage: job1
  script:
    - 'curl adress1'
    -  -  if [ "$message" == "SAP transfer started. Please check in db" ]; then exit 0; else exit 1; fi


job2:
  stage: trigger_SAP_service
  when: delayed
  start_in: 5 minutes
  only:
    - schedules
  script:
    - 'curl adress2'

Я ожидаю, что выходное задание выполнено успешно. если сообщение запущено, SAP Transfer запущен. Пожалуйста, проверьте в db. Но в противном случае файл yaml не будет выполнен. Может ли кто-нибудь предоставить правильный синтаксис для того же? Есть ли документация для условий (если-иначе, для цикла) в gitlabci?

1 Ответ

0 голосов
/ 03 октября 2019

Одним из вариантов будет использование внешнего файла сценария, который затем можно вызвать из конфигурации CI, просто вызвав ./path/to/myscript.sh. Преимущество заключается в том, что вам больше не нужно беспокоиться о синтаксисе YAML.

Если вы предпочитаете оставаться в файле .gitlab-ci.yml, я считаю, что сработает следующее:

job1:
  stage: job1
  script:
    - "curl adress1"
    - "if [ '$message' == 'SAP transfer started. Please check in db' ]; then exit 0; else exit 1; fi"

Т.е. Вы должны использовать двойные кавычки для строк сценария и одинарные кавычки для строки в этих сценариях. Кроме того, строка должна начинаться только с одного символа -.

...