
Gibt es eine Möglichkeit, nicht vertrauliche Daten in Jenkins im Rahmen einer Build-Konfiguration zu speichern, sodass sie von einem Pipeline-Skript gelesen werden können?
Wir migrieren auf einen neuen Octopus Deploy-Server und unsere Jenkins-Datei sieht folgendermaßen aus:
pipeline {
environment {
OCTOPUS_CLI_SERVER = "https://octopus.example.com"
OCTOPUS_CLI_API_KEY = credentials("Octopus_Deploy_ApiKey")
}
// ...
}
Ich kann den API-Schlüssel zentral über den Jenkins Credential Manager aktualisieren, muss ihn aber OCTOPUS_CLI_SERVER
in jedem Zweig bearbeiten und die Änderung bestätigen, da die URL fest codiert ist. Während ich dies ändere, frage ich mich, ob es einen besseren Weg gibt, als einfach einen neuen Wert fest zu codieren.
ICHkönnteSpeichern Sie die Octopus-Server-URL im Anmeldeinformationsmanager und greifen Sie auf dieselbe Weise darauf zu. Dann wird ihr Wert jedoch aus den Protokollen entfernt, und das könnte ärgerlich sein. Im Idealfall könnte das, wonach ich suche, für mehrere Projekte einen unterschiedlichen Wert haben. Beispielsweise könnten sowohl Projekt A als auch Projekt B eine Variable mit dem Namen „PUBLIC_DOMAIN“ lesen, aber eines würde „a.example.com“ und das andere „b.example.com“ erhalten.
Ich erwähne Octopus Deploy, weil dies zufällig die Änderung ist, die wir vornehmen, aber diese Frage könnte für alle Daten gelten, auf die von einer Jenkins-Pipeline zugegriffen wird, sie ist nicht spezifisch für Octopus Deploy.
Antwort1
Es gibt nahezu unbegrenzte Möglichkeiten, dies zu tun. Hier sind drei, die mir einfallen:
Sie könnten einGemeinsam genutzte Jenkins Pipeline-Bibliothekum Konfigurationswerte an einem zentralen Ort zu speichern.
Sie können den Wert in einer Remote-Datei oder einem Remote-Repository speichern und Ihre Pipeline den Wert aus der Remote-Datei oder einer Datei im Repository einlesen lassen.
Sie könnten die Pipeline den Wert über die HTTP-REST-API von einem anderen Server abrufen lassen.