当前位置: 首页> 汽车> 新车 > 门禁-jenkins的构建状态同步到gitlab提交流水线

门禁-jenkins的构建状态同步到gitlab提交流水线

时间:2025/7/8 22:59:32来源:https://blog.csdn.net/weixin_44014460/article/details/139103075 浏览次数: 0次

API接口文档

https://docs.gitlab.cn/jh/api/commits.html
在这里插入图片描述

配置pipline流水线

生成http请求代码:
使用HttpRequest插件生成
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

- sharelibs内容

//这是share libs里的
package devopsdef httpReq(reqType, reqUrl, reqBody, accessToken){def gitServer = "https://jihulab.com/api/v4"result = httpRequest consoleLogResponseBody: true, httpMode: 'POST',requestBody: reqBody,url: "${gitServer}/${reqUrl}",wrapAsMultipart: false,customHeaders: [[maskValue: false, name: 'contentType', value: 'APPLICATION_JSON'],[maskValue: true, name: 'Authorization', value: "Bearer ${accessToken}"]]return result}def changeCommitStatus(projectId, status, commitSha, accessToken){commitApi = "projects/${projectId}/statuses/${commitSha}?state=${status}"respones = httpReq("POST", commitApi, '', accessToken)println respones}

- jenkinsfile内容

// 这是jenkinsfile里边的
@Library('jenkinslibs') _
def tools = new devops.tools()
def sonar = new devops.sonarQube()
def gitlab = new devops.gitlab()if ("${runOpts}" == "GitlabPush"){branch = branch - "refs/heads/"currentBuild.description = "Trigger by ${url} ${branch}"def status = "running"env.accessToken = env.accessTokengitlab.changeCommitStatus(projectId, status, commitSha, env.accessToken)
}pipeline {agent {label {label 'vm-node'retries 10}}environment {CodePath = "${WORKSPACE}/code"}stages {stage('download code') { steps {checkout(scmGit(branches: [[name: '*/master']], extensions: [cleanAfterCheckout(deleteUntrackedNestedRepositories: true), [$class: 'RelativeTargetDirectory',relativeTargetDir: '$WORKSPACE/code/${GIT_REPOSITORY_NAME}']], userRemoteConfigs: [[credentialsId: 'f58233b3-bdb3-4fd4-82d6-4cea03d75971',url: 'https://codeup.aliyun.com/64257bf308203590adcc93bf/QMUI-Android.git']]))}}stage('QA') { steps {dir("${CodePath}"){script{tools.printVar("sonar scanner! ${PATH}", 'red')//sonar.Scanner("${projectName}", "${projectName}", "${WORKSPACE}/code/gradle/wrapper")}}}}stage('Deploy') { steps {script{tools.printVar("ni hao shara library!", 'red')}}}}post {always {script{println("running")}}aborted {script{println("aborted")gitlab.changeCommitStatus(projectId, "aborted", commitSha, env.accessToken)}}success {script{println("success")gitlab.changeCommitStatus(projectId, "success", commitSha, env.accessToken)}}failure {script{println("failure")gitlab.changeCommitStatus(projectId, "failure", commitSha, env.accessToken)}}}}

jenkins中的配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试和验证
在这里插入图片描述
在这里插入图片描述
结论:可以再优化以下,作为merge请求的门禁。缺点是不好根据状态找到jenkins记录
文章中提到的accessToken获取方法见:https://blog.csdn.net/weixin_44014460/article/details/139195724

关键字:门禁-jenkins的构建状态同步到gitlab提交流水线

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: