问题标签 [jenkinsfile]

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 投票
2 回答
3639 浏览

jenkins - Jenkinsfile:一次定义多个变量并为其赋值似乎没有实现

我在 Red Hat Linux 上使用 Jenkins 2.6。我想在我的 Jenkinsfile 中使用以下内容,但是当我尝试时,Jenkins 抱怨得很厉害。(似乎只是不喜欢 = 运算符左侧的语法。):

它似乎不喜欢多重分配,但根据这篇文章,Groovy 1.6 及更高版本显然支持它们:

http://mrhaki.blogspot.co.uk/2009/09/groovy-goodness-multiple-assignments.html

我想这样做,以便当我调用返回 [6, 7] 的方法时,我可以这样调用它:

谁能告诉我这是否应该在 Jenkins 中工作,如果可以,在 Jenkins 的哪个版本中?或者它是一个不受支持的功能?还是一个错误?

谢谢

0 投票
1 回答
2626 浏览

jenkins - 在 Jenkinsfile 中使用加载的脚本

我有一个作为詹金斯管道执行的脚本,它运行良好。我想在多个环境中重用它,所以我将所有代码移动到函数并从多个文件中加载它们。

库文件 -健康检查

使用它的文件 - Healthcheck-dev

问题是脚本没有通过readProperties,准备阶段就停在那里,忽略队列阶段:

我做错了什么?当我将代码移动到单个文件时,它可以正常工作。

0 投票
6 回答
22245 浏览

docker - 如何在 jenkinsfile 中为 docker.build 设置自定义上下文

我正在尝试为詹金斯改编一个码头工人版本。我正在关注我们的 docker-compose 文件,我正在创建一个 Jenkinsfile 来创建每个容器并将它们链接在一起。我遇到的问题是 docker-compose 文件声明的上下文不是 Dockerfile 所在的位置。据我了解,jenkins 会将上下文设置为 Dockerfile 所在的位置,这会将要复制的文件放置在不同的相对位置,具体取决于 jenkinsfile 或 docker-compose 文件是否正在构建。

文件夹结构为:

这就是 Dockerfile 为相关文件声明 COPY 指令的方式

这就是我的 jenkinsfile 构建文件的方式。据我所知,将上下文放在该目录中

docker-compose 文件将其声明为:

它将上下文置于项目的根目录。

有没有办法告诉 jenkinsfile 使用与 docker-compose 文件相同的上下文,以便 Dockerfile 的 COPY 指令可以保持不变并且对 Jenkins 和 docker-compose 都有效?如果那不可能,有没有人知道任何替代解决方案?

0 投票
2 回答
20110 浏览

jenkins - 如何在 Jenkinsfile 中连接字符串?

我正在尝试在 Jenkinsfile 中连接一些字符串,但它不起作用:

我也尝试了其他解决方案:

但 ${env.BUILD_NUMBER} 未评估/打印

如果我做

${env.BUILD_NUMBER} 被评估/打印

我仍然不明白 Jenkinsfile 中的脚本语言是如何工作的,文档都是关于 DSL 的,这是否意味着您不能进行常见的脚本操作?

0 投票
1 回答
15104 浏览

jenkins - Jenkins 管道代码通过 GitHub 组织文件夹插件自动触发多个存储库

这个问题与具有多个存储库的 Jenkins 作业自动触发器有关。

在 Jenkinsfile 中定义了 3 个 repo 以结帐。

使用 Github 组织插件配置 Jenkins 作业。

在这种情况下,我的 Jenkinsfile 位于 abc 存储库中,并且 Jenkins 自动触发器在 abc 存储库中运行良好。它不适用于其他回购。

无论如何定义2个或更多回购的自动触发?

是否有任何插件可以自动触发 2 个或更多存储库的作业?

我是否需要在 Jenkinsfile 中以不同的方式定义“checkout scm”?

0 投票
2 回答
6130 浏览

jenkins - 如何在同一个 Jenkins 节点中加载另一个 groovy 脚本?

从另一个管道脚本加载管道脚本时,两个管道不会在同一个节点上执行:第一个在我的主节点上执行,第二个在从节点上执行。

