web-dev-qa-db-ja.com

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 profile

ジェンキンスの私のS3プロファイルはそのようなものです。それでもプロファイルファイルを取得してもエラーが見つかりませんでした。 s3Upload関数を使用してjenkinsからs3にファイルをアップロードするにはどうすればよいですか?

10
open source guy

S3にアップロードできるようにするには、Jenkinsの環境変数に認証情報を保存する必要があります。

AWS_DEFAULT_REGION=<region of bucket>

AWS_ACCESS_KEY_ID=<aws id>

AWS_SECRET_ACCESS_KEY=<your s3 access key>

これを行うには、Jenkins-Jenkinsの管理-システムの構成-グローバルプロパティ-環境変数に移動します

8
red.avtovo

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

4
Mike Marseglia