2016-04-25 87 views
16

看起来GitHubPullRequestBuilder与Jenkins v2.0管道作业不兼容。如何从GitHub拉取请求触发Jenkins 2.0管道作业

如何配置管道作业从GitHub拉取请求事件触发?
有关此主题的文档很少,我找不到任何示例。或者在GitHub中创建一个Web钩子来触发PR事件中的管道作业更好?

回答

1

使用Pipeline和GitHub pull请求最直接的方法是将脚本放到名称为Jenkinsfile的存储库中,然后安装GitHub Branch Source插件。 Documentation

+0

只适用于组织成员的PR,还是仅适用于外部贡献者的PR? – elopio

+0

@elopio,该插件可以选择从相同的存储库以及外部存储库启用/禁用PR构建。这不完全是你要求的,但可能足够接近。 –

+1

这个官方[jenkinsci/workflow-demo](https://hub.docker.com/r/jenkinsci/workflow-demo/)docker image用于播放PRs测试和'Jenkinsfile'。我想知道是否有可能在PR上进行漂亮的红色和绿色检查,并且完全有可能([示例](https://github.com/jenkinsci/docker-workflow-plugin/pull/57)): )这里是一个[关于多分支工作流程的有用帖子](https://jenkins.io/blog/2015/12/03/pipeline-as-code-with-multibranch-workflows-in-jenkins/) – GabLeRoux

2

简而言之,流程可以是这样的:

  1. 创建您的管道作为代码,并保存在一个文件中,在你的项目的根目录称为Jenkinsfile。该代码应该描述你的项目将如何建立。请参阅此处的示例:https://jenkins.io/doc/pipeline/examples/

  2. 然后,您应该在Jenkins中创建一个新的“Multibranch Pipeline Project”项目。您应该设置此项以便扫描您的步骤1的回购。

  3. 现在,无论您的第1步回购中打开一个新的PR分支,该分支都将被检出并根据Jenkinsfile包含它的说明。您可以对构建内容和时间设置更多条件。

注:

  1. “多枝管道工程” 的例子文件:https://jenkins.io/doc/book/pipeline-as-code/(向下滚动到多枝管道项目)

  2. 请记住,获取插件来构建一个公关表扬PR后不起作用。有一个讨论分析这里:https://github.com/jenkinsci/gitlab-plugin/issues/298有解决方法(也在该讨论中描述),但它们很难设置。

12

我有类似的问题。下面是我

预-REQ

  • 詹金斯什么工作版本。 2+(我用的是詹金斯2.60)
  • Github上(或Githhub 企业)占
  • 你的GitHub和詹金斯必须谈得来 对方。

在GitHub上

  1. 创建一个GitHub的个人访问令牌(PAT)与相关权利。
  2. 为了您的回购协议,创建
    • 网址为YourJenkinsURL/github-webhook/
    • 选择“让我选择单个事件”,并检查“拉请求”
  3. 添加Jenkinsfile到根目录的网络挂接你的回购文件夹。出于测试目的,你可以把内容作为基本的Hello World像下面
 
    pipeline { 
     agent any 
     stages { 
      stage('Test') { 
       steps { 
        echo 'Hello World ...' 
       } 
      } 
     } 
    } 

在詹金斯

  1. 安装GitHub的拉动请求生成器插件。 (你还需要“Github的”插件,但通常应该被安装版本作为詹金斯的一部分2+)
  2. 詹金斯 - 凭据
    • 加入GitHub的个人访问令牌(PAT)作为一个“秘密文本”的凭证。
    • 将github用户名 - 密码添加为“用户名 - 密码”凭证。
  3. 管理詹金斯 - 配置系统
    • Github上 - Github的服务器:这是Github的插件的一部分。添加一个github服务器。 'API URL'它将默认为https://api.github.com。如果您正在使用企业github,请使用企业github url,然后使用/ api/v3替换。对于凭证选择PAT选项。测试连接。 '管理钩子'被选中。
    • GitHub合并请求生成器:'GitHub服务器API URL'使用与Github服务器部分中指定的相同的URL。将'共享密钥'留空。对于凭据使用“用户名 - 密码”凭证。测试凭据以确保其工作。在我的设置中,选中了“Auto-manage webhooks”。
  4. 管道工作
    • 创建使用“管道”选项的新项目。注意:这是香草Pipeline作业,而不是Multibranch Pipeline。
    • 总务组:检查“Github上项目” - 项目网址:输入您的GitHub库网址
    • 构建触发器:检查“GitHub的拉动请求生成器”
      • 对于“GitHub的API证书”选择选项你GitHub上设置拉要求建设者在“管理詹金斯 - 配置系统”屏幕
      • 有关管理清单:添加您的用户名
      • 检查使用github上挂钩构建触发
    • 管道:
      1. 选择“管道脚本SCM”。请注意,假定您的回购的根文件夹将包含'Jenkinsfile'
      2. SCM:选择'Git'
      3. 存储库 - 输入回购详情。对于凭证使用基于“用户名 - 密码”的凭据。
      4. 单击高级和添加的Refspec为+refs/pull/*:refs/remotes/origin/pr/*
      5. 科 - 应该是${sha1}
      6. 脚本路径:默认为Jenkinsfile,保留原样。
      7. 轻量级结帐 - 取消选中此(https://github.com/jenkinsci/ghprb-plugin/issues/507

就是这样。你一切都准备好了。创建您的回购主分支公关现在应该触发您詹金斯管道工作

一些观察

  • 重新提供从GitHub公关的网络挂接有效载荷不会触发管道,但打开一个新的公关,甚至重新 - 在github上打开一个关闭的PR,触发管道作业
  • 在管道作业配置中,如果选择“管道脚本”并将管道粘贴到那里,作业不会触发!
+0

我们不能用多分支管道做同样的事吗?因为我想玩的分支不是主分支。 @Deepak Rao –

+0

'构建触发器:检查'GitHub合并请求生成器',该选项不适合我。该插件已安装,因为该选项存在于未使用jenkins文件的其他项目中。有什么想法吗? – edthethird

相关问题