问题标签 [jenkins-workflow]
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.
jenkins - Jenkins 工作流检查作业是否正在运行或已安排
是否可以通过某些工作流脚本检查某些作业是否正在运行或计划?
尽管使用阶段管理并发似乎就足够了:
并像这样在这些阶段运行构建:
可能有人手动启动了测试作业,而我只想在我的工作流脚本中处理这种情况。例如,跳过构建或等待构建完成。
jenkins-workflow - Workflow CPS Global Lib git 存储库的安全性
CPS Global Lib git repo有哪些安全性(如果有)?任何添加了 SSH 公钥的人都可以完全读/写吗?或者有没有办法限制对该存储库的访问?
jenkins - Jenkins如何以不同的属性文件作为参数触发两个作业并并行运行它们?
我是 Jenkins 的新手,我需要运行一个作业,比如 Job_B,两次并行,使用 2 个不同的属性文件(文件名相同,但内容不同),这样其中一个运行将消耗一个属性文件而另一个运行将消耗另一个属性文件。
jenkins-workflow - 詹金斯工作流插件 MissingMethodException
我正在试用 jenkins 工作流插件并开始教程https://github.com/jenkinsci/workflow-plugin/blob/master/TUTORIAL.md
我正在使用 jenkins 1.628 CloudBees Build Flow 0.18 tomcat 7.0.56 java 1.8.0_25 并全新安装了所有最新的工作流插件。
当我尝试第一个示例时
我收到这个错误
如果我将代码更改为
作业运行。
如果我尝试下一个示例
发生此错误
我错过了什么?
testing - 在一个从站上的项目之间共享工件
我为 Jenkins 设置了一个主从配置,其中主在本地站点上,从属在 AWS 上。我想设置 Jenkins 这样
- 建立和
- 测试
是单独的项目。为此,我需要在作业之间传递构建工件。工件的大小为数百 MB。不幸的是,尽管所有项目都构建在同一个节点上,但工件总是通过 master 传递,从而导致严重的速度损失。
有没有办法将工件保留在构建从站的本地并在项目之间传递它们?
git - 将参数传递给下游项目
我想在 Jenkins 中连接一些项目,并确保它们都可以从原始项目中访问 Git 参数(等)${GIT_REVISION}
。${GIT_BRANCH}
我尝试使用Parameterized Trigger Plugin,但我不确定我必须在哪里打开哪些选项。它似乎不是开箱即用的。
有什么提示吗?
jenkins-workflow - Jenkins Workflow API - 阶段状态
我们可以查询工作流作业的哪些信息?关于特定构建的阶段状态(成功、失败、尚未达到、中止等)的任何信息?我看到我们可以使用这个方法input
与步骤交互,但是我们在哪里可以找到关于我们的构建的元数据(如果有的话)?
jenkins-workflow - 工作流构建优先级
当一个构建超过另一个构建而前一个构建被暂停时,预期的行为是什么?如果我有一个包含 2 个阶段的工作流作业并且我已经在其上运行了 2 个构建,并且构建 #1 在阶段 1 中暂停(例如,也许有人只是忘记中止它)但构建 #2 已经在或超过阶段 2,是是否希望构建#1 应该中止?如果最后一步是部署到生产环境,我们可能不希望该程序继续运行,否则它很可能会覆盖在生产环境中运行的构建 #2,这实际上是我们想要的。寻找一些关于我们应该如何处理这种情况的见解,或者其他人已经有的情况,因为有很多方法可以解决它。
jenkins-workflow - Jenkins 工作流程:如何获取或设置步骤 ID
我们想参考 Jenkins 工作流的并行任务中的一个步骤。但似乎对于多个并行任务中的步骤,步骤 ID 的创建是不确定的。对于输入步骤,可以手动指定步骤 ID。是否可以为 shell 步骤指定步骤 id 或查询步骤 id?
目的是我们想在并行任务中创建一个指向 shell 脚本的链接。
jenkins - 如何在完成一组其他工作后触发 Jenkins 工作?
根据一组其他作业的完成情况,您只有一个作业的简单情况很简单:使用多作业或使用带有parallel { ... }
. 我试图解决的情况更普遍,例如:
我希望这些作业中的每一个都尽快触发,并且仅在其先决条件完成时触发。
看起来构建流程插件、连接插件或作业 DSL 插件都没有一个好的机制。当然,我可以开始我所有的工作并让他们投票给詹金斯,但这会很丑陋。
另一个死胡同是“上游作业触发器”。我想触发特定的作业构建,而不仅仅是上游作业的任何运行。
更新
一个答案提到了多任务插件。它确实可以用来解决这个问题,但调度和总构建时间几乎总是最坏的情况。例如,假设这个依赖图,构建时间如下所示:
使用 multijob 插件,您可以获得:
如果我有办法在所有先决条件都完成后准确地触发下一个工作,那么总构建时间将只有 57m。
这里的答案应该解释我如何获得这种行为,最好不要编写我自己的轮询机制。
更新 1 1/2 在下面的评论中,建议我将左侧任务和右侧任务组合成一个子任务。是的,这可以在这个例子中完成,但通常很难自动完成。例如,假设有一个额外的依赖关系:right2 依赖于 left1。在给定构建时间的情况下,最佳构建时间不应该改变,因为 left1 在启动 right2 之前很久就完成了,但是如果没有这些知识,您就不能再将 left1 和 left2 放在同一组中,而不会冒没有 right1 的风险可用的。
更新 2
看起来这里没有现成的答案。看来我将不得不自己编写一个系统 groovy 脚本。请参阅我自己对这个问题的回答。
更新 3
我们最终分叉了 multijob 插件并在其中编写了新的逻辑。我希望我们可以在一些清理之后将它作为一个新插件发布......