4. 持續(xù)集成工具-Jenkins

一栖博、概述

1.1 什么是Jenkins

  • Jenkins 是一個開源持續(xù)集成的工具捷泞,是由JAVA 開發(fā)而成。
  • Jenkins 是一個調(diào)度平臺,本身不處理任何事情假瞬,調(diào)用插件來完成所有的工作践磅。

1.2 Jenkins作用圖

二蛉艾、Jenkins快速部署

Jenkins部署可參考Jenkins官方安裝文檔

2.1 安裝JDK環(huán)境

[root@jenkins ~]# yum -y install java
[root@jenkins ~]# rpm -qa java-1.8.0-openjdk
java-1.8.0-openjdk-1.8.0.322.b06-1.el7_9.x86_64

2.2 部署Jenkins(LTS版)

#下載jenkins源
[root@jenkins ~]# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
[root@jenkins ~]# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

#安裝jenkins
[root@jenkins ~]# yum install jenkins -y
[root@jenkins ~]# rpm -qa jenkins
jenkins-2.319.3-1.1.noarch

#啟動jenkins并設(shè)置開機自啟
[root@jenkins ~]# systemctl start jenkins
[root@jenkins ~]# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on     #這里并沒有報錯照棋,只是說明jenkins通過chkconfig設(shè)置開機自啟

2.3 jenkins目錄結(jié)構(gòu)

[root@jenkins ~]# rpm -ql jenkins
/etc/init.d/jenkins                         #jenkins啟動與停止腳本
/etc/logrotate.d/jenkins                    #jenkins日志切割配置文件
/etc/sysconfig/jenkins                      #jenkins配置文件  
/usr/lib/jenkins                            #jenkins的war包目錄
/usr/lib/jenkins/jenkins.war                #war包(升級jenkins替換war包即可)
/usr/sbin/rcjenkins                         #jenkins啟動與停止腳本(軟鏈接)
/var/cache/jenkins                          #jenkins緩存目錄
/var/lib/jenkins                            #jenkins主要配置,插件目錄
/var/log/jenkins                            #日志文件目錄

2.4 Jenkins主配置文件

[root@jenkins ~]# egrep -v "^$|^#" /etc/sysconfig/jenkins
JENKINS_HOME="/var/lib/jenkins"
#jenkins配置泳梆、插件目錄

JENKINS_JAVA_CMD=""
#運行Jenkins的JAVA可執(zhí)行文件

JENKINS_USER="jenkins"
#運行jenkins的用戶

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
#運行Jenkins時傳遞給java的選項

JENKINS_PORT="8080"
#jenkins監(jiān)聽的端口

JENKINS_LISTEN_ADDRESS=""
#jenkins監(jiān)聽的ip鳖悠,默認(rèn)0.0.0.0

JENKINS_HTTPS_PORT=""
JENKINS_HTTPS_KEYSTORE=""
JENKINS_HTTPS_KEYSTORE_PASSWORD=""
JENKINS_HTTPS_LISTEN_ADDRESS=""
#這四項都是https的配置

JENKINS_HTTP2_PORT=""
JENKINS_HTTP2_LISTEN_ADDRESS=""
#http2的配置

JENKINS_DEBUG_LEVEL="5"
#日志運行級別,越大顯示與詳細(xì)

JENKINS_ENABLE_ACCESS_LOG="no"
#訪問日志

JENKINS_HANDLER_MAX="100"
#HTTP工作線程的最大數(shù)量

JENKINS_HANDLER_IDLE="20"
#最大空閑HTTP工作線程數(shù)

JENKINS_EXTRA_LIB_FOLDER=""
#將jar文件添加到Jetty類加載器的文件夾优妙,默認(rèn)關(guān)閉

JENKINS_ARGS=""
#添加任意的參數(shù)到j(luò)enkins

2.5 解鎖jenkins

瀏覽器訪問10.0.0.76:8080


[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
d0648f37d6324b118484ad5ca1c50313     #將次內(nèi)容復(fù)制到上圖的管理員密碼中繼續(xù)

開始使用時先修改以下密碼



用戶名:admin
密碼:12345678

2.6 安裝插件

三種安裝方式:

1. 聯(lián)網(wǎng)安裝 通過互聯(lián)網(wǎng)下載插件
    1) 需要知道插件名稱 ( 需要知道要集成哪些軟件或服務(wù); )
    2) 在哪個位置進行插件安裝 Manage Jenkins --> Mange Plugins
    注意:
        1) 安裝會比較的慢;需要等很久;
        2) 如果出現(xiàn)警告,要看提示; 不要盲目升級,很容易造成 Jenkins連帶升級, 會出現(xiàn)其他很多插件無法使用;
