当前位置: 首页 > 知识库问答 >
问题:

如何使用groovy脚本获得jenkins中特定作业的所有编译号?

楚畅
2023-03-14

我正在使用主动选择插件,具有时髦的脚本,可以检索 Jenkins 中所有作业的名称。我可以写一个时髦的脚本来获取该特定作业的所有内部版本号的列表吗?

共有3个答案

宰父嘉胜
2023-03-14

我会检查REST-API(因为在那里我知道它有效):

http:///api/xml?tree=jobs[名称,构建[结果,描述,ID,数字,网址,时间戳]]

这将导致类似这样的结果:

<jobs>
    <job _class="...">
        <name>JOBNAME</name>
        <build _class="...">
            <id>66</id>
            <number>66</number>
            <result>FAILURE</result>
            <timestamp>1489717287702</timestamp>
            <url>JOB_URL</url>
        </build>
        ...
    </job>
<jobs>

因此,下面的调用结合Foreach循环应该可以做到这一点。

def text = "rest_api_url".toURL().text
def jobs = new XmlSlurper().parseText(text.toString())

否则像这样的东西也应该工作-即使我没有测试它。

import jenkins.model.*

for(item in Jenkins.instance.items) {
    if ("JOBNAME".equals(item.name)) {
        // do something with $item.builds
        // foreach item.builds -> ...
    }
}
鞠自明
2023-03-14

尝试:

def xml=new XmlSlurper().parse("http:{serverName}/Jenkins/rssLatest")
def projects = xml.entry.collect{(it.title as String).split("#")[0].trim()}
println projects

一般来说,我建议浏览你的jenkins提要以获取你想要的信息,然后寻找“rss feed” - 然后将该rss URL放入XmlSlurper中,看看你得到了什么。

我也倾向于在groovysh中研究这些东西,这使得探索对象如何工作变得非常容易。在这种情况下,在groovysh中尝试对象时,您可能还想查看原始XML。

危文乐
2023-03-14

为了使用活动选择插件获取特定作业的构建列表,可以使用以下示例。

 类似资料:
  • 我需要从Jenkins作业中获取脚本路径。 请查看下面的屏幕截图,以便更清楚地了解需求。 我已经登录谷歌,获取了一些Groovy控制台脚本,其中列出了每个作业的详细信息。 通过使用jenkins.model.Jenkins.getJobNames()方法,我能够得到Jenkins中的所有作业,但实际上需要的是获得Scriptpath值,在每个作业中提到。 哪个Jenkins类/方法可以提供这些细节

  • 我对是否可以在从属节点中使用Groovy脚本运行Jenkins作业感到困惑。我提到了一个 StackOverflow 答案 [1],它说 System Groovy 脚本作业可以在主站而不是从站中运行,并且要在从站中运行作业,它必须是 Groovy 脚本而不是 System Groovy 脚本。有人可以澄清我是否可以使用系统时髦脚本运行从属作业吗?由于我正在尝试通过Groovy脚本,因此无法访问几

  • 我有一个Jenkins部署作业,它从构建作业中复制工件。在我的部署作业中,我在Extensible Choice参数中使用了一个groovy脚本(见下文),在下拉列表中显示该构建作业的成功构建列表。我想增强groovy脚本,以便仅列出该构建作业中的成功构建。我该怎么做?

  • 我知道我可以通过Jenkins RTC插件使用scm轮询,我只是想知道是否有一个如何通过管道插件的groovy脚本做到这一点的例子? 例如: 类似于上面的内容,但不是git,而是将rtc toolkit与prod url一起使用,并指定一个流或一个工作区。。。在任何地方都找不到示例,也不确定如何通过api实现它(或者如果可能的话?)

  • 你好,詹金斯的朋友们, 我创建了一个JenkinsFreestyle项目,其中包含“执行Groovy脚本”步骤。从脚本中,我想在同一个Jenkins服务器上触发另一个参数化作业。 有人知道我该怎么做吗?

  • 问题内容: 我是Jenkins中使用的Groovy脚本的新手。我的问题是,我们如何根据作业名称和内部版本号获取作业的时间戳? 示例 :我想获取“ MyDeployJob”(JobName)的时间戳,并获取BuildNumber-105的时间戳。 我尝试使用方法方法,但无法正常工作。另外,我发现环境变量具有时间戳,但是我无法弄清楚如何使用Groovy Script获取细节。请帮助。 提前致谢。 问题