将Git push分支转换为Jenkins多配置项目用户定义的轴

时间:2016-06-20 11:27:19

标签: git maven jenkins build continuous-integration

我有一个项目,其中有两个分支。每次将代码推送到分支时都需要构建develop分支,而master只应在手动执行时运行。我遇到了多配置项目,我可以使用参数为两个分支指定不同的构建命令。我可以为我的develop/pom.xml分支编写develop,为master/pom.xml分支编写master文件夹。但是我想使用一个参数代替分支名称,例如$branch/pom.xml,其中$branch值应该从被推送到的分支获得。这可能吗?如果不是,有什么工作吗?

1 个答案:

答案 0 :(得分:1)

我创建了两个Jenkins项目:

  • develop-build-trigger (自由式)
  • build-given-branch (Maven)

并配置Git Plugin > Push notification from repository

  

为了尽量减少推送和构建之间的延迟,建议在存储库中设置post-receive挂钩,以便在发生新推送时戳戳Jenkins。为此,请在hooks/post-receive文件中添加以下行,其中<URL of the Git repository>是克隆此存储库时使用的完全限定URL。

curl http://yourserver/git/notifyCommit?url=<URL of the Git repository>[&branches=branch1[,branch2]*][&sha1=<commit ID>]
     

这将扫描以下所有作业:

     
      
  • 拥有构建触发器&gt;轮询SCM 已启用。不需要轮询计划
  •   
  • 配置为在指定的URL构建存储库
  •   
  • 配置为构建可选指定的分支或提交ID
  •   

另见Pro Git, 8.3 Customizing Git - Git Hooks

<Your repo>/.git/hooks/post-receive

curl http://<Your Jenkins>/git/notifyCommit?url=<Your repo>&branches=develop

Freestyle项目 develop-build-trigger

  • 源代码管理

    • ◉Git

      • 存储库

        • 存储库网址:... your repo ...
      • 要建立的分支

        • 分支说明符:develop
  • 构建触发器

    • ☑民意调查SCM
  • 制作后的操作

    • 在其他项目上触发参数化构建
      • 构建触发器
        • 要构建的项目:build-given-branch
        • 预定义参数
          • 参数:branch=develop

此项目将在post-receive上触发,因为它将develop指定为要构建的分支,这符合post-receive挂钩URL中给出的分支。

Maven项目 build-given-branch

  • ☑此版本已参数化

    • 选择参数

      • 姓名:branch
      • 选择:

        master
        develop
        
  • 源代码管理

    • ◉Git

      • 存储库

        • 存储库网址:... your repo ...
      • 要建立的分支

        • 分支说明符:$branch
  • <强>构建

    • 根POM:$branch/pom.xml

使用参数构建并确认手动master版本的默认值master。 (作为额外的好处,您也可以手动构建develop。)

缺点是您在每个项目中两次检查develop分支。

说到这里我还想提一下,为同一个项目提供不同的POM是不寻常的。如果项目有不同的视图,如果根据这些视图应该做不同的事情Maven支持Build Profiles

  

他们在构建时修改POM,并且用于补充集合,为一组目标环境提供等效但不同的参数(例如,提供开发中appserver根目录的路径,测试和生产环境)。

这意味着在您的情况下 构建 根POM 保持为空并且→目标和选项:{ {1}} {-P $branchmaster个人资料,不会对配置进行任何更改。