每个拉取请求的Jenkins工作

时间:2016-08-05 16:24:02

标签: jenkins bitbucket

我想做一个非常简单的事情 - 对于在我的repo下创建的每个新的pull请求,我想用similer配置创建一个新的jenkins作业(运行一些批处理),这将检查正在进行的分支合并(不是目标分支)。

我还希望在拉取请求获得批准后删除此作业,但这并不重要。

我该怎么做?我发现的每个jenkins插件都为我的所有分支创建了作业,或者为指定的分支列表创建了作业,而不仅仅是新的或仅仅是未合并的拉取请求

3 个答案:

答案 0 :(得分:2)

以下是解决此问题的一种方法:

  1. 创建一个模板作业,其中包含您要为每个新分支执行的逻辑(即运行一些批处理)。
  2. 为您的回购中的每个新拉取请求创建一个作业。您可以使用Script SCM Plugin使用简短的groovy脚本来执行此操作。
  3. 在此触发的作业中,使用Jobcopy Plugin克隆#1中的作业。将任何字符串(例如git url)替换为使工作正常工作所需的任何字符串。
  4. 当需要删除分支时,您可以编写通过Script SCM Plugin触发的另一个作业。您可以使用Groovy Postbuild Plugin将其删除。

答案 1 :(得分:0)

这与我们在团队中所做的非常相似(我们有超过10个开发分支机构,也有很多发布分支机构)

我认为最简单的方法如下:

应该使用插件:

gerrit trigger plugin 用于在有新提交时触发

job dsl plugin 用于根据dsl脚本生成作业

build flow plugin 用于定义执行流程

  1. 创建Jenkins构建流程作业“EntryPoint”(如果有新的提交推送进行审核,将触发此作业)

  2. 创建作业生成器作业(此作业将调用作业dsl脚本以根据输入参数生成模板作业,例如分支)

  3. 创建一个新工作来进行清理工作,或者正如Daniel所说,你可以用groovy post build做到这一点

  4. 在构建流程作业中,一个简单的流程如下

    //Get current branch from gerrit trigger plugin
    def currentBranch = params[GERRIT_BRANCH]
    //Invoke job generator job and pass the branch info to it
    build ("job_generator",BRANCH:currentBranch )
    //Invoke the generated job by job_generator
    build("$currentBrnch_Build")
    //Remove the generated job
    build("CleanUpJob")
    

答案 2 :(得分:0)

好的,我终于成功了,而且我认为它更容易了。我发现了一个叫做#34; Bitbucket pullrequest builder插件的jenkins插件,它使得为拉取请求构建作业变得非常容易。唯一的问题是,我无法让它与任何OAuth消费者合作,并且必须给它自己的凭据。但除此之外,它的工作非常精彩。