2017-05-08 97 views
1

我在我的Jenkins服务器上运行构建,我正在寻找使用当前构建中的提交编号动态填充git_commit字段。该文件中有多个函数,我想使用sed来匹配模块的core-lambda-function1名称,并使用当前版本的提交编号更新git_commit字段。任何帮助表示赞赏。谢谢。替换terraform文件中的代码块

module "core-lambda-function1" { 
    source = "./lambda" 
    name = "core-lambda-function" 
    runtime = "nodejs6.10" 
    role = "${aws_iam_role.iam_role_for_lambda.arn}" 
    filename = "../Archive.zip" 
    source_code_hash = "${base64sha256(file("../Archive.zip"))}" 
    source_dir = "../" 
    git_commit = "" 
} 

module "core-lambda-function2" { 
    source = "./lambda" 
    name = "core-lambda-function" 
    runtime = "nodejs6.10" 
    role = "${aws_iam_role.iam_role_for_lambda.arn}" 
    filename = "../Archive.zip" 
    source_code_hash = "${base64sha256(file("../Archive.zip"))}" 
    source_dir = "../" 
    git_commit = "" 
} 

这是我目前拥有的。

#!/bin/bash 
set -e 

while read p; do 
    NAME=$p 
    GIT_COMMIT=`git rev-parse HEAD` 
    echo $NAME | grep `xargs` main.tf -A 7 | sed -ri '7s/git_commit = ""/git_commit\ = \"'$GIT_COMMIT'"/g' 
done < build_name 

回答

0

为什么不是Input Variables in Terraform

variable "git_commit" {} 

module "core-lambda-function1" { 
    source = "./lambda" 
    name = "core-lambda-function" 
    runtime = "nodejs6.10" 
    role = "${aws_iam_role.iam_role_for_lambda.arn}" 
    filename = "../Archive.zip" 
    source_code_hash = "${base64sha256(file("../Archive.zip"))}" 
    source_dir = "../" 
    git_commit = "${var.git_commit}"  #### Use variable here. 
} 

所以在你的包装脚本,你可以更新到:

#!/bin/bash 
set -e 

GIT_COMMIT=$(git rev-parse HEAD) 

terraform plan -var 'git_commit=${GIT_COMMIT}' ... 
+1

像这样太: terraform计划-var “git_commit ='git的REV-解析HEAD'” – dpn

+0

看来这工作,我从来没有这样试过。 – BMW