![](/img/trans.png)
[英]How to append the new tag to the list of existing tag in the yaml file using groovy/pipeline script
[英]Pipeline syntax: append to an existing file without using sh ""
我正在尝试在部署期间操作terraform.tfvars文件。
代码:
dir("test123/${params.serviceName}/terraform"){
sh """
#!/bin/bash -e
cat <<EOF > ./terraform.tfvars
remote_data = [{
vpc_state = "${params.targetEnv}/vpc/terraform.state"
ecs_state = "${params.targetEnv}/ecs/terraform.state"
bucket = "${ENV_BUCKET}"
region = "${REGION}"
}]
上面的代码行很难看。 是否有替代方法,例如在 groovy 中使用readFile
函数或除了调用sh
函数之外的任何其他方法谢谢
我认为根据您的版本,可能有其他 terraform 功能的解决方案,我正在努力了解为什么普通变量无法解决这个问题。 您是否尝试过通过环境变量加载它们? 您只需在 tfvars 中定义变量,然后通过 TF_VARS_ENV_BUCKET 提供它们, 就像这里。 您可以直接将作业参数写入 envs 以确保它们存在。
找到了更优雅的方式:
def remoteData(deploymentDir){
def data = """
remote_data = [{
vpc_state = "${TARGET_ENV}/vpc/terraform.state"
ecs_state = "${TARGET_ENV}/ecs/terraform.state"
bucket = "${ENV_BUCKET}"
region = "${ENV_BUCKET_REGION}"
}]
consul_address="${CONSUL_ADDRESS}"
vault_address="${VAULT_ADDRESS}"
service_name="${SERVICE_NAME}"
image_tag="${IMAGE_TAG}"
region="${REGION}"
deploy_role="${ARN}"
dashboard_folder="${SERVICE_NAME}-${TARGET_ENV}"
"""
writeFile file: "${WORKSPACE}/${deploymentDir}/terraform.tfvars", text: "${data}"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.