Jenkins配合gitlab實現代碼提交觸發構建


一、安裝Jenkins與gitlab服務

 Jenkins安裝:https://www.cnblogs.com/hovin/p/13516574.html

 gitlab安裝:https://www.cnblogs.com/hovin/p/13524323.html

二、Jenkins使用配置

2.1、安裝Gitlab和Blue Ocean插件

2.2、安裝Role-based Authorization Strategy插件

 Role-based Authorization Strategy插件用於角色的權限管理。

 

 新建用戶,系統管理-->管理用戶

 更改認證方式,系統管理 --> 全局安全配置,默認創建的用戶登錄后可以做任何操作,取決於默認的認證授權方式。

 

 創建角色,系統管理 --> Manage and Assign Roles

 對角色分配權限

 將用戶分配到角色

 測試登錄

2.3、郵件配置

(1) 生成授權碼

 在QQ郵箱,設置 --> 賬戶 下,生成授權碼。

(2) 配置 jenkins 管理員郵箱

 Jenkins --> 系統管理 --> 系統配置 --> Jenkins Location。

(3) 發件配置

 Jenkins --> 系統管理 --> 系統配置 --> 郵件通知。

三、gitlab使用配置

3.1、基於ssh key拉取代碼

(1) 生成jenkins服務器的key

[root@jenkins ~]# 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:/jt9h8iR8iRrmY2fQ/IoOqa+QiltEJ1luEEReY91t30 root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
| o+Bo            |
|. *.. . . .      |
| . + + . . o     |
|. . . .   . . E  |
| o .    S    o   |
|. =    .  + =    |
| +      .  ^ o . |
|  .   o ..O O.o .|
|   o++.o oo+oo . |
+----[SHA256]-----+
[root@jenkins ~]# cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsoFGwnuq3pqH8LvIXDXgFHZ1nw9kGB3TZGz99W9uvxoIco8wNW95z0dVZTwrB06fDbOmw0B/p4t9FpnyZOMwgBIkl5C5B2X/fS8h5WWPzXelJOJgcRApTN5qnf7fTQqn+Q+anVxKsQdTGZnhG4Wn4CMZA4nm0dwKYKo+qaYLawxx2YRXImMtyq4NNQVRvALBS1yVxjFjfXsnUAal+e7SUqHGGrHaLgOPlehmDK4yOJFNc+Xx3kQGC4wBxrEcjvrdP0w6I2SDbSaSUC3SxvtiS3O5568NUgXdFXQCN9FcpUoe7ujfbt8nhtAsivwS2Vzmq4nA/79IHp6qwyp1cHjzT root@jenkins

(2) 將key添加到gitlab

(3) 測試key拉取代碼

[root@jenkins ~]# git clone git@192.168.145.37:test-service/test-project.git
Cloning into 'test-project'...
The authenticity of host '192.168.145.37 (192.168.145.37)' can't be established.
ECDSA key fingerprint is SHA256:NjIthsyJF52ZNkDd6/a8BL0DUk8n7fH9tMLJXNKBmLQ.
ECDSA key fingerprint is MD5:03:6e:5d:65:26:32:32:22:3e:68:c2:86:83:4b:da:bf.
Are you sure you want to continue connecting (yes/no)? yes  #第一次連接需輸yes
Warning: Permanently added '192.168.145.37' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 9 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (9/9), done.
[root@jenkins ~]# ll test-project/
total 8
-rw-r--r-- 1 root root 110 Aug 18 10:00 index.html
-rw-r--r-- 1 root root  23 Aug 18 10:00 README.md

3.2、配置jenkins自動拉取代碼

(1) 獲取jenkins服務器的私鑰

[root@jenkins ~]# cat ~/.ssh/id_rsa

(2) jenkins服務器添加證書

 Jenkins --> 系統管理 --> Manage Credentials --> 全局憑據 --> 添加憑據

(3) jenkins 創建 project

 配置 git 項目地址和用戶

(4) 測試構建項目

#本地也有項目了
[root@jenkins ~]# ls /var/lib/jenkins/workspace/test-project
index.html  README.md

四、Jenkins觸發器配置自動構建

(1) 登錄gitLab,生成一個 Personal Access Tokens

 創建后會成生一個Tokens值,復制到jenkins。

(2) 登錄jenkins,添加api token

 Jenkins --> 系統管理 --> Manage Credentials --> 全局憑據 --> 添加憑據。

 然后打開系統管理,進入系統設備,配置gitlab。

(3) jenkins新建一個pipline job

(4) 生成拉取代碼的 pipline 腳本

 點擊流水線語法,可以生成拉取gitlab上代碼的語句,如下所示:

 也可以執行shell命令:

(5) 進入gitlab,進行項目 --> settings --> Integrations

 本地測試會遇到以下錯誤:

 解決辦法如下:

 添加后webhook后,還可以測試連接是否生效:

 jenkins也自動觸發了構建:

 至此,觸發器就已配置成功,開發一旦有提交代碼,就會自動構建。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM