首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >gitlab ci yaml文件上的if else命令

gitlab ci yaml文件上的if else命令
EN

Stack Overflow用户
提问于 2019-10-03 14:36:52
回答 1查看 6.4K关注 0票数 0

ı有一个yaml文件,我需要如果真的消息发送yaml文件将是succesful.else yaml文件将失败

ı希望,如果响应消息为真,则yaml文件成功,否则yaml文件将失败

代码语言:javascript
复制
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.But中签入started.Please,否则yaml文件失败。有人能提供相同的正确语法吗?gitlabci中有关于条件(if-else,for loop)的文档吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-03 15:58:44

一种选择是使用外部脚本文件,然后只需调用./path/to/myscript.sh即可从您的配置项中调用该文件。好处是您不必再担心YAML语法。

如果您更喜欢使用.gitlab-ci.yml文件,我相信以下方法是可行的:

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

例如,您应该对脚本行使用双引号,对这些脚本中的字符串使用单引号。此外,该行应该只以一个-字符开头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58213534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档