使用Jenkins 2 Pipeline插件,可以快速了解管道阶段和步骤状态,包括记录输出。
但是,如果您使用" Shell脚本" (sh)步骤,似乎不是一种用有用的名称标记该脚本的方法,因此显示只显示了一个很长的列表" Shell Script" (如下图所示)。
如何指定有用的名称,或者如何使用其他步骤来实现相同的效果?
答案 0 :(得分:27)
2019年2月更新:
根据gertvdijk's answer below,现在可以从{2.2}开始assign an optional label to the sh step,对于那些还无法升级的人,也有一种解决方法。请查看his answer以获取详细信息和评论!
以前的版本(悬停以查看):
据我所知,目前还不可能。在詹金斯 跟踪器,有一个Name or alias Shell Script Step (sh)问题 这与你的情况类似:
但是,它作为最近修复过的旧版Allow stage to operate as a labelled block的副本而被关闭 似乎包含在v2.2 of the pipeline-stage-step-plugin (see changelog)中。sh
步骤在管道中添加“Shell脚本”步骤。然而, 可能有多个这样的步骤,包括各种步骤 插件(例如,Docker),这使得难以区分这些步骤。 我们应该在sh中添加一个可选参数来指定名称或 然后出现在管道步骤中的别名。 例如,以下可以是npm的步骤,其将显示为“Shell” 脚本:npm“在管道视图中。
sh cmd:"npm install", name: "npm"
似乎现在可以嵌套阶段,它们将出现在 查看表,但我认为这不是你想要的。
答案 1 :(得分:5)
"Pipeline Nodes and Processes Plugin"的2.28+版本现在通过sh
step获得了JENKINS-55410的label
选项:
标签(可选)
要在管道步骤视图中显示的标签以及该步骤而不是步骤类型的蓝色海洋详细信息。因此,该视图更具意义且针对特定领域而不是技术。
- 类型:字符串
例如:
sh script: "echo foo", label: "my step"
如果您仍然无法升级,则另一种选择是使用Labelled Pipeline Steps plugin。
答案 2 :(得分:3)
sh "echo foo", label: "my step"
对我不起作用
最糟糕的是:
sh script: "echo foo", label: "my step"
答案 3 :(得分:2)
嗯,绝望的时候要求采取绝望的措施。如果您可以使用Blue Ocean,则可以使用单个执行行的并行步骤。
parallel(
"This is my step name" : {
sh 'env'
}
)
答案 4 :(得分:1)
尝试一下,这是一个很好的解决方法
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} "))
}
}
答案 5 :(得分:0)
我也在尝试相同的事情,但在不同的环境中,我的团队不希望在日志UI上有多个日志窗口,所以我尝试在一行中使用多个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管道脚本。
但是如果我使用共享库来扩展管道和相同的策略,那么它就无法工作,或者像往常一样为UI日志创建多个窗口。
答案 6 :(得分:0)
这并不完美,但是我通常认为添加一个回显步骤足以描述以下bat或sh步骤要完成的工作。以前从未见过的人应该能够很快找到答案。
echo "Testing with Ping"
bat "ping www.stackoverflow.com"
echo "Getting IPs"
bat "nslookup www.stackoverflow.com"
答案 7 :(得分:0)
遵循出色的答案,我创建了一个小脚本包装程序,将sh步骤封装在try / finally块中。
基本用法:
a = {'colA' : [123,124,112,165],'colB' :['alpha','beta','gamma','delta']}
file1 = pd.DataFrame(data = a)
file1
colA colB
123 alpha
124 beta
112 gamma
165 delta
b = {'colY' : [123,124,112,165],'colS' :['alpha','beta','gamma','delta'], 'colX' :[323,326,378,399] }
file2 = pd.DataFrame(data = b)
file2
colY colS colX
123 alpha 323
124 beta 326
112 gamma 378
165 delta 399
将显示“说明#1”,而不是通用文字。
完整源代码并在此处安装说明 https://github.com/ael-computas/jenkins-script-wrapper
可以轻松地作为库安装在您的jenkins服务器上。