【发布时间】:2016-12-04 11:06:43
【问题描述】:
我想知道是否可以从管道 groovy 脚本中创建新的 Jenkins 构建作业。我知道可以启动现有作业,但我也想在脚本中创建新作业然后启动它们。
这将允许我在我的脚本中创建一个“作业图”。对于作业图,我的意思是可能依赖于彼此结果的构建作业的集合,并且该图确定哪些作业可以并行运行。类似的东西
/- WindowsBuild---------- WindowsRunTests -------------\
/ \
JobRoot --- LinuxBuild------------ LinuxRunTests ----------------/-- AllDone
\ \ /
\ \- LinuxRunDynamicAnalysis ----/
\- StaticCodeAnalysis -------------------------------/
在切换到流水线作业之前,我通过手动创建作业并设置它们的依赖项来完成此操作。现在我想在脚本中创建必要的作业。
使用 jenkins 管道中当前的并行模型,我有一个构建阶段、一个测试阶段等,但这些阶段会减慢整体执行速度,因为例如 WindowsRunTests 步骤不会在所有构建步骤之前启动尽管它只需要 WindowsBuild 步骤的结果,但在所有平台上都已完成。
它还可以改进管道的可视化并分离与parallel() 命令混合在一起的控制台输出。
【问题讨论】:
-
查看以下内容:stackoverflow.com/questions/16963309/… 它可以帮助您获得所需的东西吗?
-
我还没有时间仔细研究。与此同时,我放弃了使用 jenkins 作业实现构建作业图的想法,并最大限度地减少了在 jenkins 脚本中完成的工作。我有一个 CMake 基础 C++ 项目,然后我将“工作”作为 CMake 目标来实现。这样做的好处是管道的大部分部分都可以在本地运行,并且 cmake 脚本已经具有设置作业图所需的大量信息(文件位置)。 jenkins 脚本现在只在 linux slave 和 windows slave 上构建管道目标。
-
cmake 方法的一个缺点是它没有可视化哪些目标/作业已成功处理,哪些失败了。此信息必须从命令行输出“眼睛解析”。