use*_*695 3 bash shell yaml gitlab-ci
我不太确定如何在 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
Run Code Online (Sandbox Code Playgroud)
所以我在这里所做的是读取包含应用程序列表的文件。对于每一行,我都必须停止现有的 docker 映像,将其删除并使用一些参数运行新的映像。
&&
?"
for$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
Run Code Online (Sandbox Code Playgroud)
(请注意,序列(以 开头的项目-
)不必缩进,这就是-
直接位于 下方的原因script
。)
您可以在我的网站上找到有关 YAML 引用样式的更多信息: https: //www.yaml.info/learn/quote.html
归档时间: |
|
查看次数: |
5446 次 |
最近记录: |