我成功地使用它来启动Jenkins工作:
curl -X POST "http://jenkins_srv:8080/job/MY_JOB/buildwithParameters?this=1&that=2" --user name:pass
我还可以使用以下方法从此作业中获取consoleText:
curl -X POST "http://jenkins_srv:8080/job/MY_JOB/lastBuild/consoleText"
但是,如果我连续运行多个作业,则无法扩展.我注意到第一个curl命令有一个返回,包括:
Location: http://jenkins_srv:8080/queue/item/123/
我假设那123
是作业队列ID.
我的问题是,如果我排队工作121
,122
,和123
背靠背,我该怎么用它来检查作业队列项目的状态122
?另外,我用什么来确定最终由作业队列项产生的实际构建ID 122
?
先感谢您.
站在网络上其他人的伟大(对他们的道具),我跑过这个命令:
perl -0 -p -i -e 's|<nodeName>.*?</nodeName>|$&=~/this/?"":$&|gse' file
Run Code Online (Sandbox Code Playgroud)
它将找到一个XML节点(在本例中为"nodeName"),查找特定字符串(在本例中为"this"),并删除整个节点.这很甜蜜.
使用此命令,文件如下所示:
<nodeName>
<subNode>those</subNode>
</nodeName>
<nodeName>
<subNode>this</subNode>
</nodeName>
<nodeName>
<subNode>that</subNode>
</nodeName>
<nodeName>
<subNode>these</subNode>
</nodeName>
Run Code Online (Sandbox Code Playgroud)
会出来看起来像这样:
<nodeName>
<subNode>those</subNode>
</nodeName>
<nodeName>
<subNode>that</subNode>
</nodeName>
<nodeName>
<subNode>these</subNode>
</nodeName>
Run Code Online (Sandbox Code Playgroud)
但是,我需要它来查找"this"或"that",如果找到,则删除整个节点.所以为此,我正在使用这个命令:
perl -0 -p -i -e 's|<nodeName>.*?</nodeName>|$&=~/this/?"":$&|gse' file;perl -0 -p -i -e 's|<nodeName>.*?</nodeName>|$&=~/that/?"":$&|gse' file
Run Code Online (Sandbox Code Playgroud)
这基本上是"两次运行命令以寻找两个不同的东西,但执行相同的操作." 我在所有这些问题中的问题是,可以简化原始perl命令以在一个命令中查找"this"或"that"吗?
我试过这个:
perl -0 -p -i -e 's|<nodeName>.*?</nodeName>|$&=~/(this|that)/?"":$&|gse' file
Run Code Online (Sandbox Code Playgroud)
但我对perl有点绿.我认为这将与此类似:
s/(dog|cat)s are (invited|welcome)/$1s are not $2/;
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.我不确定我希望能达到的目标是否可行.所以最后,我确实得到了一点点.重述一个问题:是否可以简化原始perl命令以在一个命令中查找"this"或"that"?
先感谢您.
注意:我正在处理未安装xmlstarlet的服务器,并且我无权安装它.