在Jenkins参数值中列出S3文件的Groovy脚本

lztngnrs  于 2023-08-03  发布在  Jenkins
关注(0)|答案(3)|浏览(121)

我正在努力打造一个Jenkins Jobs。我在这里使用Jenkins的可扩展插件。这个插件有一个指定Groovy脚本的选项。
有谁能帮我写一个groovy脚本来提取bucket中的文件列表吗?
我想使用Jenkins中的一个文件名作为参数。

owfi6suc

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的数据
这样我就可以使用这个参数来确定我从存储桶中取出的工件/文件夹。

qoefvg9y

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

字符串


的数据

dy1byipe

dy1byipe3#

我可以使用上一个示例中列出的代码来列出S3存储桶中的内容。但是,我想使用所选的值作为传递的参数。目前它正在从我的S3存储桶中下载所有文件,并将其添加到一个名为我选择的目录中。

相关问题