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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83251.shtml
英文地址,請注明出處:http://en.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企業級應用…