2. 下載 .hpi 文件安裝
    https://mirror.tuna.tsinghua.edu.cn/jenkins/plugins/git/latest/git.hpi
3. 導(dǎo)入插件
    將此前已經(jīng)安裝好的插件; 備份下來; 然后恢復(fù);
        問題: 插件存儲在哪個路徑下: /var/lib/jenkins/plugins/

三乘综、jenkins與shell集成

通過運行jenkins選擇

dev #開發(fā)環(huán)境
prod #生產(chǎn)環(huán)境

jenkins執(zhí)行腳本

case "$env" in
    dev)  echo "部署到測試環(huán)境" ;;
    prod) echo "部署到生產(chǎn)環(huán)境" ;;
esac





四、jenkins與gitlab集成

4.1 與gitlab集成全流程

  1. 書寫并提交代碼:開發(fā)提交代碼至Gitlab
  2. 插件(gitlab) Jenkins安裝gitlab所需插件
  3. 創(chuàng)建任務(wù):Jenkins創(chuàng)建freestyle項目套硼,然后配置gitlab倉庫項目對應(yīng)地址卡辰。
    3.1 在Jenkins服務(wù)器上解析gitlab地址
    3.2 在jenkins上面創(chuàng)建 密鑰對 : 公鑰發(fā)gitlab項目對應(yīng)的用戶, 私鑰jenkins web頁面添加保存
    3.3 配置gitlab地址和分支
  4. web:jenkins構(gòu)建

4.2 全流程實施

這里使用gitlab上的zhibo.html代碼



安裝插件

Git client plugin                 #git 客戶端插件為 Jenkins 插件提供了 git 應(yīng)用程序編程接口 (API)
Git plugin                        #git 插件為 Jenkins 項目提供了基本的 git 操作
GitLab Authentication plugin      #GitLab OAuth 插件提供了一種通過將身份驗證和授權(quán)卸載到 GitLab 來保護 Jenkins 實例的方法
GitLab Plugin                     #此插件允許 GitLab 在提交代碼或打開/更新合并請求時觸發(fā) Jenkins 中的構(gòu)建。
Credentials Plugin                #在jenkins中存儲認(rèn)證的憑證
Generic Webhook Trigger           #允許gitlab自動觸發(fā)jenkins構(gòu)建項目

在jenkins上配置gitlab的域名解析

[root@jenkins ~]# echo "10.0.0.75 gitlab.xiaoyu.com" >> /etc/hosts

jenkins與gitlab密鑰驗證

