问题标签 [jenkins-declarative-pipeline]

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 投票
3 回答
9490 浏览

jenkins - 声明性管道中的文件参数

我正在开发声明性管道并希望使用文件参数来读取其内容,但它没有按预期工作

我收到以下错误

以下是基本步骤插件提到的另一个选项

它在脚本步骤中工作,例如

但是如何在声明性脚本中直接使用它,因为我们使用了其他基本步骤,如 dir??

0 投票
1 回答
392 浏览

jenkins - Jenkins Pipeline Downstream Jobs - 在特定阶段继续下一个工作

背景

我们有多个声明性管道作业,可以从主管道作业中按顺序选择和构建它们作为下游作业。这将等待每个触发的作业完成,然后再开始下一个内联作业。

每个下游作业都有一个输入阶段,它将在继续之前等待用户输入工件提升。

问题

一旦当前作业进入输入阶段,是否可以让主作业继续并开始下一个作业?即在开始下一个内联作业之前不要等待用户输入

据我所知,这里唯一的选择是等待:true/falsequietPeriod:延迟。下面的示例显示了这些选项,但都不适合我们的场景。

0 投票
1 回答
3258 浏览

docker - 在 Jenkins 声明式管道中使用 Docker for Windows

我正在使用 Jenkins 声明性管道和 Docker-for-Windows 代理通过Dockerfile.

注意:不幸的是,目前还不是使用基于 Linux 的 docker 守护程序的解决方案,因为我需要运行 Windows 二进制文件。

设置: Jenkins master 通过 Docker 在 Linux 16.04 上运行。Jenkins 构建代理是

  • Windows 10 企业版 1709 (16299.551)
  • Docker-for-Windows 17.12.0-ce

Docker 18.x 在尝试使用 Windows Containers 时让我头疼,所以我回滚到 17.x。尝试使用 Jenkins 运行并且 nohup 不在路径上时,我仍然遇到一些问题,但是通过将 Git 二进制文件添加到 Windows 搜索路径另一个参考)来解决它。我怀疑我当前的问题可能与此有关。

代码:我正在尝试初始化 aJenkinsfile并在其中运行一个简单的 hello-world-printout。

/詹金斯文件

/Dockerfile

基本上,这应该是一个简单的打印“Hello, World!”的干净图像。但它在詹金斯身上失败了!

日志输出:

0 投票
1 回答
2103 浏览

jenkins - 使用声明性 Jenkinsfile 在多分支管道上运行夜间作业

詹金斯版本 2.121.2

我设置了一个多分支管道。我正在使用声明性 Jenkinsfile。

我有一组测试需要很长时间才能运行。我希望这些对于任何有变化的分支都运行一整夜。

我尝试了一些事情,但我目前的失败尝试是:

  • 在作业 > 配置下,我启用了“抑制自动 SCM 触发”

  • 将 'Scan Multibranch Pipeline Triggers' > 'Periodically if not else run' 设置为 1 分钟(仅用于测试,我会在它工作时增加它)

在我的 Jenkinsfile(凌晨 4 点运行的示例)中,我也尝试过pollSCM()

在“扫描多分支管道日志”中,我看到以下内容,但凌晨 4 点没有作业运行(trigger()在我的 Jenkinsfile 中的时间):

请问我做错了什么?


编辑:

所以我尝试了这个设置:

将 cron 设置为每 15 分钟一次

删除了 UI 'Suppress automatic SCM triggering' 中配置下的设置

但它只是在轮询发生的那一刻开始运行(在这个测试中是每小时 16 分钟)。

我什么都不做似乎注意我的 cron 设置?

如果我在 UI 的分支作业下进入“查看配置”,它会显示我的 Jenkinsfile 中的 UI 设置。


编辑(再次!):

因此,在最后一次编辑中,它确实立即运行,然后在 cron 时间再次运行。

现在在 UI 中再次启用设置“抑制自动 SCM 触发”。

我让它工作了!我意识到的主要问题 (a) 没有应用更改我认为直到第一次运行后运行 Jenkinsfile 发生更改?(b) 我还安装了下一个执行插件,以便更好地了解它的计划。

0 投票
1 回答
994 浏览

jenkins - 如何在詹金斯的声明性管道中修改脚本块中定义的变量

我已经在我的脚本中声明了一个变量TENTATIVE_VERSION我需要使用来自执行脚本(或来自其他阶段的脚本本身)的值来定义/修改它,我该怎么做?我当前的脚本是这样的:

0 投票
0 回答
128 浏览

jenkins - Jenkins 声明性管道不正确的 svn 更改列表

我有一个自由式项目,我正试图转移到詹金斯的声明性管道项目。它使用 SVN,项目设置为轮询 SVN 存储库并使用 SCM 中的 Jenkins 文件进行配置。所有这些都正常工作。

我的问题是,每个构建的更改集还包括最后一次成功构建的所有更改的 4 个副本。最初的自由泳工作没有发生这种情况。虽然这有点烦人,但真正成为问题的是,现在所有这些更改和作者在构建失败时都会成为罪魁祸首,因此每个人都会收到电子邮件,而不仅仅是最近的更改。为每个构建列出的更改跨越数月,每个新构建都将其更改添加到完整列表中。

例如,如果我查看此项目的最新更改,我会看到 4 个 build #60 副本,其中包含一堆已经在 build #59 中的更改,然后是 4 个 build #59 副本,其中:

我该如何解决?

0 投票
1 回答
487 浏览

jenkins-declarative-pipeline - 如何在 Jenkins 声明性管道的阶段/步骤中将参数传递给 bash 命令?

我最近开始使用 Jenkins。我提供了两个参数来收集动态设置,并将在后期/步骤部分(在 bash 脚本中)使用它们。我参考了一些例子,例如

https://github.com/jenkinsci/pipeline-examples/blob/master/declarative-examples/jenkinsfile-examples/mavenDocker.groovy

我尝试直接或通过环境、多个组合、单引号、双引号等使用参数。但是从参数收集的值仍然无法成功传递给 bash 命令。我相信这是一个非常基本的要求,但我找不到合适的工作示例。

这是我的示例代码。

0 投票
1 回答
1768 浏览

jenkins - Jenkins 声明性管道添加 groovy postbuild 脚本

我有 groovy postbuild 脚本

现在我正在尝试将其转换为声明性管道语法

那么在失败选项卡中我可以添加 groovy 脚本吗?或者我必须添加阶段?我看到有 jenkins-badge-plugin 但不确定如何添加正则表达式来查找文本然后添加批处理

0 投票
1 回答
243 浏览

jenkins - Jenkins 声明式管道

我在 Jenkins 中使用声明式管道,我有 200 多个测试。我想将它们拆分为多台机器。我有一段代码必须修复,但我不知道如何修复。文档不是很好。有人可以解释一下这些代码行中发生了什么吗?

  • splitTests 是一种语言功能,但并行性?
  • $Class 'CountDrivenParallelism',他在这里创建了一个类?
  • 什么是组或此运算符 [:]
0 投票
0 回答
164 浏览

jenkins - 使用正则表达式重试詹金斯管道声明性语法

我看到有重试失败构建的选项options { retry(3) }。我使用带有正则表达式的导航器插件仅在正则表达式匹配时重试,但它不支持管道。

有没有办法只有在控制台日志或错误中匹配正则表达式时才重试,如果没有,我可以放随机时间延迟重试吗?