将在构建开始之前执行的Global Jenkins脚本

时间:2017-12-07 11:21:09

标签: jenkins jenkins-plugins

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

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

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

我找到了全局帖子插件https://wiki.jenkins.io/display/JENKINS/Global+Post+Script+Plugin,我只需要这个插件所做的对话。

也许有另一种解决方案?

2 个答案:

答案 0 :(得分:0)

在运行所有版本之前,我需要对/data/jenkins/.npm和/data/jenkins/.sbt目录进行chmod修改。

我可以为每个作业添加一个预构建步骤(冗余且混乱),或者可以进入Manage Jenkins-> Configure System。

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

但是,如果您真的希望某项任务可以为每个作业运行某项(不足以在jenkins从属启动中运行),那么您可能不想为每个作业手动配置它。

我建议您研究Jenkins DSL,因为您可以在任何/所有作业上定义preBuildSteps部分,然后可以引用一个通用代码段(例如要运行的Shell脚本)。

答案 1 :(得分:0)

部分解决方案:

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

一些选项:

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

限制:

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

两个插件都不会处理的一个用例是作业间从属清理/完整性检查