#在jenkins上生成密鑰對
[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:1TKJUJ0JIjyF0DAJzYdMAdm01S4khByDxJNfmFDFZ50 root@jenkins
The key's randomart image is:
+---[RSA 2048]----+
|B^&XB=+.+o.o     |
|+=X*B+.= E+o     |
|  ++.oo . = .    |
|   .. .  . o     |
|     .  S        |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub    #這個是公鑰
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCVxy+TIG7OqUiPSXsoxrQD/A7awoVx7vta5eepZO8BdRjsVsws1JbLCJ7wvGZro+vhLikNkAMlcs7YFpvLYr9T3IfIr4tk7BP1BzMu+umuhGDoB5HF3orBDgcDIwyqVkGlg7pAP89fnwCrYAcQ9Q9/hGRpLeKFCAma6br3UTVQXg84zZAkv4fAamtL88/chiAGcLdRAxNbghHXsRbuUpALNXMC7xfBjDbcrn499hClKFfzM5PRST/ZYgncaLvDLiBNSykZb6mXUwMdwgh0ZCcfv2Ab2uGz2ITOvuV7vs9QIis9SBZ+zutlyTqhNJz/oyFkx98Jgdtcl7eyy/f4zsIH root@jenkins
[root@jenkins ~]# cat /root/.ssh/id_rsa      #這個是私鑰
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAlccvkyBuzqlIj0l7KMa0A/wO2sKFce77WuXnqWTvAXUY7FbM
LNSWywie8Lxma6Pr4S4pDZADJXLO2Baby2K/U9yHyK+LZOwT9QczLvrproRg6AeR
xd6KwQ4HAyMMqlZBpYO6QD/PX58Aq2AHEPUPf4RkaS3ihQgJmum691E1UF4POM2Q
JL+HwGprS/PP3IYgBnC3UQMTW4IR17EW7lKQCzVzAu8XwYw23K5+PfYQpShX8zOT
0Uk/2WIJ3Gi7wy4gTUspGW+pl1MDHcIIdGQnH79gG9rhs9iEzr7le77PUCIrPUgW
fs7rZck6oTSc/6MhZMffCYHbXJe3ssv3+M7CBwIDAQABAoIBAFh3vJwUjh63Usp/
xqVBKNcprMR+HUA8vm7kWT9vBNVBiyUd55+bOi5WuzrKrVxrCEqLb2g5ZgJam957
DC7H9ubb3cAmIBnOb8NNK2hWgGy6eFrVDb9oQWDinjW2ICcEp+XRttN4XU7HpieT
otjbRvo1AvI1ThTxuGquH+cxKmJ7JQJCcVK2fT7U2O2abdXurOmZt2eMZWxpv26B
U2MNo9RTfRL9/TovXoy6PCXelaeUwG+mNIbvzqbp0P/QJIbUl71eLvC2NF3eMQG3
y1dCKJ5pqpVJRqE4dQPtfAdQebXCb79Tx7OYPrnADYKWi3EzZBnfLDqHxyglGNHI
0Sn0V0ECgYEAxVub7c2yGzS8sYjOn5pRrFXQ2rOlDBvpe+b568rczfs2dnKK/8CD
e/YRQitmOSkvvFfddB+m7/rMsomC40RYfAgEGbfMaR5t2cDlSoU3KcZ7vyNflee8
LFiTtCx43lAutM8UAF6iZsOxmzvEy16efQA9055V8ZkcjN4lpUeZd1ECgYEAwkhV
JnPVrKH9v3W/afNRfemIv5L1lcJb+CwZBPAOB5F5rhnVluKfTz/PFGspZ7tjyFK3
6BT2mCXYTsgrj4SiMyhJFOrbDCyI2P+waakyhOdlFdxSvnfgd6Wzn/UvDXz+caTf
N9Fe1G3UOZm1MSO+cLHrXWzdT03r+8PGZ4TZfdcCgYA+3zZHhbXtsNlD/X9FnRXT
vurwITa9Ks8w555Kna/F9vecuFTLsPqyLOvGlqjUIOjSKXOlIMg/vzgi0GfgGs/N
g4g64TC/dDAupKLnIJU4O8EEXTKAQPjTb8xuI5TFzelzNFz82SkHb+ROvbWtzBDV
ZZRMrC5Y7xwHTGXVx39+YQKBgDk0lSXyW4suU4npgMgQpgEeH27RNdC33t6vFVrX
2DmwQxTZdIOuDNyH3FCV0SZDDflxKceDTKy2D//6fqEOm7fWd9ZZ5M+r2UuT1fz2
nfJ2M9SBADgnEggI2WATEJy3HjCWLEfCNVr1T9T6BlkGvk9ug/AJWwy70+1Y0vWu
L2AXAoGAIIg3j3awtS/JT4G745isOFEjgh6p3IvyiGRyQ7rh5BOwfcsUuk5rXWig
JL8PU6Ih4026n+TI8ZNDDj0tQmGF/3xzBPqF1K2nze/TsnR0cY0UXOhHFSuAEd3b
O/MBiaXa/0ezRYU2h4uqPT3tn6DQ/1D5ZDUoQ/Mzem95RJNFzl0=
-----END RSA PRIVATE KEY-----

將公鑰放到gitlab上


image.png

私鑰配置在jenkins上




注意這里有一些報錯熟菲,有一個報錯沒記下來看政,原因是jenkins服務(wù)端我沒有安裝git造成的




進行構(gòu)建,查看控制臺輸出

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抄罕,一起剝皮案震驚了整個濱河市允蚣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呆贿,老刑警劉巖嚷兔,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異做入,居然都是意外死亡冒晰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門竟块,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壶运,“玉大人,你說我怎么就攤上這事浪秘〗椋” “怎么了埠况?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棵癣。 經(jīng)常有香客問我辕翰,道長,這世上最難降的妖魔是什么狈谊? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任喜命,我火速辦了婚禮,結(jié)果婚禮上河劝,老公的妹妹穿的比我還像新娘壁榕。我一直安慰自己,他們只是感情好丧裁,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布护桦。 她就那樣靜靜地躺著含衔,像睡著了一般煎娇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贪染,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天缓呛,我揣著相機與錄音,去河邊找鬼杭隙。 笑死哟绊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痰憎。 我是一名探鬼主播票髓,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼铣耘!你這毒婦竟也來了洽沟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蜗细,失蹤者是張志新(化名)和其女友劉穎裆操,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炉媒,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡踪区,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了吊骤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缎岗。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖白粉,靈堂內(nèi)的尸體忽然破棺而出传泊,到底是詐尸還是另有隱情茅郎,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布或渤,位于F島的核電站系冗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏薪鹦。R本人自食惡果不足惜掌敬,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望池磁。 院中可真熱鬧奔害,春花似錦、人聲如沸地熄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽端考。三九已至雅潭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間却特,已是汗流浹背扶供。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留裂明,地道東北人椿浓。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像闽晦,于是被迫代替她去往敵國和親扳碍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容