Wie kann man Jenkins Pipeline einen aws-Berechtigungsnachweis geben?

10

Ich habe folgende Konfiguration in meiner Jenkins-Pipeline

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

Das Problem ist, dass die Funktion s3Upload keine AWS-Zugriffsschlüssel verwendet, die ich in Jenkins gespeichert habe

Ich habe mit folgendem Code gebunden

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

}

S3-Profil

mein s3 profil in jenkins ist so. Ich erhalte immer noch eine Profildatei konnte keinen Fehler finden. Wie kann ich mit der Funktion s3Upload eine Datei von Jenkins auf S3 hochladen?

Open Source Typ
quelle

Antworten:

8

Um auf S3 hochladen zu können, müssen Sie Ihre Anmeldeinformationen in Umgebungsvariablen auf Ihrem Jenkins speichern:

AWS_DEFAULT_REGION=<region of bucket>

AWS_ACCESS_KEY_ID=<aws id>

AWS_SECRET_ACCESS_KEY=<your s3 access key>

Gehen Sie dazu einfach zu Jenkins - Jenkins verwalten - System konfigurieren - Globale Eigenschaften - Umgebungsvariablen

red.avtovo
quelle
4

Ich denke, Sie haben möglicherweise das S3 Publisher-Plugin mit dem AWS-Plugin verwechselt.

Dieser Screenshot stammt aus dem S3 Publisher-Plugin https://wiki.jenkins.io/display/JENKINS/S3+Plugin . Es wird eine Warnung angezeigt, nicht auf die neueste Version zu aktualisieren. Es sieht so aus, als ob die Kompatibilität für die Pipeline unterbrochen ist. Es gibt die Warnung "Version 0.10.11 (31. Dezember 2016) - nicht aktualisieren - Abwärtskompatibilität für Pipeline-Skripte ist fehlerhaft".

Es sieht jedoch so aus, als ob Ihr Pipeline-Code für das Jenkins AWS-Plugin bestimmt ist. https://github.com/jenkinsci/pipeline-aws-plugin . Um Anmeldeinformationen mit diesem Plugin zu verwenden, müssen Sie einen der folgenden Schritte ausführen:

  1. Speicherzugriffsschlüssel, geheimer Schlüssel im Jenkins-Anmeldeinformationsspeicher.
  2. Lesen Sie aus Jenkins AWS-Konfigurationsdatei.

Diese Optionen sind im Plugin README https://github.com/jenkinsci/pipeline-aws-plugin dokumentiert

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
}

"Profil" ist der Profilabschnitt Ihrer AWS-Konfigurationsdatei. http://docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html

Dann können Sie die S3-Upload-Funktion verwenden. https://github.com/jenkinsci/pipeline-aws-plugin#s3upload

Mike Marseglia
quelle
Ich verwende den withAWSSchritt und habe AWS-Anmeldeinformationen mit Name accesskeyund ID jenkins. Wenn ich es so withAWS(credentials:'jenkins')oder so nenne withAWS(credentials:'accesskey'), treffe ich diese Ausnahme immer wieder. Die Anmeldeinformationen sehen auf meiner Jenkins mgmt-Konsole gut aus (es gibt ein Protokoll, das besagt, dass sie zuletzt erfolgreich verwendet wurden). Was könnte ich vermissen?
Scorpiodawg
1
@scorpiodawg Ihre Frage klingt ein bisschen anders als das Original. Könnten Sie eine neue Frage mit so vielen Informationen wie möglich beginnen?
Mike Marseglia
Ich habe diese hier: serverfault.com/questions/958350/... @ mike-Marseglia
scorpiodawg