Datei mit Umgebungsvariablen laden Jenkins Pipeline

8

Ich mache eine einfache Pipeline:

Erstellen - & gt; Inszenierung - & gt; Produktion

Ich brauche verschiedene Umgebungsvariablen für die Bereitstellung und Produktion, also versuche ich Quelle Variablen.

%Vor%

Aber es gibt nicht gefunden

zurück %Vor%

Der Pfad ist richtig, weil ich den gleichen Befehl ausführe, wenn ich über ssh logge, und es funktioniert gut.

Hier ist die Pipeline-Idee:

%Vor%

Was soll ich tun?

  • Ich habe darüber nachgedacht, keine Pipeline zu verwenden (aber ich kann meine Jenkins-Datei nicht verwenden).
  • Oder machen Sie verschiedene Jobs für Inszenierung und Produktion, mit EnvInject Plugin (aber ich verliere meine Bühnenansicht)
  • Oder make withEnv (aber der Code wird groß, weil ich heute mit 12 env vars arbeite)
Rafael 26.08.2016, 17:01
quelle

2 Antworten

13

Eine Möglichkeit zum Laden von Umgebungsvariablen aus einer Datei ist das Laden einer Groovy-Datei.

Zum Beispiel:

  1. Nehmen wir an, Sie haben eine groovige Datei in '$ JENKINS_HOME / .envvars' namens 'stacktest-staging.groovy'.
  2. Innerhalb dieser Datei definieren Sie 2 Umgebungsvariablen, die Sie laden möchten

    %Vor%
  3. Sie können das dann mit

    laden %Vor%
  4. Dann können Sie sie in nachfolgenden Echo / Shell-Schritten verwenden.

Hier ist zum Beispiel ein kurzes Pipelineskript:

%Vor%     
Daniel Omoto 27.08.2016, 07:10
quelle
7

Von den Kommentaren zur akzeptierten Antwort

Verwenden Sie nicht das globale 'env', sondern verwenden Sie das Konstrukt 'withEnv', zB: Problem Nr. 9: Legen Sie in den Top-10-Best Practices keine env vars mit globalem env fest jenkins pipeline plugin

Im folgenden Beispiel: VAR1 ist eine einfache Java-Zeichenfolge (keine groovige Variablenerweiterung), VAR2 ist eine groovige Zeichenfolge (also die Variable 'someGroovyVar' wird erweitert).

Das übergebene Skript ist eine einfache Java-Zeichenfolge, daher werden $ VAR1 und $ VAR2 wörtlich an die Shell übergeben, und die Echos greifen auf die Umgebungsvariablen VAR1 und VAR2 zu.

%Vor%

Für Secrets / Passwörter können Sie Credentials Binding Plugin

verwenden

Beispiel:

HINWEIS: CREDENTIALS_ID1 ist ein registrierter Benutzername / Passwort für die Jenkins-Einstellungen.

%Vor%

Die jenkisn-Konsolenprotokollausgabe blendet die echten Werte aus:

%Vor%

Jenkins und Anmeldeinformationen ist ein großes Problem, wahrscheinlich zu sehen: Anmeldeinformationen Plugin

Der Vollständigkeit halber: Die meiste Zeit benötigen wir die Secrets in Umgebungsvariablen, da wir sie aus Shell-Skripten verwenden. Daher kombinieren wir die withCredentials und withEnv wie folgt:

%Vor%     
Thomas Kettenbach 09.06.2017 09:09
quelle