我正在为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在脚本数组中处理条目的方式,尽管如果我想把它们放在一行,把它们和;
结合起来对我来说很有效。