使用Jenkins管道进行S3复制工件

tre*_*rey 2 amazon-s3 jenkins jenkins-plugins

我正在尝试在Jenkins 2.0管道中使用带有Jenkinsfile 的S3插件.不幸的是,管道语法助手似乎不是很完整.

我得到以下代码:

step([$class: 'S3CopyArtifact', buildSelector: [$class: 'StatusBuildSelector', stable: true], excludeFilter: '', filter: 'deploy/*.zip', flatten: false, optional: false, projectName: 'my/project/with/folders', target: '/my/directory/'])
Run Code Online (Sandbox Code Playgroud)

当然这还不够,因为缺少凭据和存储桶.另外,这个插件似乎与Folders插件的行为不正确.

有人有这方面的提示吗?

小智 7

我同意你的原始声明,因为脚本生成太伤心了.即使您S3BucketPublisher选择了它,它也不足以继续下去.请参阅下面的我的代码段.它假定您已在系统配置中创建了配置文件.

stage("publish to s3") {
    step([
        $class: 'S3BucketPublisher',
        entries: [[
            sourceFile: 'mybinaryFile',
            bucket: 'GoBinaries',
            selectedRegion: 'eu-west-1',
            noUploadOnFailure: true,
            managedArtifacts: true,
            flatten: true,
            showDirectlyInBrowser: true,
            keepForever: true,
        ]],
        profileName: 'myprofile',
        dontWaitForConcurrentBuildCompletion: false, 
    ])
}
Run Code Online (Sandbox Code Playgroud)


小智 5

对于更简单的用例,现在在Pipeline AWS Plugin中支持此功能,如下所示: s3Upload(file:'someFolder', bucket:'my-bucket', path:'/path/to/targetFolder/')

djsd123的示例非常适合更高级的用例。如果您还想向您的对象添加元数据标签,则可以添加userMetaData数组:

    profileName: 'myprofile',
    dontWaitForConcurrentBuildCompletion: false, 
    userMetadata: [[ key: 'git_branch', value: "${env.BRANCH_NAME}"],
                   [ key: 'build_number', value: "${env.BUILD_NUMBER}"]
    ],
Run Code Online (Sandbox Code Playgroud)