Jenkins Pipeline sh显示名称/标签

问题描述 投票:49回答:8

使用Jenkins 2 Pipeline插件,有一个有用的功能,可以快速浏览管道阶段和步骤状态,包括记录输出。

但是,如果您使用“Shell脚本”(sh)步骤,似乎没有办法用有用的名称标记该脚本,因此显示只显示一个长的“Shell脚本”列表(显示在图片如下)。

如何指定有用的名称,或者如何使用其他步骤来实现相同的效果?

enter image description here

jenkins jenkins-pipeline continuous-delivery jenkins-blueocean
8个回答
29
投票

2019年2月更新:

根据gertvdijk's answer below的说法,现在有可能从q2.28开始assign an optional label to the sh step,对于那些还无法升级的人来说,还有一个解决方法。请查看his answer了解详情和评论!


以前的版本(悬停看看):

据我所知,目前还不可能。在Jenkins跟踪器中,有一个类似于你的情况的Name or alias Shell Script Step (sh)问题:

The sh step adds a "Shell Script" step in the Pipeline. However, there could be multiple such steps including steps from various plugins (e.g., Docker), which makes it hard to distinguish the steps. We should perhaps add an optional parameter to sh to specify a name or alias which would then appear in the pipeline steps. e.g., the following can be the step for npm which would show as "Shell script: npm" in the pipeline view.

sh cmd:"npm install", name: "npm"
However, it was closed as a duplicate of the older Allow stage to operate as a labelled block which has been fixed recently and seems to be included in v2.2 of the pipeline-stage-step-plugin (see changelog).

It seems that stages can now be nested and they will appear in the view table, but I don't think it's what you're looking for.

8
投票

Qazxswpoi版本2.28+已经获得了"Pipeline Nodes and Processes Plugin"label选项,现在使用sh step

标签(可选)

要在管道步骤视图中显示的标签和步骤的蓝色海洋详细信息而不是步骤类型。因此,视图更有意义,更具特定领域而非技术。

  • 类型:字符串

例如:

JENKINS-55410

如果你还不能升级,另一个选择是使用sh script: "echo foo", label: "my step"


3
投票
Labelled Pipeline Steps plugin

不适合我,

肯定是:

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

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


2
投票

嗯,绝望的时候需要采取绝望的措施。如果您可以使用Blue Ocean,则可以使用单个执行行的并行步骤。

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

1
投票

试试这个,一个很好的解决方法

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

0
投票

我也在尝试相同的事情,但在不同的环境中,我的团队不希望在日志UI上有多个sh日志窗口,所以我确实尝试在一行中使用多个UNIX命令,例如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} ")) } } 它适用于Jenkins内的Jenkins管道脚本工作。但是如果我使用共享库来扩展管道和相同的策略,那么它就无法正常工作,或者像往常一样为UI日志创建多个窗口。


0
投票

它并不完美,但我通常认为添加回声步骤足以描述下一个bat或sh步骤试图完成的内容。以前从未见过的人应该能够快速搞清楚。

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"

0
投票

在沙质优秀的答案之后,我创建了一个小脚本包装器,它将sh步骤封装在try / finally块中。

基本用法:

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

将显示“描述#1”而不是通用文本。

这里有完整的源代码和安装说明wrapper.script script: 'echo the invisible script', returnStdout: true, stepName: "description #1"

可以轻松地作为jenkins服务器上的库安装。

© www.soinside.com 2019 - 2024. All rights reserved.