我不太确定如何在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
所以我在这里要做的是读取包含应用程序列表的文件。对于每一行,我必须停止现有的泊坞窗映像,将其删除并使用一些参数运行新的泊坞窗。
&&
?"
使用$dom-$app
吗?答案 0 :(得分:2)
有几种方法可以在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