Vik*_*ore 12 if-statement gitlab-ci
如何在gitlab-CI内部使用else条件。
我有以下代码:
deploy-dev:
image: testimage
environment: dev
tags:
- kubectl
script:
- kubectl apply -f demo1 --record=true
- kubectl apply -f demo2 --record=true
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个类似这样的条件
script:
- (if [ "$flag" == "true" ]; then kubectl apply -f demo1 --record=true; else kubectl apply -f demo2 --record=true);
Run Code Online (Sandbox Code Playgroud)
有人可以提供相同的正确语法吗?gitlabci中是否有关于条件(if-else,for循环)的文档?
Xav*_*r D 29
在下文中,针对该语句的三个语法选项。
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 11
此外,在多行块的情况下,如果您想要或需要保留换行符,您可以使用管道字符:
script: |
if [ "$flag" == "true" ]; then
kubectl apply -f demo1 --record=true
else
kubectl apply -f demo2 --record=true
fi
Run Code Online (Sandbox Code Playgroud)
要深入了解,请访问https://yaml-multiline.info/
请注意,在GitLab 13.3(2020 年 8 月)中,对 if-else 规则语法进行了改进:
CI/CD 规则:如果支持带括号的逻辑表达式
如果您使用
rules关键字 withif子句,它现在更加强大,支持由管道处理器评估的括号表达式。您可以使用更复杂、更高效的 AND (
&&) / OR (||) 表达式,使您的管道规则更合乎逻辑、更强大且更易于管理。
并且,使用GitLab 13.8(2021 年 1 月)
管道规则的支持变量
以前,该
rules关键字的范围有限,只能确定是否应从管道中包含或排除作业。在此版本中,您现在可以决定是否满足某些条件并随后覆盖作业中的变量,从而在配置管道时为您提供更大的灵活性。
使用GitLab 13.12(2021 年 5 月):
支持 CI/CD 管道“工作流:规则”中的变量
以前,该
rules关键字的范围有限,只能确定是否应从管道中包含或排除作业。在 13.8 中,我们添加了使用variables关键字 withrules根据匹配的规则在作业中设置变量值的功能。在此版本中,我们已将此功能扩展到
workflow: rules,因此您可以在某些条件匹配时为整个管道设置变量值。
这有助于您使管道更加灵活。
我认为你需要在末尾添加一个分号并关闭“fi”。我找不到文档的链接。
script:
- (if [ "$flag" == "true" ]; then kubectl apply -f demo1 --record=true; else kubectl apply -f demo2 --record=true; fi);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10116 次 |
| 最近记录: |