我确实有开发团队的要求来设置构建系统,因此每个构建对于所有分支都将具有唯一的构建编号。
詹金斯使用每个分支的作业进行构建。
有一个jenkins插件可以为工作设置下一个内部版本号,但这至少有两个原因是没有用的:
如何获取内部版本号:我们使用git /
mercurial中的分支名称和修订版号进行HTTP调用。基于此,集中式服务器为我们提供了一个内部版本号。如果使用相同的参数两次调用它,您将得到相同的响应(期望的行为)。
现在,我们如何调整詹金斯使用与我们相同的内部版本号?显然,我可以使用从脚本返回的内部版本号,但是工作编号会有所不同,我怀疑詹金斯会知道我接触了脚本内部的BUILD_NUMBER变量。
主要是,我需要的是我可以运行的某种pre-job-start脚本,该脚本可以在将内部版本号分配给作业之前运行。
您可以在运行之前使用Environment Injector插件来评估Groovy脚本。我几乎有相同的要求,但是对我来说,只有job_prefix_
名称相同的工作共享唯一的相同nextBuildNumber
(换句话说,名称相同的其他工作job_prefix2_
共享不同的nextBuildNumber
)。
在本Evaluated Groovy Script
节中,请使用:
import jenkins.model.*
// Access to the Jenkins instance
jenkins_instance = jenkins.model.Jenkins.instance
// Select jobs that match.
job_name = "^job_prefix_.*"
allItems = jenkins_instance.items
chosenJobs = allItems.findAll{ job -> job.name.matches(job_name) }
// Get the max
build_number = chosenJobs.collect{ it -> it.nextBuildNumber }.max()
// Increase next build number
currentJob.nextBuildNumber = build_number + 1
// and use it.
def map = [BUILD_NUMBER: build_number]
return map
问题内容: 我大约有20个使用通用参数(用户,密码)的作业,有时密码会过期…所以我必须在所有作业上更改它,这确实很耗时(并且容易出错,我可能会忘记一个)。 我想到了: 使用一种魔术属性文件(如果存在的话)直接将诸如KEY,VALUE之类的行添加到作业参数中 在内部直接添加相同类型的KEY,VALUE对,但是在哪里?而且真的很丑…也许在其中嵌入了专用XML ? 调用一个奴隶作业,该奴隶作业将(如何?
问题内容: 我安装了from ,现在在从现有工作中升级构建时遇到了一些麻烦。这是方案: 现有一项工作每天晚上运行,运行所需的所有测试和指标; 现有一个接受参数$ {BUILD_NUMBER}并部署具有对应$ {BUILD_NUMBER} 说[Nightly Build]运行并成功构建了工件#39 现在,我可以运行传入#39作为参数的[Deploy Build] [Nightly Build]#39
我在詹金斯增加了一份新工作,我想定期安排。 在配置作业中,我选中了“定期构建”复选框,并在计划文本字段中添加了以下表达式: 15 13*** 但它不会在预定时间运行。 安排工作是正确的程序吗? 作业应在凌晨4:20运行,但未运行。
安装了插件,这样当我们签入时,执行一个构建,如果成功,则验证中的修改。如果构建失败,那么就不是。我的理解是,这是通过在中设置的工作来实现的。我们现在已经创建了一个新分支(),我想我需要克隆指向另一个分支的现有作业,以便在每次提交时执行相同的工作流和构建。有人能解释一下我是如何克隆这些工作的吗?我似乎看不到一种通过UI来完成的方法,甚至看不到一种通过UI列出作业的方法。
问题内容: 我有一个.Jar文件,它将在运行时将数据加载到数据库中。我已经计划通过詹金斯来担任这项工作。当我在詹金斯执行作业时,它将成功运行.JAR。但是,请说作业中是否存在空指针异常,并且该异常未成功完成。即便如此,詹金斯仍然说工作已经“通过”。如果作业执行过程中出现问题,如何使作业失败? 问题答案: @Corey的解决方案很好。而且,如果您不想编写JUnit测试并在Jenkins中提供支持,则
问题内容: 如何在詹金斯重命名工作?除了创建新工作并销毁旧工作之外,还有其他方法吗? 问题答案: 在我们正在运行(1.480)的版本,它只是改变的事情在菜单和击球后保存。 干杯,