如何为 Jenkins 管道提供 aws 凭证?

如何为 Jenkins 管道提供 aws 凭证?

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

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 函数将文件从詹金斯上传到 s3?

答案1

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

AWS_DEFAULT_REGION=<region of bucket>

AWS_ACCESS_KEY_ID=<aws id>

AWS_SECRET_ACCESS_KEY=<your s3 access key>

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

答案2

我认为您可能将 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
}

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

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

相关内容