私はJenkinsを使って詩を使ったPythonパッケージをビルドしています。Jenkinsfileに詩をインストールするためのステージコマンドは次のとおりです。
stage('poetry'){
steps {
sh 'curl -sSL https://install.python-poetry.org | python3'
sh 'export PATH="$HOME/.local/bin:$PATH"'
sh 'poetry --version'
}
}
しかし、ビルド中にこの出力エラーが発生します
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
何が問題なのでしょうか?
答え1
各sh
コマンドは独自のシェル セッションを開始します。そのため、あるセッションで設定した変数は、別のセッションでは使用できません。代わりに、同じセッションで変数を設定し、コマンドを実行します。
sh 'export PATH="$HOME/.local/bin:$PATH"; poetry --version'