小编Rus*_*sNS的帖子

从队列ID获取Jenkins作业构建ID

我成功地使用它来启动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

先感谢您.

api rest curl jenkins

6
推荐指数
2
解决办法
1万
查看次数

使用Perl删除XML节点 - 这个或那个

站在网络上其他人的伟大(对他们的道具),我跑过这个命令:

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的服务器,并且我无权安装它.

perl

2
推荐指数
1
解决办法
96
查看次数

标签 统计

api ×1

curl ×1

jenkins ×1

perl ×1

rest ×1