2016-09-15 48 views
2

我試圖在Jenkins文件中使用Jenkins 2.0管道中的S3 plugin。不幸的是,管道語法助手似乎並不完整。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/']) 

關當然這是不夠的,因爲憑證和水桶丟失。另外,這個插件似乎不能正確處理文件夾插件。

有沒有人對此有暗示?

+1

其實管線語法助手是完整的,但我有機器人S3CopyArtifact和S3BucketPublisher。要使用的是* S3BucketPublisher *! – trey

回答

6

我同意你的原始陳述,因爲腳本代是哦所以悲傷。即使您選擇了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, 
    ]) 
} 
+0

用相同的方法上傳整個文件夾是否可行? –

+0

我試圖做同樣的事情,但我仍然有錯誤。我會告訴你 –

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}"] 
    ], 
+0

我使用帶'sh'塊的AWS CLI,但這在哲學中顯然是一種母性,我會逐步切換到這個插件。謝謝 ! – trey

+0

有沒有辦法讓這樣的文件具有public-read acl? –