从另一个作业禁用Jenkins作业

Mat*_*t N 11 jenkins

詹金斯(哈德森)有办法禁止从另一份工作中找到工作吗?

基本上我们有一个构建环境,可以进行标准构建/测试.我们还使用相同的Jenkins实例来执行其他一些操作,例如自动安装我们产品的新版本(这是某些自动化测试所需的).当我们运行一些"额外"作业时,我们希望暂时禁用"标准"作业(然后在以后自动启用它们).

理想情况下,在作业上会有一些额外的构建步骤来说"禁用XYZ作业".或者,如果有通过ANT或某种方式告诉Jenkins禁用某个工作,那也可以.

更新: 看起来有几个插件会阻止两个作业同时运行,但我真的需要:

  1. 运行作业A,禁用作业1
  2. 根据作业A的输出,在Jenkins之外做一些事情
  3. 运行作业B,再次启用作业1

dun*_*nni 27

您可以执行Groovy脚本作为预构建步骤.我在公司做过几次这样的事.您必须安装Groovy插件.然后,你可以添加一个预生成步骤"执行系统Groovy脚本",并有可以执行类似的东西:

Jenkins.instance.getItem("jobname").disable()
Run Code Online (Sandbox Code Playgroud)

为了在构建之后启用作业,添加后期构建步骤并执行

Jenkins.instance.getItem("jobname").enable()
Run Code Online (Sandbox Code Playgroud)

如果您想要一个只启用或禁用其他构建作业的作业,那么您不会选择前置或后置构建步骤,而是选择使用系统Groovy脚本的正常构建步骤.

你可以用Groovy脚本做更多的思考.值得详细了解它.

  • 为此,您需要在Groovy脚本的开头使用`import jenkins.model.Jenkins`. (6认同)

Mat*_*t N 7

我找到了一种使用jenkins-cli(命令行界面)的方法.我添加了这个构建步骤(对我来说这是一个Windows批处理命令,虽然我可以使它成为一个脚本或更优雅的东西):

java -jar C:\my\jenkins\path\jenkins-cli.jar -s %JENKINS_URL% disable-job "Job 1"
Run Code Online (Sandbox Code Playgroud)

我没有研究如何获得Jenkins的路径,但这不应该太难.

以下是CLI的一些信息.您还可以访问http:// your-jenkins:8080/cli以获取一些可用命令.