问题标签 [jenkins-job-dsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
487 浏览

jenkins - job dsl - 使用灵活发布插件的声纳

我正在使用作业 dsl 插件来生成詹金斯作业。我在作业 dsl 插件的声纳实现中遇到了一些问题。我正在使用灵活发布插件来提供运行声纳的条件;即,如果我们在工作区中找到 pom.xml,则运行声纳。问题是我想设置声纳变量' jobAdditionalProperties ',但作业 dsl 插件还不支持该变量。到目前为止我得到了什么:

根据文档,我尝试使用配置方法:

但这不起作用,因为 xml 使用条件与灵活的发布插件嵌套,并且 xml 不是在正确的位置生成的。XML 树看起来像这样:

任何人都知道如何解决这个问题?

0 投票
1 回答
1726 浏览

jenkins - DSL 生成的 copyArtifacts 作业示例

我正在尝试使用 DSL 来生成使用copyArtifacts. 我已经能够Copy artifact from another project使用以下内容生成基本内容:

但是我还需要能够指定Which build,Artifacts to copyTarget directory. 我不清楚我如何使用Closure copyArtifactClosure来指定这些信息?我没有找到任何例子。

0 投票
1 回答
1339 浏览

ssl - Jenkins Job-DSL:如何使用自己的 root-ca 签名证书通过 Https 接受 URL?

我想通过 HTTPS 读取 xml 流。网络服务器有一个由我们自己创建的非官方 CA 签名的证书。

我知道我需要导入 CA 证书才能使我的 Groovy Job DSL 脚本工作。

我需要在哪里导入 ca 证书,或者如何定义自己的 trustStore 以使其工作?

我之前尝试过的:

  • 使用 keytool 将 CA 证书导入 C:\Program Files (x86)\Java\jre1.8.0_40\lib\security\cacert
  • 使用 keytool 将 CA 证书导入 C:\Program Files (x86)\jenkins\jre\lib\security\cacert

当我在将 CA 证书导入 cacert trustStore 后尝试与 groovyConsole 连接时,一切正常,但在 Jenkins 中没有。

所以我尝试在我的 Job DSL 脚本中设置一个 trustStore,但没有成功。仍然收到证书链错误异常:

控制台片段:

更新:

我还使用 Jenkins JRE 启动了 groovyConsole。它也在工作。因此 cacerts 密钥库包含有效的 ca 证书。但是为什么它在 Jenkins 脚本控制台或 Job DSL 插件中不起作用。这里有什么问题?

0 投票
0 回答
75 浏览

jenkins-job-dsl - 使用作业 dsl 为每个测试套件创建作业

我正在使用 TestNG、Jenkins 和 job-dsl-plugin。

我的项目中有很多用于测试的 TestNG XML 测试套件。我想要的是一个脚本,它将遍历这些套件中的每一个并为它们创建一个工作。

我的测试套件格式如下:

因此,作业 DSL 脚本必须递归地遍历我的 testsuites 目录中的每个测试,获取并解析这些文件的 XML,然后为每个文件创建一个作业。

  1. 访问回购
  2. 递归读取 testsuites 目录中的每个 XML 文件
    1. 获取套件的名称 -> Jenkins 工作的名称
    2. 获取此测试套件的路径 ->-Dtestngfile=<path>
  3. 为这些中的每一个创建一个工作
0 投票
3 回答
5328 浏览

groovy - Jenkins DSL 插件:如何在现有的詹金斯视图中创建工作?

我发现了以下关于创建工作和使用 DSL 插件添加到新创建的视图的问题。

将作业添加到新创建的视图。

如何使用 DSL 插件将创建的作业添加到现有视图?我在文档中找不到任何提示。也许我看不到解决方案太明显了?

虽然我读过,如果视图已经存在,创建视图将导致重新创建。在这种观点下,对现有项目意味着什么?

谢谢你的帮助。

0 投票
1 回答
3698 浏览

jenkins - 通过种子作业创建后立即启动 jenkins 作业

我正在使用 Jenkins DSL 插件为 git 项目的所有分支自动创建构建作业。DSL 插件由 web 挂钩触发,以便在创建新分支后立即运行。为每个分支生成的构建作业也被配置为由 web 挂钩触发。

当前设置的问题是,构建只会在第二次提交后执行。第一次提交将触发 Jenkins DSL 插件以创建相应的 Jenkins 作业,然后第二次提交将触发新创建的作业。

有什么方法可以在 DSL 插件创建后立即启动 Jenkins 作业?我目前唯一能想到的就是添加一个额外的构建调度,但我宁愿只使用网络挂钩来防止不必要的轮询。

0 投票
2 回答
3802 浏览

jenkins-job-dsl - 如何将“触发器远程构建”的 authToken 添加到作业的 config.xml

我想为 Jenkins 作业启用“远程构建触发器”选项,并定义了身份验证令牌。我试过这个:

根据http://job-dsl.herokuapp.com/,我最终在项目的配置 XML 的顶层有一个 authToken 行(根据需要):

但是,在运行 Job-DSL 之后,我没有得到结果 XML 中定义的 authToken,也没有在配置中启用该选项。任何想法我做错了什么?

将 Jenkins 1.609.2 与 job-dsl 1.37 一起使用。

更新:job-dsl >= 1.39 现在支持令牌设置;见https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.jobs.FreeStyleJob.authenticationToken

0 投票
1 回答
915 浏览

groovy - 从 Groovy 中的委托范围获取变量

我正在尝试编写一个 Jenkins Job DSL 脚本,并希望尽可能以声明方式/干式方式编写它。Jenkins 任务通过 MultiJob 调用其他一些任务。我的 Groovy 最初看起来像这样(所有内容都包含在一个类中,因为它在其他地方被引用):

我想抽象出包含大量重复的工作创造。我最终得到了这样奇怪的东西:

这可能完全是非惯用的 Groovy(所有这些def self = ({ owner })()东西都不适合我),根本不起作用。

基本上,我想将callingClosure's 范围内的所有变量都传递给job_config闭包,而不是将所有变量作为参数显式传递。(显式传递参数映射是可行的,但是当有很多参数时它会变得笨拙。)我该怎么做?

(PS:目前,Groovy 正在尝试将commit_a内部变量解析job_config为 from javaposse.jobdsl.dsl.helpers.step.PhaseContext,我觉得这很奇怪;我不是明确地将委托设置为内部的闭包PhaseContext吗?)

编辑:从另一个 SO question看来,我可以设置phase= delegate(默认为owner?)而不是({ owner })()并且很好;我也不是很明白,因为job它是 的属性PhaseContext,而不是它的父级(?)

0 投票
4 回答
4591 浏览

groovy - Groovy:如何从另一个闭包调用顶级范围内的闭包

我正在尝试将使用 Jenkins Job DSL 插件的代码分解为可重用的部分,我怀疑我的问题是 Groovy 通用的,而不是 Jenkins 特有的。例如,我想重用这个块的一部分:

通过将名称和描述放在实用方法中(显然我想做的不仅仅是在现实生活中)。但是,我找不到为当前范围创建闭包的正确语法。这是我认为它应该看起来的样子:

(也许有一个closure.delegate = this 某处)

但是,这不适用于关闭。它适用于方法,如下所示:https ://dzone.com/articles/groovy-closures-owner-delegate

为了说明,这里有一个测试显示了三种可能的语法组合:

我收到一个错误,即闭包不在主类中(即测试 test.groovy):在类 test@60611244 中找不到方法,名称为 myClosure

我尝试将委托更改为“this”,尝试更改查找策略等。我可能缺少一些基本的东西。

0 投票
1 回答
1804 浏览

jenkins - dsl 插件删除作业时删除工作区

我正在使用 jenkins dsl 插件为项目的所有分支生成 jenkins 作业。删除分支时,dsl 插件也会删除相应的 jenkins 作业。

然而,问题是工作空间没有与作业一起删除,因此它们最终会弄乱我的磁盘。我发现的一种解决方案是定期列出所有工作区并检查是否存在同名的詹金斯作业。

我想知道是否有更优雅的解决方案可以自动删除刚刚被 dsl 插件删除的詹金斯作业的过时工作区。