我们可以使用Jenkins文件中的s3Upload
将多个文件(不是整个文件夹)上传到S3吗?
我尝试使用*.rpm
函数将根目录中的所有rpm文件(s3Upload
)上传到S3。
答案 0 :(得分:4)
findFiles解决了这个问题。以下是用于此目的的片段。
files = findFiles(glob: '*.rpm')
files.each {
println "RPM: ${it}"
withAWS(credentials: '****************'){
s3Upload(file:"${it}", bucket:'rpm-repo', path:"${bucket_path}")
}
}
答案 1 :(得分:1)
您可以在一行中使用以下命令上传所有文件。
s3Upload(bucket:"my-bucket", path:'path/to/targetFolder/', includePathPattern:'**/*.svg', workingDir:'dist')
进一步解释,您可以根据以下两种可能性创建自己的过滤;
1.包括某个扩展名的所有文件。
s3Upload(bucket:"my-bucket", path:'path/to/targetFolder/', includePathPattern:'**/*.svg', workingDir:'dist')
2.包括除某些文件扩展名之外的所有文件。
s3Upload(bucket:"my-bucket", path:'path/to/targetFolder/', includePathPattern:'**/*', workingDir:'dist', excludePathPattern:'**/*.svg')
参考:https://github.com/jenkinsci/pipeline-aws-plugin(在s3Upload下检查)
答案 2 :(得分:0)
请参阅以下链接AWS s3 documentation。在此,请参阅'使用排除和包含过滤器
部分这是一种上传特定类型的多个文件的方法。
如果您只想上传具有特定扩展名的文件,则需要先排除所有文件,然后重新包含具有特定扩展名的文件。此命令仅上传以.jpg结尾的文件:
aws s3 cp /tmp/foo/ s3://bucket/ --recursive --exclude "*" --include "*.jpg"
这适用于AWS Command Line Interface。
答案 3 :(得分:0)
对于管道,您需要将迭代包装在script
中,例如
pipeline {
environment {
// Extract concise branch name.
BRANCH = GIT_BRANCH.substring(GIT_BRANCH.lastIndexOf('/') + 1, GIT_BRANCH.length())
}
...
post {
success {
script {
def artifacts = ['file1', 'dir2/file3']
artifacts.each {
withAWS(credentials:'my-aws-token', region:'eu-west-1') {
s3Upload(
file: "build/${it}",
bucket: 'my-artifacts',
path: 'my-repo/',
metadatas: ["repo:${env.JOB_NAME}", "branch:${env.BRANCH}", "commit:${env.GIT_COMMIT}"]
)
}
}
}
}
}
}