我知道Jenkins作业的作业号只是一个环境变量,所以如果我编写管道代码,
def jobNumber = env.BUILD_NUMBER
但是,如果我有两个作业需要job1
的内部版本号,我该怎么做呢?下面是一些sample/pesudo代码。
job1:
// Set the current build's display name to the Gradle artifact version
dir(workSpace) {
// Execute a Gradle task that gets the artifact version, e.g., 1.2.3
currentBuild.displayName = sh(script: "./gradlew printVersion",
returnStdout: true).trim()
}
因此,如果你查看job1
的页面,左窗格将包含它构建的各种Gradle版本,而不是典型的#BUILD_NUMBER
。
2.1.1
2.1.0
1.2.3
1.1.0
现在,我希望job2
解析job1
的构建,以获取与版本1.2.3
关联的构建号。我怎么能这么做呢?谢谢.
2条答案
按热度按时间8iwquhpp1#
虽然@chris的代码可以完成这项工作,但可以使用以下缩短的语法以更Groovy的方式实现构建:
如果您不确定版本是否存在,可以使用以下命令:
需要注意的是,
find
方法将返回第一个匹配条件的选项,在这种情况下,它是具有匹配Gradle版本的最新构建。如果你需要的东西不同于最新的匹配版本,你可以使用
findAll
方法来获取所有匹配的构建,然后根据所需的逻辑选择相关的构建。i86rm4rw2#
是的
job1
执行构建并显示Gradle工件版本。每个构建都存储一组构建构件,这些构件对于该构建是唯一的。当job2
运行时,它会向用户显示job1
构建的版本列表。根据用户的选择,job2
部署job1
构建的归档工件集。因此,当它运行时,我希望它能够读取job1
的归档工件,特别是基于构建号的工件。我在我们的Jenkins设置中找到了一个现有的工作,它做了类似的事情。我把它修改成我想做的。