问题标签 [multibranch-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 投票
6 回答
68752 浏览

jenkins - 在 Jenkins 中使用多分支管道“定期构建”

我正在使用 Pipeline 插件运行 Jenkins 2。我已经设置了一个多分支管道项目,其中每个分支(主、开发等)在根目录中都有一个 Jenkinsfile。设置很简单。但是,即使代码没有更改,我也不知道如何让每个分支定期运行(而不是分支索引)。我需要在我的 Jenkinsfile 中添加什么来启用定期构建?

0 投票
4 回答
20408 浏览

git - 如何远程触发 Jenkins 多分支管道项目构建?

标题主要是这样说的。如何从远程 git 存储库触发 Jenkins 多分支管道项目构建?

“触发器远程构建”构建触发器选项似乎不起作用,因为您设置的令牌没有保存。

0 投票
3 回答
7069 浏览

jenkins-pipeline - 将工件或字符串传递给 Jenkins Pipeline 中的上游作业

目标

我正在尝试使用 GitHub 组织插件和 jenkins 管道来编排依赖链。

由于我正在构建的产品具有许多共享依赖项,因此我使用 nuget 包来管理依赖项版本控制和更新。

但是,我无法为进行编排的项目获取必要的工件/信息。

战略

在 SCM 更改时,任何上游共享库都应该构建一个 nuget 包并协调任何需要新引用的下游构建:

  1. 我在每个上游项目中对下游编排进行硬编码。 因此,如果构建了 A,则依赖于 A 的 B 和 C 将使用来自 A 的最新工件构建。之后,依赖于 B 和 C 的 D 以及依赖于 A 和 C 的 E 将使用来自 A 的最新工件构建A、B、C 根据需要。等等。 这些都将由 A 的 Jenkinsfile 分阶段触发,因为依赖项是使用“Build Job: Jobname”语法构建的。我找不到一个解决方案,我可以在每个步骤中将编排传递到下游,因为依赖项在下游发散和收敛,并且我不想触发对上游项目的不同引用的同一下游项目的多个构建。
  2. 我可以将父项目的工件信息传递给任何下游作业,但我面临的问题是,父项目没有任何下游工件的程序集版本信息(需要在下游进一步编排作业)。Stash/Unstash 似乎没有任何跨作业功能,并且归档/取消归档已被弃用。

TLDR: 我需要一种将字符串或文本文件上游传递到作业中间执行(来自多个下游作业)的方法,或者我需要一种用于具有共享下游依赖项的多个下游作业的方法,以协调并共同将信息传递给下游作业(仅触发一次)。

谢谢!

0 投票
2 回答
890 浏览

jenkins - Jenkins管道多分支问题在并行作业后重用节点类型

我正在尝试将我们的 CI 流程从 JobDSL 迁移到多分支管道设置。作为第一步,我决定将管道委托回现有作业(传递所需的参数)我的管道如下所示(伪代码)

但是,我在最后一个“发布”阶段遇到了问题。当它启动 gradle 目标时,它正确地重用了“设置”阶段的工作区,但似乎在原始结帐的“持久”子文件夹中执行(即,设置阶段的过去执行/mnt/jenkins/workspace/<branchname>/<random_hash>/但最后一个 gradle 目标执行在诸如/mnt/jenkins/workspace/<branchname>/<random_hash>@tmp/durable-<hash>/script.sh) 的文件夹中,这会导致 gradlew not found 错误

我尝试过使用 directory('/...'){...} ,但这似乎并没有解决问题...任何帮助或指导将不胜感激!

0 投票
3 回答
5038 浏览

jenkins - 如何在多分支管道中为特定分支设置下一个内部版本号

我正在尝试以编程方式为我们的发布分支设置下一个内部版本号,但我遇到了一个问题。

以下是我尝试过的两种方法:

我也尝试使用CLI命令:

但没有运气。

请指导我如何为多分支管道设置下一个内部版本号。

0 投票
1 回答
1146 浏览

jenkins - BitBucket Team Multibranch 管道作业忽略 PR

我正在使用 Bitbucket Branch Source Plugin 为 Bitbucket 中特定项目目录下的每个 repo 自动配置多分支管道作业。一个 repo 包含一个有效的 Jenkinsfile。该存储库的主分支构建和部署良好。但是,尚未构建该 repo 的拉取请求。我看到以下日志:

拉取请求的指定分支确实包含一个 Jenkinsfile,所以我不明白为什么它说不符合条件。有什么建议么?

“自动分支项目触发”选项设置为默认.*

我正在对 Jenkins 使用以下插件:

0 投票
9 回答
36799 浏览

git - 詹金斯 - 如果开始新的构建,则中止运行构建

我使用 Jenkins 和多分支管道。我为每个活动的 git 分支都有一份工作。新构建由 git 存储库中的推送触发。如果新版本出现在同一分支中,我想要的是中止当前分支中正在运行的构建。

例如:我提交并推送到分支feature1。然后BUILD_1从詹金斯开始。我再次提交并feature1BUILD_1仍在运行时推送到分支。我想BUILD_1流产并开始BUILD_2

我尝试使用stage concurrency=x选项和阶段锁定里程碑功能,但未能解决我的问题。

我也读过这个线程Stopping Jenkins job in case new one is started,但我的问题没有解决方案。

你知道有什么解决办法吗?

0 投票
4 回答
28395 浏览

git - How to trigger Jenkins Multi-Branch Pipeline with Gitlab Webhook

I currently set up a Jenkins Multi-Branch Pipeline job that is based on a Git repository hosted on our Gitlab server. Jenkins can read the branches in the repository and creates a job for every branch in the repository. But I can't figure out how to trigger the jobs with webhooks in Gitlab.

My questions are:

  1. How can I trigger the creation of a new branch job in Jenkins from our Gitlab server? I can't see a webhook for a new branch being pushed.

  2. How do I trigger the actual build job for a single branch? I can only add a webhook for push events but then I would have to add the branch name which I don't know how to do.

  3. How can I make sure that Gitlab always triggers the "creation of the branch job" before a push to a branch triggers the build job itself.

What I tried so far is triggering the multi-branch job, but this has no effect and following this post does not work at all.

0 投票
0 回答
306 浏览

jenkins - Jenkins,在多分支管道中运行分支索引的管道代码

我有我的 Jenkins 设置来运行多分支管道项目,我使用 API 来触发其中的特定分支。

我的问题是它只有在分支被索引时才有效,否则我从 API 得到 404。

我已设法通过 API 运行分支索引,但我不知道此任务何时完成

通过跟踪和错误,我已经能够弄清楚:

  • 对分支索引的 API 调用不返回队列 ID,因此我无法检查其状态
  • 无论队列和执行限制如何,索引任务都会立即运行。
  • 我一直无法从管道(其他作业)运行此任务,尝试运行此任务会导致错误

有没有办法判断任务是否完成,以及它的成功价值?

0 投票
5 回答
53492 浏览

jenkins - 如果提交消息包含 [ci skip],如何获取 git 最新提交消息并阻止 jenkins 构建?

我试图在 jenkinsfile 中获取 git 提交消息并阻止基于提交消息的构建。

env.GIT_COMMIT不会在 jenkinsfile 中返回提交详细信息。

如果提交消息中包含 [ci skip],如何获取 git 最新提交消息并阻止 jenkins 构建?