基于gitlab的webhook集成jenkins,并在gitlab流水线中展示jenkins的job状态信息

文章目录

    • 1. 环境信息
    • 2. gitlab 部署
    • 3. jenkins部署
    • 4. gitlab集成jenkins
      • 4.1 jenkins的凭据上保存gitlab的账号信息
      • 4.2 jenkins中配置gitlab的连接信息
      • 4.3 编写jenkins上pipeline文件
      • 4.4 jenkins上创建pipeline项目
      • 4.5 gitlab上配置webhooks事件
      • 4.6 测试

1. 环境信息

gitlab服务器: 4C8G

  • 系统OS:Ubuntu 22.04.3 LTS
  • gitlab:gitlab-jh-16.6

jenkins服务器: 4C8G

  • jenkins : Version 2.426.1
  • jenkins Plugin - GitLab Plugin:1.7.16
  • Docker:version 25.0.0-beta.1, build 2b521e4

2. gitlab 部署

  • 参考安装私有化部署版GitLab

3. jenkins部署

  • 参考Jenkins安装和插件管理与应用

本案例基于docker部署jenkins,并安装GitLab Plugin,安装操作如下:

mdkir /home/ubuntu/jenkins_home
chown -R 1000:1000 /home/ubuntu/jenkins_home
docker pull jenkins/jenkins:latest
docker tag jenkins/jenkins:latest jenkins/jenkins:2.426.1
docker run -itd -p 8080:8080  --restart=always --name=jenkins -v /home/ubuntu/jenkins_home/:/var/jenkins_home jenkins/jenkins:2.426.1

4. gitlab集成jenkins

  • 参考With a webhook

4.1 jenkins的凭据上保存gitlab的账号信息

可以是用户名和密码,也可以是个人token,建议两个都保存下即可,后面会有用到。
在这里插入图片描述

4.2 jenkins中配置gitlab的连接信息

