转载

GitLab CI jenkins (webhook)

我们很多时候都是自己在自己的服务器上搭建gitlab 服务,然后我们希望通过jenkins 来检查我们的Pr,也就说,当有人想我们的gitlab 提交一个 pull request 的时候,我们希望gitlab 能够触发一个 jenkins pipeline 来做一些检查 ,并且能把pipeline的运行的状态显示在我们的gitlab上让我们能够知道是否通过了检查,这就是传说中的CI

配置步骤:

1 首先,给我们的用户project  admin权限,让用户能够修改Project 的setting

2 其次,配置GitLab API access

  • 用你的用户登录gitlab,这个用户就是过会我们要用来和jenkins 互动的账号
  • 右上角 Setting
  • 选择Access Tokens
  • 创建一个个人的tocken,需要勾选特殊的权限,如下图
  • 保存我们得到的token ,在jenkins配置的时候我们需要这个tocken

GitLab CI jenkins (webhook)

GitLab CI jenkins (webhook)

GitLab CI jenkins (webhook)

Config on the Jenkins Server

  • Manage Jenkins > Manage Plugins .
  • 安装插件 Jenkins GitLab Plugin
  • 然后我们配置 Manage Jenkins > Configure System .
  • 在Gitlab 部分,我们选择  Enable authentication for ‘/project’ end-point
  • 点击Add 然后选择 Jenkins Credential Provider .
  • 选择类型: GitLab API token
  • 输入我们上边得到的值点击增加
  • 输入gitlab server的URL
  • 点击Test connection 查看是否配置成功

GitLab CI jenkins (webhook) GitLab CI jenkins (webhook) GitLab CI jenkins (webhook) GitLab CI jenkins (webhook) GitLab CI jenkins (webhook) GitLab CI jenkins (webhook)

设置我们的Jenkins pipeline

  • 在我们的jenkins 主页面 点击New Item
  • 输入我们的project name (myPullrequest)
  • 选择 Pipeline
  • 选择下拉框中正确的Gitlab 链接
  • 选择“ Build when a change is pushed to GitLab
  • 选中: Closed Merge Request Events  和  Accepted Merge Request Events

然后我们编写当有PR的时候我们具体要做什么操作,例子

pipeline {
   agent any
 
   stages {
      stage('gitlab') {
         steps {
            echo 'Notify GitLab'
            updateGitlabCommitStatus name: 'build', state: 'pending'
            sleep 300
            updateGitlabCommitStatus name: 'build', state: 'success'
         }
      }
   }
}

GitLab CI jenkins (webhook) GitLab CI jenkins (webhook)

为我们的Gitlab 增加Apikey

  • 点击我们的用户名
  • 点击config
  • API Token的地方选择增加,并保存这个值,我们要留到下边用

GitLab CI jenkins (webhook)

GitLab CI jenkins (webhook) GitLab CI jenkins (webhook)

这个修改是为了解决报错:

HTTP ERROR 403 No valid crumb was included in the request

为了解决这个问题,我们必须在Gitlab project中配置上用户名密码,因为最新版本的jenkins已经不支持disable CSRF

配置我们的Gitlab project

  • 找到我们要配置pipeline 的 gitlab project
  • Setting ->Webhooks
  • 添加webhook ,按照要求(此处要注意格式,需要在jenkins额外创建一个api key ,让我们的gitlab 能够有权限触发job)http://username:apikey@jenkins.url/project/myPullrequest/
  • Test

GitLab CI jenkins (webhook)

这个时候如果我们新提交一个PR

我们可以看到

GitLab CI jenkins (webhook)

等一会成功以后(为了方便查看我我在pipeline里边加了sleep 300)

GitLab CI jenkins (webhook)

原文  https://www.503error.com/2020/gitlab-ci-jenkins-webhook/1739.html
正文到此结束
Loading...