我有两个Jenkins工作流作业,它们以不同的参数启动同一个作业,即它们构建的分支。后一项工作是在多个平台上构建项目。“头”作业,即Workflow作业可以在不同的机器上启动。此外,设置中还有两台linux机器。
有时会发生这样的情况,其中一个(比如master)在其中一台linux机器上启动,另一个在另一台上启动。他们都必须在linux机器上构建一个目标,因为他们都很忙,所以两个作业都停滞不前。
对于常规作业,可以限制它们可以运行的位置,但是,我找不到如何限制工作流作业可以运行的位置。显然,它应该使用groovy脚本来完成,但我不知道它到底有多准确。
有解决办法吗?
这里有一个jenkins文件可以全局执行此操作(这告诉jenkins整个管道必须在具有这三个标签的从属设备上运行):
pipeline {
agent { label 'docker && git && rbenv' }
stages {
stage('commit_stage') {
steps {
echo 'building stuff'
}
}
}
}
您还可以通过节点
步骤为任何阶段或阶段的一部分选择某个从属或特定功能:
pipeline {
agent { label 'docker && git && rbenv' }
stages {
stage('commit_stage') {
steps {
// this overrides the top-level agent requirements
node('linux_with_zsh') {
echo 'building stuff'
}
}
}
}
}
问题内容: 我想创建一个Jenkins作业来启动其他Jenkins作业。那将非常容易,因为Jenkins模板项目插件允许我们创建一个类型为“使用来自另一个项目的构建器”的构建步骤。但是,使我的情况更难的是,我必须在其他计算机上开始Jenkins的工作。有什么标准方法可以做到吗? 问题答案: 万一您只想触发Job的新版本,您有多种方法可以完成它 您可以使用远程访问API并触发请求以从源Job构建目标
问题内容: 是否可以从工作流脚本中检查某项作业是否正在运行或已计划? 尽管使用阶段管理并发似乎足够: 并在以下阶段运行构建: 可能是有人手动开始工作 测试工作 ,而我只想在我的工作流程脚本中处理这种情况。例如,跳过构建或等待构建完成。 问题答案: 这适用于不使用 Groovy Sandbox的流 :
请注意:问题是基于旧的,现在称为“脚本”管道格式。当使用“声明性管道”时,并行块可以嵌套在阶段块内(请参见使用声明性管道的并行阶段1.2)。 我想知道并行步骤应该如何使用Jenkins工作流/管道插件,特别是。如何将它们与构建阶段混合。我知道一般的模式: 我可以并行地构建不同的阶段吗?或者“并行”步骤只意味着在单个阶段中使用?
问题内容: 如何限制我的Jenkins作业只能在Linux从站上运行? 我 在“可以运行此项目 的位置 限制” 框中打了勾,但似乎只能在其中输入从属名称。 我想说的 是使用在Linux平台上运行的任何从属设备 类似于teamcity.agent.jvm.os.name等于TeamCity中的Linux选项。 编辑:到目前为止,您似乎必须手动编辑每个从站的标签(或编写脚本)。不幸的是,我无权更改这些
问题内容: 我有一个非常轻量级的作业,应在触发后立即执行,而不是等待一个小时才能完成当前作业。 据我了解,一项 轻量级 任务就是我想要的。它将为该任务创建一个临时执行程序。 我怎样才能使工作成为举重运动员? 问题答案: 试试这个FlyWeightProject插件。它是在Flyweight中运行的Freestyle类型的扩展。
我正试图将eclipse中的java项目导出为可运行的jar,但由于某种原因,可运行的jar无法工作。如果双击可执行jar,它什么也不做。我尝试将所需库提取并打包到生成的JAR中。 所以我也尝试导出一些更简单的项目,那些工作很好。最大的区别是我的真实项目有文件:图像和xml文件。 在代码中引用它们,如下所示: