String 从地形模板动态填充Jenkins字符串参数

String 从地形模板动态填充Jenkins字符串参数,string,jenkins,parameter-passing,terraform,String,Jenkins,Parameter Passing,Terraform,我试图将局部环境变量传递到Jenkins构建的字符串参数中。当前,构建是从Github webhook触发的,每次推送到repo时都会运行,但是如果所讨论的字符串参数没有正确填充,构建将失败 默认参数值为空,并且我尝试传递的值每小时更新一次,因此此字段必须动态更新 非常感谢您的支持。我建议您制作一个脚本,一旦terraform中的某些内容发生更改,并在jenkins作业期间加载该文件的内容,该脚本将输出值从terraform状态文件转储到ini文件(或yaml,或任何您可以使用的内容)。有很多考

我试图将局部环境变量传递到Jenkins构建的字符串参数中。当前,构建是从Github webhook触发的,每次推送到repo时都会运行,但是如果所讨论的字符串参数没有正确填充,构建将失败

默认参数值为空,并且我尝试传递的值每小时更新一次,因此此字段必须动态更新


非常感谢您的支持。

我建议您制作一个脚本,一旦terraform中的某些内容发生更改,并在jenkins作业期间加载该文件的内容,该脚本将
输出值从terraform状态文件转储到ini文件(或yaml,或任何您可以使用的内容)。有很多考虑因素(如安全性、一致性),甚至还有
terraform输出
命令

基本上,脚本执行以下操作:

#!/bin/sh

json_lines=$(jq -r '.modules[] | select(.path == ["root"]) | .outputs | tojson' terraform.tfstate)

for json_line in $json_lines; do
    ini_values=$(echo $json_line | jq -r '. | to_entries | map("\(.key)=\(.value.value|tostring)") | .[]')

    if [[ -n $ini_values ]]; then
        cat <<EOF  >> terraform_outputs.ini
[terraform]
$ini_values
EOF
    fi
done
#/垃圾箱/垃圾箱
json_lines=$(jq-r'.modules[]| select(.path==[“root”])|。输出|到json'terraform.tfstate)
对于$json_行中的json_行;做
ini_值=$(echo$json_行| jq-r.|到|条目|映射(\(.key)=\(.value.value | tostring)|
如果[-n$ini_值]];然后
cat terraform_outputs.ini
[地形]
$ini_值
EOF
fi
完成