在Jenkins中触发特定目录提交的作业

时间:2018-02-22 07:14:00

标签: git jenkins bitbucket

我有资源库结构

{{1}}

两个Jenkins Jobs job1用于第一条路径,job2用于第二条路径。 因此,如果提交在job1目录路径上,job1应该触发,如果提交在job2目录路径,则应该触发Jenkins中的job2。 但问题是合并拉取请求被合并到主控两个作业被触发甚至提交只是作业路径之一。

1 个答案:

答案 0 :(得分:0)

这不是通常的情况。我认为你有两种方式。

  1. 有两个单独的存储库(Take commons and keep as a library),这并不容易。
  2. 在詹金斯做一个调整
  3. 如果可能,在您的存储库中编写相同类型的逻辑(如下所示)。
  4. 这是在詹金斯实现这一目标的一种方法(我的观点2) 一个问题是两个jenkins将开始,但是一个将在没有完成jenkins-job的情况下终止。

    你可以为此编写一个bash脚本。 JOB-1中的逻辑是终止,如果提交的文件在job2目录下,对于JOB-2则相同(如果文件来自job2目录则终止)

    添加此脚本并运行(作为第一个)Job-1 jenkins

    #!/bin/bash
    
    # Get count of job2 directory files 
    count_of_job2_files=`git show --pretty="format:" --name-only <commitID> | grep "job2/" | wc -l` 
    
    # if Job2 dir files are more than 0 then termiate the jenkins job
    [ $count_of_job2_files -gt 0 ] && exit 0 ; 
    

    在job2 jenkins中添加相同类型的脚本。

    注意: 假设您使用git作为存储库

    ,编写逻辑