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

API接口文档

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

配置pipline流水线

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

在这里插入图片描述

- sharelibs内容

//这是share libs里的
package devops

def 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.accessToken
    gitlab.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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/646194.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Radware Alteon负载均衡-配置证书组

证书组:可以使用证书组将多个服务器证书与虚拟服务相关联。这提供了对服务器名称指示(Server Namelndication,SNI)的支持,允许在相同的IP和端口后面托管多个主机名。使用SNI,浏览器发送请求的主机名,使服务器能够在进行…

滤波电路应用笔记

滤波器 什么是滤波器? 滤波器是一种使某些频率或频带上的电信号通过而阻止其他信号通过的装置。 滤波电路的作用是尽可能减少脉动直流电压中的交流分量,保持其直流分量,降低输出电压的纹波系数,并使波形相对平滑。整流电路的输出…

以前:不会用电脑;现在:不会用AI

购买特价商务机票需要一些策略和灵活性。、 提前规划:商务舱票价通常在出发日期的2-3个月前最便宜。尽早规划您的行程并开始关注票价。 使用比价工具:使用Skyscanner、Kayak等比价网站来比较不同航空公司的商务舱票价。这些网站可以显示多个航空公司的价…

grpc、多集群、多租户

gRPC和服务发现 一个A high-performance, open-source universal RPC framework,高性能、开源的通用 RPC 框架。使用protobuf 语言基于文件定义服务,通过 proto3 工具生成指定语言的数据结构、服务端接口以及客户端 Stub。移动端上面则是基于标准的 HTTP…

使用Java 将字节数组转成16进制的形式

概述 在很多场景下,需要进行分析字节数据,但是我们存起来的字节数据一般都是二进制的,这时候就需要我们将其转成16进制的方式方便分析。比如在做音视频的时候,需要看下我们传输的视频h264数据中是否有对应的I帧或者B帧等数据&…

01JAVA基础

目录 1.基础语法 1.1 注释 1.2 关键字 1.3 常量 1.4 数据类型 1.5 变量 1.6 标识符 1.7 类型转换 2.算数运算符和分支语句 2.1 算数运算符 1.常规运算符 2.赋值运算符 3.自增自减 4.关系运算符 5.逻辑运算符 6.三元运算符 2.2 数据输入(Scanner) 2.3 分支判断…

自定义类型:结构体详解

1.结构体 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。一个整型数组,它的每个数组元素只能是整型,字符型的数组它的每个元素只能是字符型。但是结构体的每个成员可以是各种不同类型的变量。 1.2结构的声明 //声明 struct t…

【java程序设计期末复习】chapter1 java入门

java入门 java的特点 (1)简单 Java要比C简单,C中许多容易混淆的概念,或者被Java弃之不用了,或者以一种更清楚更容易理解的方式实现 (2)面向对象 Java是面向对象的编程语言 (3&…

【数据结构(邓俊辉)学习笔记】二叉树02——遍历

文章目录 0.概述1. 先序遍历1.1 递归版1.1.1 实现1.1.2 时间复杂度1.1.3 问题 1.2 迭代版11.3 迭代版21.3.1 思路1.3.2 实现1.3.3 实例 2. 中序遍历2.1 递归形式2.2 迭代形式2.2.1 观察2.2.2 思路(抽象总结)2.2.3 构思 实现2.2.4 分摊分析 3. 后序遍历3…

world machine学习笔记(4)

选择设备: select acpect: heading:太阳的方向 elevation:太阳的高度 select colour:选择颜色 select convexity:选择突起(曲率) select height:选择高度 falloff&a…

neo4j开放远程连接

注:本博客所用neo4j版本为社区5.12版 第一步:修改neo4j配置文件 首先找到neo4j的安装位置,点击进入conf文件夹,随后点击neo4j.conf文件,在“Network connector configuration”下面的单元中找到server.default_liste…

Android:使用Kotlin搭建MVVM架构模式

一、简介Android MVVM架构模式 MVVM全称:Model、View、ViewModel; Model:负责数据的请求、解析、过滤等数据层操作,其中Repository: 提供数据的 API(从本地或者网络)。View:负责视图部分展示Vie…

【热门话题】Debian常用命令指南

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 Debian常用命令指南引言1. 文件与目录操作lscdmkdirrmcpmv 2. 包管理aptdpkg 3.…

kubenetes中K8S的命名空间状态异常强制删除Terminating的ns

查看ns状态为异常: 查看ns为monitoring的状态为Termingating状态 使用方法一: kubectl delete ns monitoring --force --grace-period0 使用方法二: kubectl get ns monitoring -o json > monitoring.json 修改删除文件中的"kubern…

BUUCTF-Misc24

从娃娃抓起1 1.打开附件 是两个文本文件 2.电报码 电报码在线翻译网站:https://usetoolbar.com/convert/cccn.html 3.汉字五笔编码 汉字五笔编码在线网站查询:https://www.qqxiuzi.cn/bianma/wubi.php 4.转化为MD5值 将文字保存到文本文档 用winR输入…

PCIe总线-事物层之TLP请求和完成报文格式介绍(六)

1.概述 TLP报文按照类型,可以大致分为4中类型,分别是IO请求报文、存储器请求报文、配置请求报文、完成报文和消息请求报文。IO请求报文可分为IO读请求(不携带数据)和IO写请求(携带数据)。存储器请求报文可…

第 33 次CCF认证

1. 词频统计 题目描述 样例输入 代码 #include <bits/stdc.h>using namespace std;int main() {int n,m;cin>>n>>m;vector<int> ans1(m,0),ans2(m,0);while (n --) {int t;cin>>t;vector<int> vis(m1,0);for (int i 1;i < t;i ) {i…

【Qt】深入探索Qt窗口与对话框:从创建到管理:QDockWidget(浮动窗口)、QDialog(对话框)

文章目录 前言&#xff1a;1. 浮动窗口2. 对话框介绍2.1. 示例&#xff1a;主窗口中&#xff0c;通过点击按钮&#xff0c;弹出一个新的对话框。2.2. 创建自定义对话框2.2.1. 纯代码的方式2.2.2. 图形化界面的方式 3. 模态对话框 和 非模态对话框4. Qt 内置对话框4.1. 消息对话…

创新实训2024.05.26日志:落地基于硬盘的数据库服务

1. 需求任务列表 以下描述易学大模型软件的web应用的功能。 用户注册 用户邮箱&#xff0c;密码&#xff0c;验证码开启官方邮箱&#xff0c;用来发验证码&#xff08;QQ 网易都支持开启smtp协议&#xff0c;找教程&#xff0c;用邮箱不用手机号是为了省买发短信云服务的钱&a…