【问题标题】:Global Jenkins script that will be executed before a build is started将在构建开始之前执行的全局 Jenkins 脚本
【发布时间】:2018-05-21 11:52:53
【问题描述】:

我正在寻找一种在启动 Jenkins 作业之前自动执行全局配置脚本的方法。

我的用例是,所有 Jenkins 作业只有在设置了特定的环境变量时才允许启动。

如果未设置变量,则应中止构建。

我找到了 Global Post 插件 https://wiki.jenkins.io/display/JENKINS/Global+Post+Script+Plugin,我只需要这个插件的作用。

也许还有其他解决方案?

【问题讨论】:

  • 当你在 Jenkins 中配置你的项目时,这里有一个名为 (Pre Steps) 的部分,你可以添加 pre-step build。您也可以使用 (This project is parameterised) 选项做一些事情。
  • 对不起,我的解释似乎不正确。我需要一个用于所有 Jenkins Jobs 的全局脚本。我有 300 多个作业,在每个作业启动之前,必须触发脚本。
  • 我不想配置每个作业,脚本必须自动触发。只需与插件相反即可。 wiki.jenkins.io/display/JENKINS/Global+Post+Script+Plugin
  • 全局设置中有环境变量(管理 Jenkins --> 配置系统 --> 全局属性 --> 环境变量),但我不知道是否可以自动化。如果您找到了您要找的东西,请告诉我们。
  • 环境变量已经设置好了。我需要一种在执行每个作业之前执行全局脚本的方法。我不想配置 300 个作业中的每一个。所以也许有一个插件,但我找不到。

标签: jenkins jenkins-plugins


【解决方案1】:

部分解决方案:

看看Global Pre Script 插件。这个插件的功能不如Global Post Script 插件丰富,但它至少应该能完成你想要的部分功能。它明显缺乏中止构建的选项,但它能够操纵您的作业所依赖的参数或其他先决条件。您还可以提交 PR 以添加一些阻止构建执行的方法。

一些选项:

  • 修改 全局预脚本 以便能够彻底中止从 groovy 中的构建。
  • 更改现有作业以检查前提条件(手动或通过脚本)。这不是最具可扩展性的选项。
  • 用管道作业替换现有作业并使用Shared Libraries 来限制逻辑。 (这就是我所做的)。
  • 使用 Job DSL Plugin 生成您的作业,并在每个生成的作业中强制执行 pre 构建步骤。 (我也是这样做的)

限制:

这两个全局插件都需要牢记:这两个插件都没有提供正确的构建步骤。 groovy 代码在 master 上执行。

两个插件都不会处理的一个用例是工作间从属清理/健全性检查

【讨论】:

    【解决方案2】:

    在运行所有构建之前,我需要 chmod 我的 /data/jenkins/.npm 和 /data/jenkins/.sbt 目录。

    我可以为每个作业添加一个预构建步骤(冗余和混乱),或者我可以进入管理 Jenkins -> 配置系统。

    我们有一个带有“初始化脚本”的 Cloud -> Amazon EC2 配置部分 - 您可以在从属启动时添加要在其中运行的内容。

    但是,如果您真的想要为每个作业运行某些东西(不足以在 jenkins slave 启动时运行),那么您可能不想为每个作业手动配置它。

    我建议您查看 Jenkins DSL,因为您可以在任何/所有作业上定义 preBuildSteps 部分,然后可以引用一个常见的 sn-p(例如要运行的 shell 脚本)。

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 2019-05-18
      • 2019-10-02
      • 1970-01-01
      • 2017-06-11
      • 2014-05-04
      • 2021-09-05
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多