Groovy在数组中查找特定的文本



我是在JenkinsFile中使用Groovy的新手。我们有一个运行Terraform的管道,可以在AWS秘密管理器中创建秘密。通常情况下,管道失败是因为在Terraform之外创建了秘密,而Terraform apply失败。我们想出了一个解决方案,那就是解析Terraform计划并选择它将要创建的秘密列表,然后运行AWS CLI命令以确保这些秘密不存在。如果秘密存在,管道就会失败,Jenkins在PR中评论道。如果秘密不存在,管道就会继续应用Terraform。一旦解析了terraform,我们将秘密列表存储在一个数组中。然后循环遍历数组,运行AWS命令,然后将结果存储到另一个数组中。最后,我们循环遍历第二个数组,如果在数组中检测到(ResourceNotFoundException),我们将继续执行管道。如果我们确实检测到一个秘密,我们将使管道失败并注释pr代码如下:

def SecretValidation = { String environment, region ->
secrets = sh(script: "cat plan.log | awk -F '+' '$4 != $2 {print $0}' | grep -w name | awk -F '= ' '{gsub(/"/, "", $2); print $2}'", returnStdout: true).trim().split('n')
for (secret in secrets) {
returnText = sh(script: "aws secretsmanager describe-secret --secret-id ${secret}", returnStdout: true).trim().split('n')
}
if (!returnText.contains("ResourceNotFoundException")){ 

commentPR "## ERROR \n Secrets already exist! \n\n" + "## " + environment + " / " + region + "\n```" + "\n```\n"
throw new Exception("Secrets already exist.")
}
else {
commentPR "## INFO \n Secrets do not exist. Proceeding with Apply. \n\n" + "## " + environment + " / " + region + "\n```" + "\n```\n"
}
}

代码不工作并抛出hudson。AbortException:脚本返回退出码255错误。如有任何帮助,不胜感激。

我不知道你在做什么-只是试图修复你的代码中的小问题

def SecretValidation = { String environment, region ->
def secrets = sh(script: "cat plan.log | awk -F '+' '$4 != $2 {print $0}' | grep -w name | awk -F '= ' '{gsub(/"/, "", $2); print $2}'", returnStdout: true).trim().split('n')
for (secret in secrets) {
def returnText = sh(script: """
## ignore error
set +e
## rediredt stderr to stdout
aws secretsmanager describe-secret --secret-id ${secret} 2>&1
""", returnStdout: true).trim()
//check returnText for every secret
if (!returnText.contains("ResourceNotFoundException")){ 
commentPR "## ERROR \n Secrets already exist! \n\n" + "## " + environment + " / " + region + "\n```" + "\n```\n"
throw new Exception("Secrets already exist.")
} else {
commentPR "## INFO \n Secrets do not exist. Proceeding with Apply. \n\n" + "## " + environment + " / " + region + "\n```" + "\n```\n"
}
}
}

最新更新