此处需要gitlab的令牌token,并需要通过`Test Connection
在这里插入图片描述

4.3 编写jenkins上pipeline文件

updateGitlabCommitStatus 可以将jenkins的构建信息写到gitlab的流水线中

pipeline {
    agent any

    stages {
        stage('pull code') {
            steps {
                script{
                    try{
                        updateGitlabCommitStatus name: 'code-checkout', state: 'running'
                        git branch: 'master', credentialsId: 'gitlab', url: 'http://192.168.31.100/ops/spring.git'
                        sh ''' env '''
                        updateGitlabCommitStatus name: 'code-checkout', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-checkout', state: 'failed'
                    }
                }
            }
        }
        stage('build') {
            steps {
                script{
                    try{
                        updateGitlabCommitStatus name: 'code-build', state: 'running'
                        sh '''
                        ls -l
                        sleep 10
                        env
                        '''
                        updateGitlabCommitStatus name: 'code-build', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-build', state: 'failed'
                    }
                }
            }
        }
        stage('test') {
            steps {
                script{
                    try{
                        updateGitlabCommitStatus name: 'code-test', state: 'running'
                        sh '''
                        ls -l
                        sleep 20
                        env
                        '''
                        updateGitlabCommitStatus name: 'code-test', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-test', state: 'failed'
                    }
                }
            }
        }
        stage('deploy') {
            steps {
                script{
                    try{
                        updateGitlabCommitStatus name: 'code-deploy', state: 'running'
                        sh '''
                        ls -l
                        sleep 30
                        env
                        '''
                        updateGitlabCommitStatus name: 'code-deploy', state: 'success'
                    } catch (e) {
                        updateGitlabCommitStatus name: 'code-deploy', state: 'failed'
                    }
                }
            }
        }
    }
}

4.4 jenkins上创建pipeline项目

项目的描述信息
在这里插入图片描述
选择Build when a change is pushed to GitLab-pened Merge Request Events
在这里插入图片描述
点击Generate,并记录Secret token
在这里插入图片描述
将pipeline文件里面的信息粘贴进去
在这里插入图片描述

4.5 gitlab上配置webhooks事件

选择你需要配置的项目 - 设置 - webhooks - 添加

在这里插入图片描述
webhooks的测试
在这里插入图片描述

4.6 测试

由于jenkins上的Build Triger 我们选择的是Build when a change is pushed to GitLab-pened Merge Request Events,因为我们可以创建一个mr来触发

此图为展示效果图,主要展示流水线再mr创建后,通过webhooks将mr的信息发送给jenkins,然后jenkins构建job,并将job的信息返回给gitlab,所以可以gitlab侧看到jenkins中的job的信状态息。
在这里插入图片描述
流水线的运行和webhooks的触发
在这里插入图片描述
在这里插入图片描述
可以在gitlab的pipeline上看到jenkins的构建信息
在这里插入图片描述

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

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

相关文章

数据结构复习:链表、数组、栈、队列、哈希表、堆、二叉树

数据结构复习:链表、数组、栈、队列、哈希表、堆、二叉树 时间复杂度 链表 在链表中,数据的添加和删除都较为方便,访问比较耗时间 每个数字都有一个“指针”,指向下一个数据内存地址。 数据无需存储在连续空间 访问某个数据&a…

高精度加法,减法,乘法,除法(上)(C语言)

前言 加,减,乘,除这些运算我们自然信手捏来,就拿加法来说,我们要用c语言编程算ab的和,只需让sum ab即可,可是这是局限的,我们都知道int的表示的最大值为2147483647(32位…

java单人聊天

服务端 package 单人聊天;import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import…

23款奔驰E350eL升级小柏林音响 13个扬声器 590w

小柏林之声音响是13个喇叭1个功放,功率是590W,对应普通音响来说,已经是上等了。像著名的哈曼卡顿音响,还是丹拿音响,或者是BOSE音响,论地位,论音质柏林之声也是名列前茅。 升级小柏林音响&#…

LC-1466. 重新规划路线(DFS、BFS)

1466. 重新规划路线 中等 n 座城市,从 0 到 n-1 编号,其间共有 n-1 条路线。因此,要想在两座不同城市之间旅行只有唯一一条路线可供选择(路线网形成一颗树)。去年,交通运输部决定重新规划路线&#xff0c…

相交链表(LeetCode 160)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:暴力法方法二:哈希表方法三:双栈方法四:双指针:记录链表长度方法五:双指针:互换遍历 5.实现示例参考文献 1.问题描述 给两个单链表的…

短视频账号剪辑矩阵+无人直播系统源头开发

抖去推爆款视频生成器,通过短视频矩阵、无人直播,文案引流等,打造实体商家员工矩阵、用户矩阵、直播矩阵,辅助商家品牌曝光,团购转化等多功能赋能商家拓客引流。 短视频矩阵通俗来讲就是批量剪辑视频和批量发布视频&am…

Java 对接智谱 AI(官方 sdk 是真垃圾)

官方 sdk 狗屎。 一堆密钥不知道啥玩意,文档也没写好。 python 版本的就不清楚,应该支持会比较好,果然做 ai 应用后端开发还是得使用 python 比较好。 那么要如何对接智谱 AI 呢?用小博哥的这个版本,虽然不是官方的…

光伏基础知识

快速了解国内光伏历史 美国是最早制定光伏发电的发展规划的国家,国内从1958年开始专注于太阳电池的研究,到1971年3月首次将太阳电池成功地应用于我国第2颗卫星上,再到1979年开始生产单晶硅太阳电池,直到20世纪90年代中期后光伏发…

ElasticSearch篇---第六篇

系列文章目录 文章目录 系列文章目录前言一、ElasticSearch中的副本是什么?二、ElasticSearch中的分析器是什么?三、什么是ElasticSearch中的编译器?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女…

技术培训邀请函|云时代数据安全建设和实践

在数字化变革时代,云计算渗透到各个行业和领域中,赋能业务创新发展,但机遇与挑战并存。数据作为战略性资产和核心生产要素,在混合多云环境面临着日益严峻的安全风险和越来越多的合规要求。如何实现有效的数据安全保护,…

C++新经典模板与泛型编程:萃取技术中的值萃取

传入一种类型&#xff0c;萃取出另外一种类型 #include <iostream>template<typename T> struct SumFixedTraits;template<> struct SumFixedTraits<char> {using sumT int; };template<> struct SumFixedTraits<int> {using sumT __int…

【华为网络-配置-025】- 同 VLAN 下不同网段通信(启用 Sub 地址)

要求&#xff1a; 1、各接口配置 VLAN 后配置 Sub 地址使 PC1 与 PC3 通信。 一、sub 地址配置 [LSW1]vlan 10 [LSW1]port-group group-member GigabitEthernet 0/0/1 to GigabitEthernet 0/0/2 [LSW1-port-group]port link-type access [LSW1-port-group]port default vla…

2023年【起重机械指挥】考试题库及起重机械指挥考试内容

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试题库根据新起重机械指挥考试大纲要求&#xff0c;安全生产模拟考试一点通将起重机械指挥模拟考试试题进行汇编&#xff0c;组成一套起重机械指挥全真模拟考试试题&#xff0c;学员可通过起重机械指挥…

Node.js版本管理工具NVM(Node Version Manager)的使用

nvm简介 nvm&#xff08;Node Version Manager&#xff09;是一个用于管理 Node.js 版本的工具。它可以让你在同一台计算机上安装并切换多个 Node.js 版本&#xff0c;非常方便。 如何安装 nvm 下载 nvm 安装包 访问 nvm下载地址 &#xff0c;根据你的操作系统选择对应的安…

“触底”来临?!看看专家怎么说!鼎捷2023年H2半导体行业观察报告火热出炉!

半导体行业周期性“触底”&#xff0c;喊了半年多。如今“底”在哪&#xff1f; 面对业内争议颇多的“V”字拐点是否到来&#xff0c;可以盖棺定论&#xff1f; 不确定的因素依然存在。 但多种迹象表明&#xff0c;半导体行业的回暖趋势已逐渐明朗&#xff01; 用数据说话&…

小型洗衣机什么牌子好又便宜?目前口碑最好的迷你洗衣机

随着大家工作的压力越来越大&#xff0c;下了班之后只能想躺平&#xff0c;在洗完澡之后看着还需要手洗的内衣裤真的很头疼。有些小伙伴还有会攒几天再丢进去洗衣机里面一起&#xff0c;而且这样子是非常不好的&#xff0c;用过的内衣裤长时间不清洗容易滋生细菌&#xff0c;而…

MBA-历年数学条件充分判断

已知p&#xff0c;q 为非零实数. 则能确定的值. (1)pq1 &#xff08;2&#xff09; 1. pq1 ; p 1-q ; ;无法确定 1&#xff1b;q ; * * 1;可以确定 信封中装有10张奖券&#xff0c;只有1张有奖.从信封中同时抽取2张奖券&#xff0c;中奖的概率记为 P;从信…

【NLP】如何管理大型语言模型 (LLM)

什么是LLM编排&#xff1f; LLM 编排是管理和控制大型语言模型 (LLM)的过程&#xff0c;以优化其性能和有效性。这包括以下任务&#xff1a; 提示LLM&#xff1a;生成有效的提示&#xff0c;为LLMs提供适当的背景和信息以产生所需的输出。链接LLM&#xff1a; 结合多个LLM的输…

决战排序之巅(一)

决战排序之巅 插入排序直接插入排序 void InsertSort(int* arr, int n)希尔排序 void ShellSort(int* arr, int n)测试插入排序测试函数 void verify(int* arr, int n)测试 InsertSort测试 ShellSort测试速度 InsertSort & ShellSort 选择排序直接选择排序 void SelectSort…