jenkins - 如何获得詹金斯多分支管道最后一次构建版本?
问题描述
我有詹金斯管道,也使用詹金斯的共享库。在使用 bitbucket 插件执行构建时,在我的多分支管道中进行三到四个 repo 克隆。
我的问题是如何从以前的版本中获取最后的版本版本。
我已经尝试过currentBuild.changeSets方法,但是对于多个存储库克隆,它失败了。
解决方案
我也必须从以前的版本中获得 SCM 修订版。我没有找到任何 API 可以很好地得到它,所以我实现了一个解决方法。这不是很好,但至少它有效;-)
当您通过使用保存环境变量时,env.setProperty(name, value)
它将作为构建变量保存在构建元数据中。您可以随时阅读。
pipeline {
agent any
stages {
stage('Test') {
script {
env.setProperty('MY_ENV', env.BUILD_NUMBER)
def previousBuild = currentBuild.previousBuild
if (previousBuild != null) {
echo previousBuild.buildVariables['MY_ENV'] // prints env.BUILD_NUMBER - 1
}
}
}
}
}
在您的情况下,您有 4 个结帐。我不知道你是如何关闭源的,所以让我们假设你有一个cloneRepo
方法并且它设置了GIT_COMMIT
环境变量。您可以使用它们:
def previousBuild = currentBuild.previousBuild
if (previousBuild != null) {
echo previousBuild.buildVariables['GIT_COMMIT_REPO_1']
echo previousBuild.buildVariables['GIT_COMMIT_REPO_2']
echo previousBuild.buildVariables['GIT_COMMIT_REPO_3']
echo previousBuild.buildVariables['GIT_COMMIT_REPO_4']
}
cloneRepo(repo1)
env.setProperty('GIT_COMMIT_REPO_1', env.GIT_COMMIT)
cloneRepo(repo2)
env.setProperty('GIT_COMMIT_REPO_2', env.GIT_COMMIT)
cloneRepo(repo3)
env.setProperty('GIT_COMMIT_REPO_3', env.GIT_COMMIT)
cloneRepo(repo4)
env.setProperty('GIT_COMMIT_REPO_4', env.GIT_COMMIT)
如果您使用该checkout
步骤,那么您可以执行以下操作:
def commitId = checkout(scm).find { it.key == 'GIT_COMMIT' }
env.setProperty('GIT_COMMIT_REPO_1', commitId)
推荐阅读
- c++ - 我无法在不同的线程(C++)中使用 WindowsForms 方法
- android - 如何将音频文件保存到外部存储?
- excel - 用于在 Excel 中更改边框线颜色的 VBA
- c++ - C++ 中基类和派生类对象的树结构
- python - 在上一段的空格后输入文本数据
- prometheus - 为非原因的微服务静音警报
- javascript - 如何在Javascript中获取全局对象的名称和道具
- firebase - 托管中自定义域上的 Firebase 动态链接重写但如何
- javascript - 如何在单击超链接时以弹出模式打开另一个页面
- nuget - Nuget 包管理器已损坏 - '' 不是 VS2019“管理解决方案包”中的有效版本字符串