美文网首页
Gitlab 触发 Jenkins 自动构建,并返回构建结果

Gitlab 触发 Jenkins 自动构建,并返回构建结果

作者: Eroc | 来源:发表于2023-08-13 13:20 被阅读0次

    插件安装

    • gitlab-plugin

    添加认证

    添加认证的操作,分为两个部分,一个是在 Gitlab 上完成,一个是在 Jenkins 上完成。

    Gitlab 认证配置

    在 Gitlab 中,使用管理员账号,生成 Access Token。

    将生成的 token 拷贝。注意:token 只会展示一次,关闭页面后,就无法再拷贝。

    Jenkins 认证配置

    使用管理员账号,进入系统管理 -> 系统配置/Configuration System,找到 Gitlab 。

    点击添加认证按钮,将 Gitlab 处复制来的 Access Token 粘贴到指定位置。



    添加成功后,在 Gitlab 选项处进行配置,并测试连接。连接成功即添加完成,保存退出,即可。



    创建 Jenkins 流水线

    创建 Jenkins 流水线,选择 pipeline 风格。(这里仅说明 pipeline 风格流水线如何配置)

    Jenkins 返回构建信息

    Jenkinsfile样例

    pipeline {
      agent any
    
      // 添加 gitlab 名称
      // 填写 Jenkins 后台配置的 Gitlab 选项中的 Connection name。此处填写上一章节填写的名称。 
      options {
        gitLabConnection('Gitlab')
      }
    
      parameters{
        gitParameter branch:
                '',
                branchFilter:'origin/{.*}',
                defaultValue:'<branch>',   
                name:'BRANCH',
                quickFilterEnabled: true,
                selectedValue: 'DEFAULT',
                sortMode: 'NONE',
                tagFilter: '*',
                type:'PT_BRANCH_TAG'   
        }
    
      stages {
        stage('Checkout') {
                steps {
                    // 更新 Gitlab 中的流水线状态
                    updateGitlabCommitStatus name: 'build', state: 'pending'
                    // 更新代码
                    checkout([$class: 'GitSCM',
                        branches: [[ name:"${BRANCH}" ]],
                        doGenerateSubmoduleConfinurations: false,
                        extensions: [],
                        //gitTool: 'Gitlab',
                        submoduleCig: [],
                        userRemoteConfigs: [[
                            url: "<gitlab_repo_url>",
                            credentialsId: '<gitlab&Jenkins_token>',
                        ]]
                    ])
                }
        }
        stage('build') {
          steps {
            // 更新 Gitlab 中的流水线状态
            updateGitlabCommitStatus name: 'build', state: 'running'
            hogehoge
          }
        }
      }
    
      // 返回构建结果到 Gitlab 上
      post {
        success {
          updateGitlabCommitStatus name: 'build', state: 'success'
        }
        failure {
          updateGitlabCommitStatus name: 'build', state: 'failed'
        }
      }
    }
    
    

    实际效果

    这里已经完成了,Jenkins 返回构建结果到 Gitlab 上的配置,显示效果可以在 Gitlab 中查看,效果如下所示:


    也可以在提交历史上查看流水线的构建结果。


    GItlab 提交代码触发构建

    进入 Jenkins 流水线,选择 Build when a change is pushed to Gitlab. XXXXXXX 。

    点击高级,复制 Secret token。如果需要限制触发流水线运行的分支,可以按需修改 Allowed braches 。


    打开需要自动触发的 Gitlab 库,配置 webhook 。

    完成添加后,可以进行事件测试,如果返回值为 200 ,则配置成功。


    实际效果

    其他

    由于 Gitlab 10.6 版本后,为了安全,默认不允许向本地网络发送 webhook 请求,否则添加 webhook 会报错,报错信息为:Url is blocked: Requests to the local network are not allowed

    解决方法为,使用管理员账号打开本地网络的 webhook 请求。

    相关文章

      网友评论

          本文标题:Gitlab 触发 Jenkins 自动构建,并返回构建结果

          本文链接:https://www.haomeiwen.com/subject/dbdzpdtx.html