バージョン2.32.2のパイプラインでJenkinsfileを使用しています。Jenkinsパイプラインshがシェルコマンドのパイプを尊重していないようです
さまざまな理由から、pomからバージョン文字列を抽出したいと考えています。私はmavenのヘルププラグインを追加して評価する必要はないと思っていました。
パイプを使用してpomから取り出して、実行ファイルのjenkinsワークスペースのコマンドラインで動作させるために、すぐに少しsed式が出てきました。
$ sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g' 1.0.0-SNAPSHOT
それはおそらく、最適化することができますが、私はパイプラインがパイプで連結されたSHコマンドに失敗しているように見える理由を理解したいです。私はいろいろな文字列形式で演奏しており、現在はドルのスラッシュ文字列を使用しています。コマンド文字列を簡単に出力可能にするために、次のように
パイプラインステップが見えます:私はそれがにパイプされたコマンドを分離しているように見える次のコンソール出力を得るジェンキンスパイプラインで実行
script {
def ver_script = $/sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'/$
echo "${ver_script}"
POM_VERSION = sh(script: "${ver_script}", returnStdout: true)
echo "${POM_VERSION}"
}
別のコマンド:
[Pipeline] script
[Pipeline] {
[Pipeline] echo
sed -n '/<version>/,/<version/p' pom.xml | head -1 | sed 's/[[:blank:]]*<\/*version>//g'
[Pipeline] sh
[FRA-198-versioned-artifacts-44SD6DBQOGOI54UEF7NYE4ECARE7RMF7VQYXDPBVFOHS5CMSTFLA] Running shell script
+ sed -n /<version>/,/<version/p pom.xml
+ head -1
+ sed s/[[:blank:]]*<\/*version>//g
sed: couldn't write 89 items to stdout: Broken pipe
[Pipeline] }
[Pipeline] // script
そこに適切jenkinsfileにパイプされたコマンドを使用する方法上の任意のガイダンス?
このようなことはもう必要ありません。 'readMavenPom'ステップを使って私の答えを見てください。 – StephenKing
素晴らしい!私はすぐにそれを使用します。おかげで – mattvbv