jenkins集成gitlab实现自动构建

jenkins集成gitlab实现自动构建

前面我们已经部署了Jenkins和gitlab,本文介绍将二者结合使用

项目源码上传至gitee提供公网访问:https://gitee.com/ye-xiao-tian/my-webapp

1、创建一个群组和项目

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

2、添加ssh密钥

#生成密钥
[root@gitlab ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:HJjcMIYHlwUFFK6gg3stiFTEyQ6fODeYED8YfcggOUU root@gitlab
The key's randomart image is:
+---[RSA 2048]----+
|=OEoo+XBo        |
|===+o=o*         |
|o.@o..= o        |
|.*.O . . .       |
|+.o o   S        |
|o+ .             |
|+ o .            |
| . .             |
|                 |
+----[SHA256]-----+
[root@gitlab ~]# ll .ssh/
total 8
-rw-------. 1 root root 1675 May 22 09:33 id_rsa #私钥
-rw-r--r--. 1 root root  393 May 22 09:33 id_rsa.pub #公钥
[root@gitlab ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDWTLxhCGI7yBFlfv8taFULt4yCLni4z3apIMqXUrKZXzieoM6SRk6VtNEOc0H+mGlEa42gAdrJjZy93/Po4fWI63NHQbzmvUXlbWxV6SePrrZuijafDpKJnZB1fyvmujAU2pYXX8ZdfpAPK5Y0OGGwkRAHWw9I2VGMjtNAHR2XIXTFZSL73rPww2gpqay6n5/JP2z+EmaViRVHKHt8G4oS2XYVK06iKhYCfEOF1UIf3uam77jc17A/v7MCyxExP8pNC9wsY5Z/t/zp9k5Sy5m4Is2nveiuk4uy+QVYFbISC3rVz2grYQ8sInBT3Py09fdJpA6/Ta/kIwe5P3pr9gI/ root@gitlab

3、将公钥贴近gitlab

在这里插入图片描述

4、推送本地代码

#上传本地代码至gitlab
[root@gitlab my-webapp]# pwd
/root/data/my-webapp
[root@gitlab my-webapp]# ll
total 4
-rw-r--r--. 1 root root 1032 May 22 09:14 pom.xml
drwxr-xr-x. 3 root root   18 May 22 09:14 src#初始化代码
[root@gitlab my-webapp]# git init
Initialized empty Git repository in /root/data/my-webapp/.git/#配置邮件
[root@gitlab my-webapp]# git config --local user.name "Administrator"
[root@gitlab my-webapp]# git config --local user.email "gitlab_admin_0cd627@example.com"#上传
[root@gitlab my-webapp]# git add .
[root@gitlab my-webapp]# git commit -m "第一次上传"
[root@gitlab my-webapp]# git remote add origin http://192.168.232.135:1000/ops/my-webapp.git#账号为root
#密码前面重置的密码
[root@gitlab my-webapp]# git push origin master
Username for 'http://192.168.232.135:1000': root
Password for 'http://root@192.168.232.135:1000': 
Counting objects: 13, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (13/13), 1.54 KiB | 0 bytes/s, done.
Total 13 (delta 0), reused 0 (delta 0)
remote: 
remote: To create a merge request for master, visit:
remote:   http://192.168.232.135:1000/ops/my-webapp/-/merge_requests/new?merge_request%5Bsource_branch%5D=master
remote: 
To http://192.168.232.135:1000/ops/my-webapp.git* [new branch]      master -> master
  • 页面查看上传的代码 (切换:master分支)

5、配置jenkins和gitlab的免密

5.1 jenkins容器生成密钥

[root@localhost ~]# docker exec -it -uroot jenkins bash
root@113b3ee555be:/# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:Lk51oldcp/ZfdUyj2AuFHLpd3pM9K7X1OXGKrOZ0kkM root@113b3ee555be
The key's randomart image is:
+---[RSA 3072]----+
|           .     |
|          o o    |
|         . o.o...|
|         .o.*ooo+|
|        S.E+o+ BB|
|       + = +.oo.&|
|      + o = +oo=o|
|     o o ..=  ..o|
|      .  oo     .|
+----[SHA256]-----+
root@113b3ee555be:/# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCuXKC0sOuYCFOt+V9iyx0NfLXYNdZoXv1LJ392mWZwLltxqjomBUczgiokq9UaU1Q0AwnSSOQI5kKaHEoydDyiqyOrQRUtakIHPdAwGgmUeb5+wWPKdE1PtUEH7OH/i7i7mD+0rK3MDBTRtulGlchxdxKq03RGEHFRfuhtH9elfD/LPDnbo3AcGNy4SPfm1v93Whq65IMo71Wb1+1voEv2WV3nKeUWF/C48O38x2TDapIotLPLlIMEDOL3BuN2Q7N6JqXbd8ZS9ttgMZ+m3eS5pHpOq3UFZpypXj36mCmBJrVq0vdEitooYzcQkLptzSSdZ6BOwWzWrl080Ca2RTdICPxaAAbNi4HBTXC29esHDz5pm20gcjfGFTVpVJ/YlY2/HimYzgP7AMG8rAF8AwGblhiiLvFadc7mAMnHmRwrwk0BaML7q9Pz4QmJ90/OLg3WwPqM26f3EgyJsZCCZY58keVIU9rprJO+1/B2JiIuU62HNWjN8Fksxl2vGVpTL40= root@113b3ee555be
  1. 2 将公钥加入gitlab

在这里插入图片描述

5.3 测试拉去代码

root@113b3ee555be:~# git clone git@192.168.232.135:ops/my-webapp.git
Cloning into 'my-webapp'...
remote: Enumerating objects: 16, done.
remote: Total 16 (delta 0), reused 0 (delta 0), pack-reused 16 (from 1)
Receiving objects: 100% (16/16), 4.32 KiB | 4.32 MiB/s, done.
root@113b3ee555be:~# ls
apache-maven-3.8.8  apache-maven-3.8.8-bin.tar.gz  my-webapp
#切换mater分支
root@113b3ee555be:~/my-webapp# git checkout master
branch 'master' set up to track 'origin/master'.
Switched to a new branch 'master'
root@113b3ee555be:~/my-webapp# ls
pom.xml  src

6、配置jenkins拉去gitlab代码

6.1 jenkins创建项目

在这里插入图片描述

6.2 点击立即构建

在这里插入图片描述

  • 控制台输出查看日志 success表示成功

    在这里插入图片描述

6.3 服务器查看代码已成功拉去至Jenkins工作目录

root@113b3ee555be:~# ls -ll /var/jenkins_home/workspace/my-wenapp/
total 4
-rw-r--r--. 1 jenkins jenkins 1032 May 24 23:17 pom.xml
drwxr-xr-x. 3 jenkins jenkins   18 May 24 23:17 src
drwxr-xr-x. 6 jenkins jenkins  165 May 24 23:18 target
#maven构建成功后jar包
root@113b3ee555be:~# ls -ll /var/jenkins_home/workspace/my-wenapp/target/
total 19296
drwxr-xr-x. 3 jenkins jenkins       47 May 24 23:18 classes
drwxr-xr-x. 3 jenkins jenkins       25 May 24 23:18 generated-sources
drwxr-xr-x. 2 jenkins jenkins       28 May 24 23:18 maven-archiver
drwxr-xr-x. 3 jenkins jenkins       35 May 24 23:18 maven-status
-rw-r--r--. 1 jenkins jenkins 19751142 May 24 23:18 my-webapp-1.0-SNAPSHOT.jar
-rw-r--r--. 1 jenkins jenkins     3199 May 24 23:18 my-webapp-1.0-SNAPSHOT.jar.original#将java查询放在后台运行
root@d91c10166cdf:~# cd /var/jenkins_home/workspace/my-wenapp/target/
root@d91c10166cdf:/var/jenkins_home/workspace/my-wenapp/target# ls
classes  generated-sources  maven-archiver  maven-status  my-webapp-1.0-SNAPSHOT.jar  my-webapp-1.0-SNAPSHOT.jar.original
root@d91c10166cdf:/var/jenkins_home/workspace/my-wenapp/target# nohup java -jar my-webapp-1.0-SNAPSHOT.jar > my-webapp.log 2>&1 &
[1] 81#查看进程
root@d91c10166cdf:/var/jenkins_home/workspace/my-wenapp/target# ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
jenkins       1      0  0 23:35 ?        00:00:00 /usr/bin/tini -- /usr/local/bin/jenkins.sh
jenkins       7      1 15 23:35 ?        00:00:28 java -Duser.home=/var/jenkins_home -Djenkins.model.Jenkins.slaveAgentPort=50000 -Dhudson.lifecycle=hudson.lifecycle.ExitLifecycle -jar /usr/share/jenkins/jenkins.war
root         54      0  0 23:35 pts/0    00:00:00 bash
root         81     54 62 23:38 pts/0    00:00:13 java -jar my-webapp-1.0-SNAPSHOT.jar
root        111     54  0 23:38 pts/0    00:00:00 ps -ef#访问本地8888端口
[root@localhost ~]# docker exec -it -uroot jenkins bash
root@d91c10166cdf:/# curl 127.0.0.1:8888
Hello! 你已成功第一次访问到8888端口服务!

7、配置webhook自动构建

7.1 jenkins页面配置

7.1.1 安装gitlab插件

在这里插入图片描述

7.1.2 记录webhook的url地址

http://192.168.232.136:8099/project/my-wenap

7.1.3 点击《高级》生产token

在这里插入图片描述

7.2 gitlab页面配置

7.2.1 输入url地址和token,触发来源:所有分支

在这里插入图片描述

7.2.2 点击测试 状态返回值为200,表示成功
在这里插入图片描述

8、修改代码重新提交后,发起自动构建

[root@gitlab ~]# vim data/my-webapp/src/main/java/com/example/controller/DemoController.java 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class DemoController {@GetMapping("/")public String hello() {return "Hello! 你已成功第二次访问到8888端口服务!!";}
}[root@gitlab ~]# cd data/my-webapp/
#拉取远程代码更新合并
[root@gitlab my-webapp]# git pull origin master
From http://192.168.232.135:1000/ops/my-webapp* branch            master     -> FETCH_HEAD[root@gitlab my-webapp]# git add .
[root@gitlab my-webapp]# git commit -m "第二次提交"
[master efb4242] 第二次提交1 file changed, 1 insertion(+), 1 deletion(-)
[root@gitlab my-webapp]# git push origin master
Username for 'http://192.168.232.135:1000': root      
Password for 'http://root@192.168.232.135:1000': 
Counting objects: 17, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (9/9), 678 bytes | 0 bytes/s, done.
Total 9 (delta 1), reused 0 (delta 0)
remote: 
remote: To create a merge request for master, visit:
remote:   http://192.168.232.135:1000/ops/my-webapp/-/merge_requests/new?merge_request%5Bsource_branch%5D=master
remote: 
To http://192.168.232.135:1000/ops/my-webapp.git61dd8c2..efb4242  master -> master
  • 刷新页面自动构建

在这里插入图片描述

#杀手前面的java进程
root@d91c10166cdf:~# kill -9 81#再次启动进程
root@d91c10166cdf:~# cd /var/jenkins_home/workspace/my-wenapp/target/
root@d91c10166cdf:/var/jenkins_home/workspace/my-wenapp/target# ls
classes  generated-sources  maven-archiver  maven-status  my-webapp-1.0-SNAPSHOT.jar  my-webapp-1.0-SNAPSHOT.jar.original
root@d91c10166cdf:/var/jenkins_home/workspace/my-wenapp/target# nohup java -jar my-webapp-1.0-SNAPSHOT.jar > my-webapp.log 2>&1 &
[1] 1073#再次访问
root@d91c10166cdf:/var/jenkins_home/workspace/my-wenapp/target# curl 127.0.0.1:8888
Hello! 你已成功第二次访问到8888端口服务!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

barker-OFDM模糊函数原理及仿真

文章目录 前言一、巴克码序列二、barker-OFDM 信号1、OFDM 信号表达式2、模糊函数表达式 三、MATLAB 仿真1、MATLAB 核心源码2、仿真结果①、barker-OFDM 模糊函数②、barker-OFDM 距离分辨率③、barker-OFDM 速度分辨率④、barker-OFDM 等高线图 四、资源自取 前言 本文进行 …

深入解析 Redis Cluster 架构与实现(一)

#作者:stackofumbrella 文章目录 Redis Cluster特点Redis Cluster与其它集群模式的区别集群目标性能hash tagsMutli-key操作Cluster Bus安全写入(write safety)集群节点的属性集群拓扑节点间handshake重定向与reshardingMOVED重定向ASK重定向…

linux centos 服务器性能排查 vmstat、top等常用指令

背景:项目上经常出现系统运行缓慢,由于数据库服务器是linux服务器,记录下linux服务器性能排查常用指令 vmstat vmstat介绍 vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这…

在IIS上无法使用PUT等请求

错误来源: chat:1 Access to XMLHttpRequest at http://101.126.139.3:11000/api/receiver/message from origin http://101.126.139.3 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 其实我的后…

Python训练第四十一天

DAY 41 简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 →…

Linux线程同步实战:多线程程序的同步与调度

个人主页:chian-ocean 文章专栏-Linux Linux线程同步实战:多线程程序的同步与调度 个人主页:chian-ocean文章专栏-Linux 前言:为什么要实现线程同步线程饥饿(Thread Starvation)示例:抢票问题 …

5.2 初识Spark Streaming

在本节实战中,我们初步探索了Spark Streaming,它是Spark的流式数据处理子框架,具备高吞吐量、可伸缩性和强容错能力。我们了解了Spark Streaming的基本概念和运行原理,并通过两个案例演示了如何利用Spark Streaming实现词频统计。…

Go 即时通讯系统:日志模块重构,并从main函数开始

重构logger 上次写的logger.go过于繁琐,有很多没用到的功能;重构后只提供了简洁的日志接口,支持日志轮转、多级别日志记录等功能,并采用单例模式确保全局只有一个日志实例 全局变量 var (once sync.Once // 用于实现…

「数据采集与网络爬虫(使用Python工具)」【数据分析全栈攻略:爬虫+处理+可视化+报告】

- 第 103 篇 - Date: 2025 - 06 - 01 Author: 郑龙浩/仟墨 文章目录 「据采集与网络爬虫」【使用工具:Python】一 数据采集1 数据采集综述(1)基本介绍(2)数据目标源(3)采集方式(4&am…

响应式系统与Spring Boot响应式应用开发

响应式系统概述 过去十年间,为应对移动和云计算的需求,软件行业通过改进开发流程来构建更稳定、健壮且灵活的软件系统。这种演进不仅服务于传统用户端(桌面/Web),还需支持多样化设备(手机、传感器等)。为应对这些挑战,多个组织共同制定了《响应式宣言》(2014年发布)…

POJO、DTO和VO:Java应用中的三种关键对象详解

在软件开发特别是Java开发中,常常会遇到POJO、DTO和VO这三类对象。它们在不同场景下扮演着重要角色,有助于优化代码结构、增强系统安全性和提升性能。本文将全面解析这三者的定义、区别及常见使用场景,帮助你更好地理解和应用。 1. POJO&…

leetcode付费题 353. 贪吃蛇游戏解题思路

贪吃蛇游戏试玩:https://patorjk.com/games/snake/ 问题描述 设计一个贪吃蛇游戏,要求实现以下功能: 初始化游戏:给定网格宽度、高度和食物位置序列移动操作:根据指令(上、下、左、右)移动蛇头规则: 蛇头碰到边界或自身身体时游戏结束(返回-1)吃到食物时蛇身长度增加…

NLP学习路线图(十三):正则表达式

在自然语言处理(NLP)的浩瀚宇宙中,原始文本数据如同未经雕琢的璞玉。而文本预处理,尤其是其中至关重要的正则表达式技术,正是将这块璞玉转化为精美玉器的核心工具集。本文将深入探讨正则表达式在NLP文本预处理中的原理…

计算机网络(4)——网络层

1.概述 1.1 网络层服务 (1) 网络层为不同主机(Host)之间提供了一种逻辑通信机制 (2)每个主机和路由器都运行网络层协议 发送方:将来自传输层的消息封装到数据报(datagram)中接收方:向传输层交付数据段(segment) 1.2 网络层核心功能 路由选择(routing…

EMO2:基于末端执行器引导的音频驱动虚拟形象视频生成

今天带来EMO2(全称End-Effector Guided Audio-Driven Avatar Video Generation)是阿里巴巴智能计算研究院研发的创新型音频驱动视频生成技术。该技术通过结合音频输入和静态人像照片,生成高度逼真且富有表现力的动态视频内容,值得…

[Redis] Redis:高性能内存数据库与分布式架构设计

标题:[Redis] 浅谈分布式系统 水墨不写bug 文章目录 一、什么是Redis?一、核心定位二、核心优势三、典型应用场景四、Redis vs 传统数据库 二、架构选择与设计1、单机架构(应用程序 数据库服务器)2、应用程序和数据库服务器分离3…

HTML5 视频播放器:从基础到进阶的实现指南

在现代Web开发中,视频播放功能是许多网站的重要组成部分。无论是在线教育平台、视频分享网站,还是企业官网,HTML5视频播放器都扮演着不可或缺的角色。本文将从基础到进阶,详细介绍如何实现一个功能完善的HTML5视频播放器&#xff…

牛客小白月赛117

前言:solveABCF相对简单,D题思路简单但是实现麻烦,F题郭老师神力b( ̄▽ ̄)。 A. 好字符串 题目大意:给定字符串s,里面的字母必须大小写同时出现。 【解题】:没什么好说的&#xff0…

特伦斯 S75 电钢琴:重构演奏美学的极致表达

在数字音乐时代,电钢琴正从功能性乐器升级为融合艺术、科技与生活的美学载体。特伦斯 S75 电钢琴以极简主义哲学重构产品设计,将专业级演奏体验与现代家居美学深度融合,为音乐爱好者打造跨越技术边界的沉浸式艺术空间。 一、极简主义的视觉叙…

GpuGeek 618大促引爆AI开发新体验

随着生成式AI技术迅猛发展,高效可靠的算力资源已成为企业和开发者突破创新瓶颈的战略支点。根据赛迪顾问最新发布的《2025中国AI Infra平台市场发展研究报告》显示,2025年中国生成式人工智能企业应用市场规模将达到629.0亿元,作为AI企业级应用…