Ich verwende Jenkins, um ein Python-Paket mit Poetry zu erstellen. Hier ist der Stage-Befehl zum Installieren von Poetry in der Jenkins-Datei
stage('poetry'){
steps {
sh 'curl -sSL https://install.python-poetry.org | python3'
sh 'export PATH="$HOME/.local/bin:$PATH"'
sh 'poetry --version'
}
}
Aber ich bekomme diesen Ausgabefehler während des Builds
sh
+ curl -sSL https://install.python-poetry.org
+ python3
Retrieving Poetry metadata
The latest version (1.4.0) is already installed.
[Pipeline] sh
+ export PATH=/var/lib/jenkins/.local/bin:/var/lib/jenkins/workspace/retina3/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
+ PATH=/var/lib/jenkins/.local/bin:/var/lib/jenkins/workspace/retina3/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
[Pipeline] sh
+ poetry --version
/var/lib/jenkins/workspace/retina3@tmp/durable-deb083f7/script.sh: line 1: poetry: command not found
Was könnte falsch sein?
Antwort1
Jeder sh
Befehl startet seine eigene Shell-Sitzung. Alle Variablen, die Sie in einer Sitzung festlegen, sind daher in einer anderen Sitzung nicht verfügbar. Legen Sie stattdessen die Variable fest und führen Sie den Befehl in derselben Sitzung aus.
sh 'export PATH="$HOME/.local/bin:$PATH"; poetry --version'