首页 > 解决方案 > 管道语法:附加到现有文件而不使用 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方法谢谢

标签: jenkinsgroovy

解决方案


我认为根据您的版本,可能会有其他 terraform 功能的解决方案,我很难理解为什么普通变量不能解决这个问题。您是否尝试过通过环境变量加载它们?您只需在 tfvars 中定义变量,然后像这里一样通过 TF_VARS_ENV_BUCKET 提供它们。您可以直接将作业参数写入环境以确保它们存在。


推荐阅读