如何使用Jenkins DSL将作业超时设置为10分钟?
从http://job-dsl.herokuapp.com/,我可以进入
job {
name 'ci'
description 'Build and test the app.'
wrappers {
timeout()
}
}
Run Code Online (Sandbox Code Playgroud)
它会为超时生成以下块,默认值为3分钟.
<buildWrappers>
<hudson.plugins.build__timeout.BuildTimeoutWrapper>
<strategy class='hudson.plugins.build_timeout.impl.AbsoluteTimeOutStrategy'>
<timeoutMinutes>3</timeoutMinutes>
</strategy>
<operationList></operationList>
</hudson.plugins.build__timeout.BuildTimeoutWrapper>
</buildWrappers>
Run Code Online (Sandbox Code Playgroud)
我需要输入什么作为'timeoutClosure'才能生成DSL
<timeoutMinutes>10</timeoutMinutes>
Run Code Online (Sandbox Code Playgroud)
相反?
为了自动化,我想用管道作业初始化Jenkins 2.0实例.我想创建一个Groovy脚本,/usr/share/jenkins/ref/init.groovy.d/在启动时复制到该文件夹.该脚本应创建一个Jenkins 2.0 Pipeline作业,以便从SCM处理Jenkins文件.
我找不到2.0管道类的相关Javadoc或如何执行此操作的示例.
以前,使用工作DSL创建一个管道,我用了一个Groovy脚本来创建一个FreeStyleProject与ExecuteDslScripts建设者.这项工作将成为Job DSL种子工作.
一种选择是使用init脚本创建Job DSL种子作业以创建Jenkins 2.0管道.它似乎不必要地复杂.
我正在试验这个回购:https://github.com/martinmosegaard/vigilant-sniffle
groovy jenkins jenkins-job-dsl jenkins-workflow jenkins-pipeline
目前我们正在使用Jenkins CI 1.643(我相信)使用Multijob插件和Job DSL.
使用Job DSL生成作业集合,以及包含特定顺序中的所有其他作业的多工作(构建,分析,单元测试,集成测试等).
我有兴趣升级到Jenkins 2并使用Pipeline插件(以前称为Workflow插件).Pipeline插件提供了一个很好的图形表示,还提供了一些我们目前没有的更高级功能(例如需要人工交互的"暂停"操作).Blue Ocean项目似乎也非常时尚,但需要Pipeline插件.
关于迁移,我有几个问题:
我想统一 Jenkins 作业生成过程,并希望将一个文件传递给Process Job DSLs步骤。
所以我可以改变当前版本的 DSL 中包含的文件。假设我有这些文件:
..
Release.groovy
FirstPipeline.groovy
SecondPipeline.groovy
Run Code Online (Sandbox Code Playgroud)
我希望 Release.groovy 包含两个管道或可能只是单个管道。
管道文件内部没有 Class 结构,所以我不能像导入库一样导入它们。它只是这样的:
import mylibs.jobs.UsefulJob1
import mylibs.jobs.UsefulJob2
import mylibs.jobs.FirstPipeline
def firstPipeline = new FirstPipeline()
multiJob(firstPipeline.name) {
// multijob steps
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用评估,但结果证明它仅适用于简单的脚本。如果您将它与更复杂的导入库层次结构和元编程一起使用,它会失败并出现几乎无法解释的错误。
我将构建类型即 Maven Job 或 Freestyle 作业作为输入参数(使用构建参数化插件)并根据输入条件创建相应的作业
我的输入参数: "maven" (to create Maven job) ,else 阻止自由式作业。
if(params[build_type]=="maven"){
mavenJob('example') {
using(template_job)
scm {
svn {
location(svn_url)
}
}
}
}
freeStyleJob('example') {
using(template_job)
scm {
svn {
location(svn_url)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正面临以下错误消息,我对 groovy 很陌生,所以请原谅。期待任何建议。谢谢。
处理提供的 DSL 脚本错误:(脚本,第 1 行)没有这样的属性:类的参数:脚本
我想为我的Jenkins插件创建DSL扩展(使用maven构建),就像Jenkins的Docker插件示例一样.我看到groory文件Docker.groovy位于:src/main/resources/org/jenkinsci/plugins/docker/workflow/Docker.groovy
这个groovy文件是否必须在org.jenkinsci.plugin.docker.workflow中,或者我可以将它放在资源中吗?有什么不同?
另外,如果我以这种方式在groovy文件中定义我的DSL扩展,可以在管道文件中隐式调用DSL扩展吗?
我有两个独立的库(库 A 和库 B),我在 jenkins 配置上定义了它们,因此它们都可以从管道中调用。
从库 AI 想调用库 B 中定义的一些函数/方法。
我的逻辑告诉我,在我可以访问库 B 的任何方法之前,我需要导入并可能在库 A 中创建库 B 的实例。但我没有成功。我不是 Java 专家,但是非常感谢任何指导。
我正在尝试使用 jenkins job dsl 添加参数化的 cron 作业。但是,每次我尝试添加作业时都会看到以下错误:
No signature of method: javaposse.jobdsl.dsl.helpers.triggers.TriggerContext.parameterizedTimerTrigger() is applicable
for argument types: (com.manh.cp.jenkins.script$_createJob_closure3$_closure6$_closure9) values:
[com.manh.cp.jenkins.script$_createJob_closure3$_closure6$_closure9@4f7fa1a2]
Run Code Online (Sandbox Code Playgroud)
我都尝试过:
triggers {
parameterizedCron('''H 20 * * * %var=a''')
}
Run Code Online (Sandbox Code Playgroud)
和
triggers {
parameterizedTimerTrigger {
parameterizedSpecification('H 20 * * * %var=a')
}
}
Run Code Online (Sandbox Code Playgroud)
这对其他人还有效吗
参数化调度程序 v0.8 作业 dsl v1.76
我有非常相似的管道作业,唯一的区别是参数。目标是通过在 DSL 脚本中传递参数来创建这些作业,而无需任何代码重复。
我关注了这篇文章。因此,如果您在执行本文中提到的步骤后运行下面的 DSL 脚本,我的脚本就可以运行。
TL;DR 在那篇文章中添加了一个共享库,并且让 Jenkinsfile 使用该共享库。
我有一个非常相似的方法。不同之处在于我想通过 DSL 创建构建作业,并通过 DSL 上的设置更改 Jenkinsfile 的默认参数。
问题是如何传递/覆盖 Jenkinsfile 中的参数。
// BTW I'll run this code below in a loop. Open for any suggesstion
pipelineJob('AwesomeBild') {
description("A pipeline created by dsl")
definition {
cpsScm {
scm {
git {
remote { url('https://github.com/jalogut/jenkinsfile-shared-library-sample.git') }
branches('master')
// how can I pass params to the file
scriptPath('Jenkinsfile')
extensions { }
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
参数效果良好。这是 DSL 文件的最新版本。
pipelineJob('AwesomeBild') { …Run Code Online (Sandbox Code Playgroud) Jenkinsfile 中的以下代码片段使用了什么 Groovy 语言构造、语法或控制结构?
stage('Stage 1') {
steps {
// One or more steps
}
}
Run Code Online (Sandbox Code Playgroud)
即,就纯 Groovy 语言而言,Jenkinsfile 中的块是什么?
什么是“步骤”?或者stage?是调用函数吗?或定义?或者带有匿名(lambda)参数的函数调用?
这个问题本质上是另一个问题:
问题2:
Jenkinsfile 是 groovy 语言的代码片段吗?
换句话说, 1. Jenkinsfile 是否遵循纯 Groovy 的所有语法和控制结构?(也许通过隐式库 import-ed 或 #include d 在开始时默默地),
与 DSL 相反: 2. Jenkinsfile 几乎是一个 Groovy 源文件,增加了新的 Jenkins 特定结构,而这些结构最初并非在 Groovy 中,例如使用预处理的 Jenkins。
以上两者哪一个成立?
有关的: