我不太确定如何在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映像,删除它,并运行带有一些参数的新映像。
- 如何连接docker命令(stop、rm和run(?也许是
&&
$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