我正在Pipeline Script from SCM以这种方式使用带有选项的 Jenkins 管道来完成很多工作:

  • 我的每个作业都使用选项定义了它们对应的 GitPoll SCM存储库 URL,以便在对我的代码进行更改时自动轮询存储库(基本作业用法)。

  • 我的每个作业都在其存储库的根目录定义了一个简单Jenkinsfile的,而里面的管道脚本基本上什么都不做,只是加载一个更通用的管道。

例如

我的common-pipeline.groovy管道执行实际的工作,例如构建、发布或部署工件,例如:

现在我不想为每个作业强制节点,所以两个管道都有node("master"),或者node("remote")因为我真的不想手动处理它,但是一旦第一个管道在特定节点上运行(或者masterslave1slave2slave3)第二个/加载的管道在同一个节点上执行,因为否则我的实际 Git 存储库代码不能从其他节点的工作区获得......

有什么方法可以指定我希望我的第二个管道与第一个管道在同一个节点上执行,或者在使用loadstep 时可能传递一个参数?

0 投票
1 回答
754 浏览

jenkins - 如何使用 docker 隔离 jenkins 中的构建

我在专用服务器上使用 jenkins 2。我的构建是一个多分支管道,这个构建的第一步是docker-compose up -d为了运行数据库(redis 和 mongo)并针对它们运行测试。

一切正常,直到您同时在不同的分支上进行 2 次提交;2 个构建中的一个无法启动容器,因为该端口当然已经被占用。

我希望能够在 2 个不同的分支上并行运行 2 个构建:我如何实现这一点?

我的docker-compose.yml文件如下所示:

我的构建是用 a 完成的Jenkinsfile,我读过有一种方法可以在容器内运行构建

0 投票
1 回答
923 浏览

jenkins - 在执行 Jenkinsfile 之前执行代码

我们Jenkinsfile在 git 存储库中使用 s 来定义 Jenkins CI 应该如何执行。

是否可以在执行存储库定义的管道之前注入一些代码、步骤等Jenkinsfile?有时我们需要在运行管道之前添加一些步骤。

执行 maven 作业的示例:Jenkins 文件包含步骤克隆、构建、测试、安装因此运行管道作业将使用以下步骤创建管道:

但是,我们需要确保所有构建工件(jar 等)都进入我们的工件存储库。我们需要的是更新/更改 Jenkinsfile 以添加额外步骤的能力。使用上面的示例,我们需要能够让管道运行以下步骤:

侵入性/简单的方法是将-step 添加pushToArifactRepository到所有 Jenkinsfiles 中,但是我们确实(也不希望)控制任何给定的内容Jenkinsfile

0 投票
1 回答
10667 浏览

jenkins-pipeline - Jenkins Multi-Branch Pipeline——在本地 Jenkinsfile 中包含另一个脚本

我们刚刚开始使用 Jenkins 多分支管道。我喜欢 Jenkins 在创建新分支时自动创建新的 Jenkins 作业的想法。它将确保所有可发布的开发都在 Jenkins 中构建。我们有大约 40 或 50 个项目,几乎每个版本都会分支,每次分支时创建这 40 个左右的工作是容易出错的工作。

但是,我看到 Jenkins 中有两种类型的管道构建:

  • 常规管道构建:您在 Jenkins 作业中指定位置和分支。但是,您可以指定是要使用 Jenkins 作业配置中的脚本,还是使用源存储库中的脚本。这将使我们能够Jenkinsfile为所有工作维持一个单一的。如果我们在构建过程中更改某些内容,我们只需要编辑一个 Jenkinsfile。

  • 多分支流水线构建:创建新分支时,Jenkins 会自动为您创建一个新的 Jenkins 作业。这意味着当一个新分支出现时,我们不再需要创建几十个新的 Jenkins 项目。但是,它看起来Jenkinsfile必须位于项目的根目录上。如果您在构建过程中进行了基本更改,则必须更新所有 Jenkins 项目。

我希望能够使用多分支管道构建,但我想指定Jenkinsfile从我们的存储库中提取的位置,或者包含Jenkinsfile存储库 URL 中的主节点。

有没有办法使用 Jenkins 多分支管道来做到这一点?

0 投票
1 回答
24571 浏览

jenkins - 如何将 Groovy 类导入 Jenkinsfile?

如何在 Jenkinsfile 中导入 Groovy 类?我尝试了几种方法,但都没有奏效。

这是我要导入的类:

Thing.groovy

这些是行不通的:

詹金斯文件-1

詹金斯文件-2

Jenkinsfile-3