Ich möchte in der Lage sein, etwas zu tun wie:
AOEU=$(echo aoeu)
und habe Jenkins eingestellt AOEU=aoeu
.
Der Abschnitt Umgebungsvariablen in Jenkins macht das nicht. Stattdessen setzt es AOEU='$(echo aoeu)'
.
Wie kann ich Jenkins dazu bringen, einen Shell-Befehl auszuwerten und die Ausgabe einer Umgebungsvariablen zuzuweisen?
Schließlich möchte ich in der Lage sein, den Executor eines Jobs einer Umgebungsvariablen zuzuweisen, die an andere Skripte übergeben oder von diesen verwendet werden kann.
Antworten:
Dies kann über das EnvInject-Plugin folgendermaßen erfolgen:
Erstellen Sie einen Build-Schritt "Shell ausführen", der ausgeführt wird:
Erstellen Sie einen Erstellungsschritt für Inject-Umgebungsvariablen und setzen Sie "Properties File Path" auf
propsfile
.Hinweis : Dieses Plugin ist (meistens) nicht mit dem Pipeline-Plugin kompatibel.
quelle
sh
auf dem Weg sind.foo
wird in dieser bestimmten Shell-Aktion exportiert, jedoch nicht in andere Aktionen.Der einfachste Weg
Sie können das EnvInject-Plugin verwenden, um Umgebungsvariablen beim Start des Builds einzufügen . Beispielsweise:
Woher weißt du, dass es funktioniert?
quelle
key=value
. In meinem Anwendungsfall generiere ich die Zeile vollständig:cat app/build.gradle | grep "def majorVersion" | python -c 'import sys,re,os; print("VERSION_NUMBER="+re.findall(r"[\d+\.]+", sys.stdin.read())[0]+os.environ["BUILD_NUMBER"])'
BUILD_DATE=date "+%Y-%m-%d-%H_%M_%S"
undBUILD_DATE=$(date "+%Y-%m-%d-%H_%M_%S")
undBUILD_DATE=`date "+%Y-%m-%d-%H_%M_%S"`
nicht für mich arbeitenIn meinem Fall musste ich die
JMETER_HOME
Umgebungsvariable hinzufügen, die über meine Ant-Build-Skripte in allen Projekten auf meinem Jenkins-Server (Linux) verfügbar sein soll, so dass meine lokale Build-Umgebung (Windows und Mac) imbuild.xml
Skript nicht beeinträchtigt wird . Das Festlegen der Umgebungsvariablen über Jenkins verwalten - System konfigurieren - Globale Eigenschaften war der einfachste und am wenigsten aufdringliche Weg, dies zu erreichen. Es sind keine Plug-Ins erforderlich.Die Umgebungsvariable ist dann in Ant verfügbar über:
Dies kann überprüft werden, indem Folgendes hinzugefügt wird:
Welches produziert:
quelle
git
/path/to/my/git
undPATH+git
/path/to/my/git
. Wenn ich jedoch versuche,git
über das a darauf zuzugreifenJenkins pipeline script
, erhalte ich :/bin/sh: git: command not found
.Mit dem Environment Injector Plugin können Sie Umgebungsvariablen in Jenkins auf Job- und Knotenebene festlegen. Im Folgenden werde ich zeigen, wie sie auf Jobebene eingestellt werden.
Manage Jenkins > Manage Plugins
und installieren Sie das Plugin.Configure
JobbildschirmAdd build step
imBuild
Abschnitt und wählen SieInject environment variables
Wenn Sie abhängig von bestimmten Bedingungen (z. B. Jobparametern) eine neue Umgebungsvariable definieren müssen, können Sie auf diese Antwort verweisen .
quelle
Sie können so etwas versuchen
quelle
Jenkinsfile
Pipeline (kein Job)! Das ist großartig, danke dafür!Das EnvInject Plugin aka ( Environment Injector Plugin ) bietet Ihnen verschiedene Optionen zum Festlegen von Umgebungsvariablen aus der Jenkins-Konfiguration.
Durch Auswahl erhalten
Inject environment variables to the build process
Sie:Properties File Path
Properties Content
Script File Path
Script Content
und schließlich
Evaluated Groovy script
.Evaluated Groovy script
gibt Ihnen die Möglichkeit, Umgebungsvariablen basierend auf dem Ergebnis des ausgeführten Befehls festzulegen :execute
Methode:Groovy
Code:(Weitere Details zu den einzelnen Methoden finden Sie in der integrierten Hilfe (?).)
Leider können Sie nicht das Gleiche tun,
Script Content
wie es heißt:quelle
Es gibt das Build Env Propagator Plugin, mit dem Sie neue Build-Umgebungsvariablen hinzufügen können, z
quelle
In meinem Fall hatte ich Umgebungsvariablen mit der folgenden Option konfiguriert und es funktionierte:
quelle
Normalerweise können Sie Umgebungsvariablen in den globalen Eigenschaften in System konfigurieren konfigurieren .
Bei dynamischen Variablen mit Shell-Ersetzung möchten Sie möglicherweise eine Skriptdatei im Jenkins HOME-Verzeichnis erstellen und während des Builds ausführen. Der SSH-Zugriff ist erforderlich. Beispielsweise.
sudo su - jenkins
odersudo su - jenkins -s /bin/bash
Erstellen Sie ein Shell-Skript, z.
Rufen Sie in Jenkins Build ( Execute Shell ) das Skript und seine Variablen vor allem anderen auf, z
quelle
sudo su - jenkins
, nochecho $USER
gibt mirroot
.su -l
Parameter, andernfalls stellen Sie eine separate Frage.Hinweis: Der Wert der Umgebungsvariablen wird als Zeichenfolge geliefert. Wenn Sie es als Booleschen Wert verwenden möchten, müssen Sie es mit Boolean.parse (env.DISABLE_SQL) analysieren.
quelle
Probieren Sie das Environment Script Plugin ( GitHub ) aus, das EnvInject sehr ähnlich ist . Sie können vor dem Build (nach dem SCM-Checkout) ein Skript ausführen, das Umgebungsvariablen dafür generiert. Z.B
und in Ihrem Skript können Sie zB
FOO=bar
auf die Standardausgabe drucken , um diese Variable festzulegen.Beispiel zum Anhängen an eine vorhandene
PATH
Variable im Stil:Sie können also alles tun, was Sie im Skript benötigen - entweder
cat
eine Datei oder ein Skript in einer anderen Sprache aus dem Quellbaum Ihres Projekts usw. ausführen.quelle
Sie können eine der folgenden Möglichkeiten verwenden:
Jenkins verwalten -> System konfigurieren -> Globale Eigenschaften -> Umgebungsvariablen -> Hinzufügen
quelle
Aus irgendeinem Grund
sudo su - jenkins
wird ich nicht beimjenkins
Benutzer angemeldet, sondern habe einen anderen Ansatz gewählt.Es ist mir gelungen, die globalen env-Variablen mithilfe von Jenkins
config.xml
unter/var/lib/jenkins/config.xml
(installiert unter Linux / RHEL) festzulegen - ohne externe Plugins zu verwenden.Ich musste einfach aufhören, Jenkins hinzuzufügen, dann hinzuzufügen
globalNodeProperties
und dann neu zu starten.Beispiel, ich bin Definition von Variablen
APPLICATION_ENVIRONMENT
undSPRING_PROFILES_ACTIVE
zucontinious_integration
unten,quelle
Wir verwenden eine groovige Jobdatei:
quelle