显示名称/标签

使用 Jenkins 2管道插件,有一个有用的特性可以快速概述管道阶段和步骤的状态,包括日志输出。

但是,如果您使用“ Shell Script”(sh)步骤,似乎没有一种方法可以用一个有用的名称来标记该脚本,因此显示器只显示了一个长长的“ Shell Script”列表(如下图所示)。

我如何分配一个有用的名称,或者我如何使用其他步骤来实现同样的效果?

enter image description here

31856 次浏览

2019年2月更新 :

根据 Gertvdijk 的回答如下的说法,从2.28版本开始,现在可以升级到 为 sh 步骤分配一个可选的标签了,对于那些还不能升级的用户,还有一个解决方案。请检查 他的回答的详细信息和意见!


上一版本(悬停观看) :

据我所知,目前不可能,在詹金斯家 追踪器,有一个 名称或别名 Shell 脚本步骤(sh)的问题 这和你的情况很相似:

sh步骤在管道中添加了“ Shell 脚本”步骤, 可能有多个这样的步骤,包括来自各种 插件(例如 Docker) ,这使得很难区分步骤。 我们也许应该向 sh 添加一个可选参数来指定名称或 然后出现在管道步骤中的别名。 例如,下面可以是 npm 的步骤,它将显示为“ Shell 在管道视图中的 script: npm”。

sh cmd:"npm install", name: "npm"
然而,它被关闭,作为老版本 < a href = “ https://isses.jenkins-ci.org/Brows/JENKINS-26107”rel = “ noReferrer”> Let stage to 作为一个标签区块运作,该区块最近已被修复,并 似乎包含在管道-stage-step-plugin 的 v2.2中(参见 更新日志) 。

现在似乎可以嵌套阶段,它们将出现在 观景台,但我觉得这不是你要找的。

非常时期需要非常手段。如果您可以使用蓝色海洋,您可以使用单执行线并行步骤。

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

我也在尝试同样的事情,但是在不同的上下文中,我的团队不希望在日志 UI 上使用多个 sh 日志窗口,所以我尝试在一行中使用多个 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" 在詹金斯的案子里,这招对詹金斯的流水线剧本很管用。 但是如果我使用共享库来扩展管道和相同的策略,那么它就不能正常工作,否则就会像往常一样在 UI 中为 sh 日志创建多个窗口。

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

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} "))
}
}

它并不完美,但我通常认为添加一个 echo 步骤就足够了,该步骤描述下面的 bat 或 sh 步骤试图完成的工作。没见过的人应该能很快发现。

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

根据 Sandy 的出色回答,我创建了一个小脚本包装器,它将 sh 步骤封装在 try/finally 块中。

基本用法:

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

将显示“ description # 1”而不是泛型文本。

完整的源代码和安装说明在这里 Https://github.com/ael-computas/jenkins-script-wrapper

可以很容易地作为一个库安装在您的詹金斯服务器上。

2.28 + 版本的 “管道节点和进程插件”已经获得了 sh步骤label选项,现在有了 JENKINS-55410:

标签(可选)

将在流水线步骤视图中显示的标签以及该步骤的蓝色海洋详细信息,而不是步骤类型。因此,视图更有意义,并且是特定于领域的,而不是技术性的。

  • 类型: 字符串

例如:

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

如果还不能升级,另一种选择是使用 标签管道步骤插件

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

对我没用,

它必须是:

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

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