Синтаксис конвейера: добавление к существующему файлу без использования sh "" - PullRequest
1 голос
/ 29 января 2020

Я пытаюсь манипулировать файлом 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 function Спасибо

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Нашли более элегантный способ:

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}"
}
0 голосов
/ 30 января 2020

Я думаю, что могут быть решения с другими функциями terraform в зависимости от вашей версии, я изо всех сил пытаюсь понять, почему это не может быть решено обычными переменными. Вы пытались загрузить их через переменные среды? Вы бы просто определили переменные в tfvars, а затем они были бы переданы через TF_VARS_ENV_BUCKET как здесь . Вы можете просто записать параметры задания непосредственно в envs, чтобы убедиться, что они присутствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...