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

时间:2016-09-15 13:08:32

标签: jenkins amazon-s3 jenkins-plugins

我试图在Jenkins 2.0管道中使用Jenkins文件中的S3 plugin。不幸的是,管道语法助手似乎不是很完整。

我收到了以下代码:

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

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

有没有人对此提示?

3 个答案:

答案 0 :(得分: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, 
    ])
}

答案 1 :(得分:4)

对于更简单的用例,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}"]
    ],

答案 2 :(得分:0)

在@ djsd123答案上添加,您可以使用全局格式上传文件夹:

E/Unity   (27746): AndroidJavaException: java.lang.IllegalArgumentException: adSize
E/Unity   (27746): java.lang.IllegalArgumentException: adSize
E/Unity   (27746):  at com.facebook.ads.redexgen.X.8h.<init>(:18251)
com.facebook.ads.internal.dynamicloading.DynamicLoaderImpl.createAdViewApi(:112)
E/Unity   (27746):  at com.facebook.ads.AdView.<init>(AdView.java:107)