【问题标题】:AWS CLI Query Cloudformation to populate Jenkins Extensible choice parameterAWS CLI 查询 Cloudformation 以填充 Jenkins 可扩展选择参数
【发布时间】:2020-11-06 00:44:33
【问题描述】:

我是 groovy 新手,非常感谢您的帮助。

在我的 Jenkins 中,我使用可扩展选择参数来使用 AWS CLI 命令填充列表。

当我在服务器中执行命令时,它会为我提供预期的输出。但它不会在 Jenkins 中生成。

下面是代码sn-p。

def proc = "aws cloudformation --profile myconfig list-stacks --stack-status-filter CREATE_COMPLETE --stack-status-filter UPDATE_COMPLETE --region us-east-1".execute() | "grep "..-02-"".execute() | "grep \"StackName\"".execute() | "cut -d':' -f2".execute() | "tr ',' ' '".execute() | "tr '\"' ' '".execute() | "sed \"s/\$/,/g\"".execute() | "paste -sd ' '".execute() | "awk '{\$1=\$1;print}'".execute() | "sed -r '/^\\s*\$/d'".execute() 

def Items = []
proc.in.eachLine {line ->         
    

Items.add(line.split()[3])
}

return Items

【问题讨论】:

  • 您是否尝试从 Jenkins master 执行命令?它必须先从服务器(主服务器)运行,然后才能从 Jenkins 运行。

标签: jenkins groovy amazon-cloudformation aws-cli jenkins-groovy


【解决方案1】:

我猜您想获取 CloudFormation 堆栈名称列表。
我正在使用来自 Jenkins Active Choice pluginActive Choice Parameter 和以下代码:

def aws_cmd = "aws cloudformation list-stacks \
               --query StackSummaries[].StackName \
               --stack-status-filter CREATE_COMPLETE \
               --stack-status-filter UPDATE_COMPLETE \
               --region us-east-1 \
               --output text \
               --profile myconfig"

def aws_cmd_output = aws_cmd.execute()
//aws_cmd_output.waitFor() // usually not required
def error = aws_cmd_output.err.text
def stacks = aws_cmd_output.text.tokenize()

if (error) {
    return [error]
} else {
    return stacks
}

如果脚本无法检索堆栈列表,则会返回错误。
它也应该与 Extensible Choice Parameter 一起使用。

注意!您应该允许在 Jenkins 上使用的 IAM 角色执行 cloudformation:List* 操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多