web-dev-qa-db-ja.com

Jenkins Pipeline shの表示名/ラベル

Jenkins 2 Pipelineプラグインには、出力のロギングなど、パイプラインステージとステップのステータスの概要をすばやく確認できる便利な機能があります。

ただし、「シェルスクリプト」(sh)ステップを使用する場合、そのスクリプトに便利な名前を付ける方法がないようです。そのため、ディスプレイには「シェルスクリプト」の長いリストが表示されます(下の画像)。

どうすれば便利な名前を割り当てることができますか、または同じ効果を達成するために他の手順を使用するにはどうすればよいですか?

enter image description here

55
goofballLogic

2019年2月更新

gertvdijkの答え によると、v2.28から shステップにオプションのラベルを割り当てる が可能になり、まだアップグレードできない人のために、回避策もあります。詳細とコメントについては、 彼の答え を確認してください!


前のバージョン(ホバーして表示):

私の知る限り、それは現在不可能です。 Jenkinsトラッカーには、状況に似た 名前またはエイリアスシェルスクリプトステップ(sh) の問題があります。

shステップは、パイプラインに「シェルスクリプト」ステップを追加します。ただし、さまざまなプラグイン(例:Docker)からのステップを含む、そのようなステップが複数存在する可能性があり、ステップを区別するのが難しくなります。パイプラインステップに表示される名前またはエイリアスを指定するには、shにオプションのパラメーターを追加する必要があります。たとえば、パイプラインビューで「シェルスクリプト:npm」と表示されるnpmの手順は次のとおりです。

sh cmd:"npm install", name: "npm"
ただし、古い ラベル付きブロックとして動作するステージを許可 の複製として閉鎖されました。これは最近修正され、 v2.2のv2.2 pipeline-stage-step-plugin(changelogを参照)

ステージをネストできるようになり、ビューテーブルに表示されるようになりましたが、探しているものとは思いません。
30
Morfic

「パイプラインノードおよびプロセスプラグイン」 のバージョン2.28+は、 labelステップのshオプションを取得しました。 現在 JENKINS-55410

ラベル(オプション)

パイプラインのステップビューに表示されるラベルと、ステップタイプではなくステップの青い海の詳細。したがって、ビューは技術的ではなく、より意味があり、ドメイン固有です。

  • タイプ:文字列

例えば。:

sh script: "echo foo", label: "my step"

まだアップグレードできない場合、別のオプションは Labelled Pipeline Stepsプラグインを使用することです

9
gertvdijk
sh "echo foo", label: "my step"

私にはうまくいかない、

それは次のとおりです。

sh script: "echo foo", label: "my step"

https://stackoverflow.com/a/54787322/6847446

3
Nils

まあ、絶望的な時代は必死の手段を必要とします。 Blue Oceanを使用できる場合は、単一の実行ラインで並列ステップを使用できます。

        parallel(
            "This is my step name" : {
                sh 'env'
            }
        )
2
whitediver

これを試してください、良い回避策

import org.jenkinsci.plugins.workflow.cps.CpsThread
import org.jenkinsci.plugins.workflow.actions.LabelAction


    def test() {
    def xyz = "Prints PWD"
    try {
        sh script: 'pwd'
    }
    finally {
        CpsThread.current().head.get().addAction(new LabelAction("Shell script ${xyz} "))
    }
}
1
sandy

私も同じことを試みていましたが、異なるコンテキストで、私のチームはログUI上に複数のshログウィンドウが必要ないので、1行で複数のUNIXコマンドを使用しようとしましたjenkinsPipeline.sh "echo \"PATH: $PATH\";Java -version;echo PROJ DIR = $projectDirectory;env > env.txt;cat env.txt;ls && cd $projectDirectory && gradle --refresh-dependencies clean assemble"そして、それはJenkinsのジョブ内でJenkinsパイプラインスクリプトで機能しました。しかし、パイプラインと同じ戦略を拡張するために共有ライブラリを使用する場合、それは機能していなかったか、shログインUIの通常のように複数のウィンドウを作成していませんでした.

0
ARUN007

砂浜のすばらしい答えに続いて、shブロックをtry/finallyブロックにカプセル化する小さなスクリプトラッパーを作成しました。

基本的な使用法:

wrapper.script script: 'echo the invisible script', returnStdout: true, stepName: "description #1"

汎用テキストの代わりに「説明#1」を表示します。

完全なソースコードとインストール手順はこちら https://github.com/ael-computas/jenkins-script-wrapper

Jenkinsサーバーにライブラリとして簡単にインストールできます。

0
Anders Elton

それは完全ではありませんが、通常、次のbatまたはshステップが達成しようとしていることを説明するエコーステップを追加するのに適切であると思います。これまでに見たことがない人は、すぐに理解できるはずです。

echo "Testing with Ping"
bat "ping www.stackoverflow.com"
echo "Getting IPs"
bat "nslookup www.stackoverflow.com"
0
Randall Hood