繁体   English   中英

管道语法:附加到现有文件而不使用 sh ""

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM