我正在努力打造一个Jenkins Jobs。我在这里使用Jenkins的可扩展插件。这个插件有一个指定Groovy脚本的选项。有谁能帮我写一个groovy脚本来提取bucket中的文件列表吗?我想使用Jenkins中的一个文件名作为参数。
owfi6suc1#
你可以使用我写的这个脚本,我将它用作Jenkins的**“active choice parameter”**:
def sout = new StringBuilder(), serr = new StringBuilder() def proc = 'aws s3 ls s3://bucket_name/'.execute() proc.consumeProcessOutput(sout, serr) proc.waitForOrKill(2000) def values = "$sout".split('/') def trimmedValues def parameters=[] values.each { println "${it}" } def cleanValues = "$sout".split('PRE') def last = cleanValues.last().split('2018-12-17')[0] cleanValues.each { "${it}".toString(); trimmedValues = "${it}".trim(); parameters<<trimmedValues } parameters.remove(parameters.size() - 1); parameters.add(last) parameters
字符串“2018-12-17”拆分是因为awscli在命令末尾返回日期:x1c 0d1x的数据这样我就可以使用这个参数来确定我从存储桶中取出的工件/文件夹。的
qoefvg9y2#
我在Jenkins工作中使用了Active Choice Parameter,代码如下:
def s3_path = "s3://bucket/path/to/files/" def aws_s3_ls_output = "aws s3 ls ${s3_path} --region us-east-1".execute() \ | ['awk', '{ print $NF }'].execute() //aws_s3_ls_output.waitFor() // might be needed if execution is too long def files = aws_s3_ls_output.text.tokenize().reverse() return files
字符串
的数据
dy1byipe3#
我可以使用上一个示例中列出的代码来列出S3存储桶中的内容。但是,我想使用所选的值作为传递的参数。目前它正在从我的S3存储桶中下载所有文件,并将其添加到一个名为我选择的目录中。
3条答案
按热度按时间owfi6suc1#
你可以使用我写的这个脚本,我将它用作Jenkins的**“active choice parameter”**:
字符串
“2018-12-17”拆分是因为awscli在命令末尾返回日期:
x1c 0d1x的数据
这样我就可以使用这个参数来确定我从存储桶中取出的工件/文件夹。
的
qoefvg9y2#
我在Jenkins工作中使用了Active Choice Parameter,代码如下:
字符串
的数据
dy1byipe3#
我可以使用上一个示例中列出的代码来列出S3存储桶中的内容。但是,我想使用所选的值作为传递的参数。目前它正在从我的S3存储桶中下载所有文件,并将其添加到一个名为我选择的目录中。