我需要在Jenkins中构建之后添加在构建电子邮件通知中安排的下一个构建时间.
触发器可以是" Build periodically"或" Poll SCM",或任何具有计划时间的触发器.
我知道触发器信息在config.xml文件中,例如
<triggers>
<hudson.triggers.SCMTrigger>
<spec>8 */2 * * 1-5</spec>
<ignorePostCommitHooks>false</ignorePostCommitHooks>
</hudson.triggers.SCMTrigger>
</triggers>
Run Code Online (Sandbox Code Playgroud)
我也知道如何从config.xml文件中获取自定义脚本的触发器类型和规范,并计算下一个构建时间.
我想知道Jenkins是否有API来公开这些信息.我做了搜索,但没有找到任何东西.
我意识到您可能不再需要这方面的帮助,但我只需要解决同样的问题,所以这里是一个您可以在 Jenkins 控制台中使用的脚本来输出所有触发器配置:
#!groovy
Jenkins.instance.getAllItems().each { it ->
if (!(it instanceof jenkins.triggers.SCMTriggerItem)) {
return
}
def itTrigger = (jenkins.triggers.SCMTriggerItem)it
def triggers = itTrigger.getSCMTrigger()
println("Job ${it.name}:")
triggers.each { t->
println("\t${t.getSpec()}")
println("\t${t.isIgnorePostCommitHooks()}")
}
}
Run Code Online (Sandbox Code Playgroud)
这将输出使用 SCM 配置的所有作业及其规范(有关何时运行的类似 cron 的表达式)以及是否将提交后挂钩设置为忽略。
您可以修改此脚本以获取 JSON 数据,如下所示:
#!groovy
import groovy.json.*
def result = [:]
Jenkins.instance.getAllItems().each { it ->
if (!(it instanceof jenkins.triggers.SCMTriggerItem)) {
return
}
def itTrigger = (jenkins.triggers.SCMTriggerItem)it
def triggers = itTrigger.getSCMTrigger()
triggers.each { t->
def builder = new JsonBuilder()
result[it.name] = builder {
spec "${t.getSpec()}"
ignorePostCommitHooks "${t.isIgnorePostCommitHooks()}"
}
}
}
return new JsonBuilder(result).toPrettyString()
Run Code Online (Sandbox Code Playgroud)
然后您可以使用Jenkins 脚本控制台 Web API从 HTTP 客户端获取此信息。
例如,在curl中,您可以通过将脚本保存为文本文件然后运行来完成此操作:
curl --data-urlencode "script=$(<./script.groovy)" <YOUR SERVER>/scriptText
Run Code Online (Sandbox Code Playgroud)
如果 Jenkins 使用基本身份验证,您可以使用 -u<USERNAME>:<PASSWORD>参数提供该身份验证。
最终,请求的结果将是这样的:
{
"Build Project 1": {
"spec": "H/30 * * * *",
"ignorePostCommitHooks": "false"
},
"Test Something": {
"spec": "@hourly",
"ignorePostCommitHooks": "false"
},
"Deploy ABC": {
"spec": "H/20 * * * *",
"ignorePostCommitHooks": "false"
}
}
Run Code Online (Sandbox Code Playgroud)
您应该能够定制这些示例以适合您的特定用例。看来您不需要远程访问它,而只需从工作中访问它,但我还包括了远程部分,因为它可能对其他人有用。
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |