AWS凭证如何授予詹金斯管道?


10

我的詹金斯管道中有以下配置

s3Upload( file:'ok.txt', bucket:'my-buckeck', path:'file.txt')

问题是s3Upload函数无法使用我存储在jenkins中的AWS访问密钥

我与以下代码绑定

    withAWS(profile:'Test Publisher') {
    s3Upload( file:'ok.txt', bucket:'my-buckeck', path:'file.txt')

}

s3个人资料

我在詹金斯的s3个人资料就是这样。仍在获取配置文件找不到错误。如何使用s3Upload函数将文件从jenkins上传到s3?

Answers:


8

为了能够上传到S3,您需要将凭证保存在Jenkins的环境变量中:

AWS_DEFAULT_REGION=<region of bucket>

AWS_ACCESS_KEY_ID=<aws id>

AWS_SECRET_ACCESS_KEY=<your s3 access key>

为此,只需转到Jenkins-管理Jenkins-配置系统-全局属性-环境变量


4

我认为您可能已经将S3 Publisher插件与AWS插件混淆了。

该屏幕截图来自S3 Publisher插件https://wiki.jenkins.io/display/JENKINS/S3+Plugin。有一个警告,请不要更新为最新版本。似乎管道的兼容性已损坏,出现此警告“版本0.10.11(2016年12月31日)-不更新-管道脚本的向后兼容性已损坏”。

但是,您的管道代码似乎是针对Jenkins AWS插件的。https://github.com/jenkinsci/pipeline-aws-plugin。要对该插件使用凭据,您必须执行以下操作之一:

  1. Jenkins凭证存储中的存储访问密钥,秘密密钥。
  2. 从Jenkins的AWS配置文件中读取。

这些选项记录在插件README https://github.com/jenkinsci/pipeline-aws-plugin中

Use Jenkins UsernamePassword credentials information (Username: AccessKeyId, Password: SecretAccessKey):    
withAWS(credentials:'nameOfSystemCredentials') {
    // do something
}

Use profile information from ~/.aws/config:
withAWS(profile:'myProfile') {
    // do something
}

“配置文件”是您的AWS配置文件的配置文件部分。http://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html

然后,您可以使用S3上传功能。https://github.com/jenkinsci/pipeline-aws-plugin#s3upload


我正在使用该withAWS步骤,并具有名称accesskey和ID的AWS凭证jenkins。当我按withAWS(credentials:'jenkins')原样调用时,还是withAWS(credentials:'accesskey')不断遇到此异常。在我的Jenkins mgmt控制台上,凭据看起来不错(有一条日志显示最近一次成功使用了最近一次)。我可能会缺少什么?
scorpiodawg

1
@scorpiodawg您的问题听起来与原始问题有所不同。您能否以尽可能多的信息开始一个新问题?
Mike Marseglia

我在这里问过这个问题:serverfault.com/questions/958350/…@ mike-marseglia
scorpiodawg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.