gitlab CI/CD yml中的数组变量



我正在为terraform编写一个CI/CD管道,以部署GCP资源。在地形代码中,我获得了许多功能,网络就是其中之一。网络的文件夹结构为

Network
VPC
LoadBalancer
DNS
VPN

所以,我想循环terraform init,为Network文件夹的所有子文件夹规划和应用命令。yml文件看起来像

image:
name: registry.gitlab.com/gitlab-org/terraform-images/stable:latest
variables:
TF_ROOT: ${CI_PROJECT_DIR}
env: 'prod'
network_services: ""
stages:
- init
init:
stage: init
script:
- |
network_services = ['vpc' 'vpn']
for service in $network_services[@]
do
echo The path is var/$env/terraform.tfvars
done

上面给了我错误:

$ network_services = ['vpc' 'vpn'] # collapsed multi-line command
/bin/sh: eval: line 103: network_services: not found

请建议一种在gitlab CI/CD yml中声明数组变量的方法。

试着把你的工作改成这样:

init:
stage: init
script:
- network_services = ('vpc' 'vpn')
- for service in $network_services[@]
do
echo "The path is var/$env/terraform.tfvars
done

我不相信你能做这样的多行命令,因为gitlab runner eval在脚本数组中处理条目的方式,尽管如果我想把它们放在一行,把它们和;结合起来对我来说很有效。

最新更新