jenkins - 管道语法:附加到现有文件而不使用 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}"
}]
上面的代码行很难看。是否有替代方法,例如readFile
在 groovy 中使用函数或调用函数之外的任何其他sh
方法谢谢
解决方案
我认为根据您的版本,可能会有其他 terraform 功能的解决方案,我很难理解为什么普通变量不能解决这个问题。您是否尝试过通过环境变量加载它们?您只需在 tfvars 中定义变量,然后像这里一样通过 TF_VARS_ENV_BUCKET 提供它们。您可以直接将作业参数写入环境以确保它们存在。