如何从GitHub拉取请求触发Jenkins 2.0管道作业

use*_*266 28 github jenkins jenkins-pipeline jenkins-2

看起来GitHubPullRequestBuilder与Jenkins v2.0管道作业不兼容.

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

Dee*_*Rao 38

我有类似的问题.这对我有用

预-REQ

  • 詹金斯诉.2+(我使用的是Jenkins 2.60)
  • Github(或Githhub企业)帐户
  • 你的github和Jenkins必须能够互相交谈.

在Github上

  1. 创建具有相关权限的github个人访问令牌(PAT).
  2. 对于您的仓库,请创建一个webhook
    • 网址为 YourJenkinsURL/github-webhook/
    • 选择"让我选择个别活动"并选中"提取请求"
  3. Jenkins文件添加到repo的根文件夹中.出于测试目的,您可以将内容作为基本的hello世界,如下所示
    pipeline {
        agent any
        stages {
            stage('Test') {
                steps {
                    echo 'Hello World ...'
                }
            }
        }
    }

在詹金斯

  1. 安装GitHub Pull Request Builder插件.(你还需要"Github"插件,但通常应该作为Jenkins ver 2+的一部分安装)
  2. 詹金斯 - 证书
    • 添加github个人访问令牌(PAT)作为"秘密文本"凭证.
    • 添加github用户名密码为'username-password'凭证.
  3. 管理Jenkins - 配置系统
    • Github - Github服务器:这是Github插件的一部分.添加一个github服务器.'API URL'默认为https://api.github.com.如果您使用的是企业github,请使用/ api/v3替换为enterprise github url.对于凭证,请选择PAT选项.测试连接.检查"管理挂钩".
    • GitHub Pull Request Builder:对于'GitHub Server API URL',使用Github Server部分中指定的相同URL.将"共享密钥"留空.对于凭据,请使用"用户名 - 密码"凭证.测试凭据以确保其正常工作.在我的设置中,选中了"自动管理webhooks".
  4. 管道工作
    • 使用"管道"选项创建新项目.注意:这是vanilla Pipeline作业,而不是Multibranch Pipeline.
    • 一般部分:检查'Github项目' - 项目URL:输入您的github repo url
    • 构建触发器:检查'GitHub Pull Request Builder'
      • 对于'GitHub API凭据'选择您在'管理Jenkins - 配置系统'屏幕中为GitHub拉取请求构建器设置的选项
      • 对于管理员列表:添加您的用户名
      • 选中使用github挂钩进行构建触发
    • 管道:
      1. 选择"来自SCM的管道脚本".请注意,这假设您的仓库的根文件夹将包含'Jenkinsfile'
      2. SCM:选择'Git'
      3. 存储库 - 输入repo详细信息.对于凭据,请使用基于"用户名 - 密码"的凭据.
      4. 单击"高级"并将refspec添加为 +refs/pull/*:refs/remotes/origin/pr/*
      5. 分支 - 应该是 ${sha1}
      6. 脚本路径:默认为Jenkinsfile,保持原样.
      7. 轻量级结账 - 取消选中(https://github.com/jenkinsci/ghprb-plugin/issues/507)

而已.你们都准备好了.在您的仓库的主分支上创建PR现在应该触发您的Jenkins管道作业

一些观察

  • 从github重新发送PR的webhook有效负载不会触发管道但是打开新的PR甚至在github上重新打开已关闭的PR,会触发管道作业
  • 在管道作业配置中,如果选择"管道脚本"并将管道脚本粘贴到那里,则作业不会触发!


Jes*_*ick 2

将 Pipeline 与 GitHub Pull 请求结合使用的最直接方法是将脚本放入您的存储库中Jenkinsfile,然后安装GitHub Branch Source插件。文档

  • 虽然这确实允许您构建 PR 分支,但据我所知,无法获取有关旧插件曾经提供的 PR 的信息:https://wiki.jenkins-ci.org/display/JENKINS/GitHub +pull+request+builder+plugin#GitHubpullrequestbuilderplugin-EnvironmentVariables (2认同)