如何解决如何在yml脚本中调用多个多行命令?
我不太确定如何在CI的yml文件中添加包含多个命令的多行脚本-在我的情况下为.gitlab-ci.yml
:
production:
stage: deploy
image: ${DOCKER_IMAGE}
script:
- while IFS='-' read -r dom app; do
docker stop "$dom-$app" || true &&
docker rm "$dom-$app" || true
docker run
--name "$dom-$app"
--detach
--restart=always
-e VIRTUAL_HOST=$dom
"$dom-$app":latest
done < $FILE
所以我在这里要做的是读取包含应用程序列表的文件。对于每一行,我必须停止现有的泊坞窗映像,将其删除并使用一些参数运行新的泊坞窗。
- 我如何连接docker命令(停止,rm和运行)?也许是
&&
? - 我必须为
"
使用$dom-$app
吗?
解决方法
有几种方法可以在YAML中创建多行字符串。
您使用多行纯字符串的方式,所有行将与空格一起折叠。
字符串的最后一行不够缩进。
应引用较长的字符串,因为很有可能在YAML中特殊的字符串中包含:
或 #
。
我建议使用文字块样式,因为这意味着文本将完全按照您看到的方式进行解释:
script:
- |
while IFS='-' read -r dom app; do
docker stop "$dom-$app" || true
docker rm "$dom-$app" || true
docker run \
--name "$dom-$app" \
--detach \
--restart=always \
-e VIRTUAL_HOST=$dom \
"$dom-$app":latest
done < $FILE
(请注意,序列(以-
开头的项不必缩进,这就是-
在script
下方的原因。)
您可以在我的网站上找到有关YAML引用样式的更多信息: https://www.yaml.info/learn/quote.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。