Jenkins——持续集成及Jenkins介绍和安装配置(插件,用户权限,凭据,Maven安装打包,配置tomcat用户权限)
持續(xù)集成及Jenkins介紹和安裝配置
- 持續(xù)集成及Jenkins介紹
- 軟件開發(fā)生命周期
- 持續(xù)集成
- 持續(xù)集成的組成要素
- 持續(xù)集成的好處
- Jenkins介紹
- Jenkins安裝和持續(xù)集成環(huán)境配置
- Gitlab代碼托管服務(wù)器安裝
- Gitlab添加組、創(chuàng)建用戶、創(chuàng)建項(xiàng)目
- 源碼上傳到Gitlab倉庫
- Jenkins安裝
- Jenkins插件管理
- Jenkins用戶權(quán)限管理
- Jenkins憑證管理
- 配置憑據(jù) 將gitlab上面的代碼拉取到j(luò)enkins
- 創(chuàng)建用戶密碼類型憑證
- 創(chuàng)建SSH密鑰類型憑據(jù)
- Maven安裝及配置
- 全局工具配置關(guān)聯(lián)JDK和Maven
- 添加Jenkins全局變量
- 測試Maven是否配置成功
- Tomcat安裝和配置
- 配置Tomcat用戶角色權(quán)限
持續(xù)集成及Jenkins介紹
軟件開發(fā)生命周期
軟件開發(fā)生命周期又叫做SDLC(Software Development Life Cycle),它是集合了計(jì)劃、開發(fā)、測試和部署過程的集合
Requirement Analysis(需求分析)
- 這是生命周期的第一階段,根據(jù)項(xiàng)目需求,團(tuán)隊(duì)執(zhí)行一個(gè)可行性計(jì)劃的分析。
- 項(xiàng)目需求可能是公司內(nèi)部或者客戶提出的。這階段主要是對(duì)信息的收集,也有可能是對(duì)現(xiàn)有項(xiàng)目的改善和重新做一個(gè)新的項(xiàng)目。
- 還要分析項(xiàng)目的預(yù)算多長,可以從哪方面受益及布局,這也是項(xiàng)目創(chuàng)建的目標(biāo)。
Design(設(shè)計(jì))
- 第二階段就是設(shè)計(jì)階段,系統(tǒng)架構(gòu)和滿意狀態(tài)(就是要做成什么樣子,有什么功能),和創(chuàng)建一個(gè)項(xiàng)目計(jì)劃。計(jì)劃可以使用圖表,布局設(shè)計(jì)或者文者的方式呈現(xiàn)。
Implementation(實(shí)現(xiàn)/實(shí)施)
- 第三階段就是實(shí)現(xiàn)階段,項(xiàng)目經(jīng)理創(chuàng)建和分配工作給開者,開發(fā)者根據(jù)任務(wù)和在設(shè)計(jì)階段定義的目標(biāo)進(jìn)行開發(fā)代碼。依據(jù)項(xiàng)目的大小和復(fù)雜程度,可以需要數(shù)月或更長時(shí)間才能完成。
Testing(測試)
- 測試人員進(jìn)行代碼測試 ,包括功能測試、代碼測試、壓力測試等。
Evolution(進(jìn)化)
- 最后進(jìn)階段就是對(duì)產(chǎn)品不斷的進(jìn)化改進(jìn)和維護(hù)階段,根據(jù)用戶的使用情況,可能需要對(duì)某功能進(jìn)行修
改,bug修復(fù),功能增加等。
持續(xù)集成
持續(xù)集成( Continuous integration , 簡稱 CI )指的是,頻繁地(一天多次)將代碼集成到主干。
持續(xù)集成的目的,就是讓產(chǎn)品可以快速迭代,同時(shí)還能保持高質(zhì)量。它的核心措施是,代碼集成到主干之前,必須通過自動(dòng)化測試。只要有一個(gè)測試用例失敗,就不能集成。
提交
流程的第一步,是開發(fā)者向代碼倉庫提交代碼。所有后面的步驟都始于本地代碼的一次提交(commit)
測試(第一輪)
代碼倉庫對(duì)commit操作配置了鉤子(hook),只要提交代碼或者合并進(jìn)主干,就會(huì)跑自動(dòng)化測試
構(gòu)建
通過第一輪測試,代碼就可以合并進(jìn)主干,就算可以交付了
交付后,就先進(jìn)行構(gòu)建(build),再進(jìn)入第二輪測試。所謂構(gòu)建,指的是將源碼轉(zhuǎn)換為可以運(yùn)行的實(shí)
際代碼,比如安裝依賴,配置各種資源(樣式表、JS腳本、圖片)等等
測試(第二輪)
構(gòu)建完成,就要進(jìn)行第二輪測試。如果第一輪已經(jīng)涵蓋了所有測試內(nèi)容,第二輪可以省略,當(dāng)然,這時(shí)構(gòu)建步驟也要移到第一輪測試前面
部署
過了第二輪測試,當(dāng)前代碼就是一個(gè)可以直接部署的版本(artifact)。將這個(gè)版本的所有文件打包(tar filename.tar * )存檔,發(fā)到生產(chǎn)服務(wù)器
回滾
一旦當(dāng)前版本發(fā)生問題,就要回滾到上一個(gè)版本的構(gòu)建結(jié)果。最簡單的做法就是修改一下符號(hào)鏈接,指向上一個(gè)版本的目錄
持續(xù)集成的組成要素
- 一個(gè)自動(dòng)構(gòu)建過程, 從檢出代碼、 編譯構(gòu)建、 運(yùn)行測試、 結(jié)果記錄、 測試統(tǒng)計(jì)等都是自動(dòng)完成的, 無需人工干預(yù)。
- 一個(gè)代碼存儲(chǔ)庫,即需要版本控制軟件來保障代碼的可維護(hù)性,同時(shí)作為構(gòu)建過程的素材庫,一般使用SVN或Git。
- 一個(gè)持續(xù)集成服務(wù)器, Jenkins 就是一個(gè)配置簡單和使用方便的持續(xù)集成服務(wù)器
持續(xù)集成的好處
Jenkins介紹
Jenkins 是一款流行的開源持續(xù)集成(Continuous Integration)工具,廣泛用于項(xiàng)目開發(fā),具有自動(dòng)化構(gòu)建、測試和部署等功能。
Jenkins開源幫助我們自動(dòng)構(gòu)建各類項(xiàng)目。Jenkins強(qiáng)大的插件式,使得Jenkins可以集成很多軟件,可以幫助我們持續(xù)集成我們的工程項(xiàng)目。官網(wǎng)
Jenkins的特征
- 開源的Java語言開發(fā)持續(xù)集成工具,支持持續(xù)集成,持續(xù)部署
- 易于安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實(shí)現(xiàn)安裝部署,可方便web界面配置管理
- 消息通知及測試報(bào)告:集成RSS/E-mail通過RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過e-mail通知,生成JUnit/TestNG測試報(bào)告
- 分布式構(gòu)建:支持Jenkins能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測試
- 文件識(shí)別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等
- 豐富的插件支持:支持?jǐn)U展插件,你可以開發(fā)適合自己團(tuán)隊(duì)使用的工具,如git,svn,maven,docker等
Jenkins安裝和持續(xù)集成環(huán)境配置
| 代碼托管服務(wù)器 | 192.168.188.97 | Gitlab-12.9.5 |
| 持續(xù)集成服務(wù)器 | 192.168.188.98 | Jenkins 2.290-1.1,JDK1.8,Maven3.8.1 Git,SonarQube |
| 應(yīng)用測試服務(wù)器 | 192.168.188.99 | JDK1.8,Tomcat8.5 |
Gitlab代碼托管服務(wù)器安裝
下載 Centos7 gitlab 12.9.5社區(qū)版
安裝相關(guān)依賴 yum -y install policycoreutils openssh-server openssh-clients postfix policycoreutils-python設(shè)置postfix開機(jī)自啟,并啟動(dòng),postfix支持gitlab發(fā)信功能 systemctl enable postfix && systemctl start postfix關(guān)閉防火墻 關(guān)閉selinux安全中心將下載的gitlab上傳至服務(wù)器并安裝 rpm -ivh gitlab-ce-12.9.5-ce.0.el7.x86_64.rpm安裝成功
第一次需要修改root賬戶密碼
登陸成功
Gitlab添加組、創(chuàng)建用戶、創(chuàng)建項(xiàng)目
創(chuàng)建組
使用管理員 root 創(chuàng)建組,一個(gè)組里面可以有多個(gè)項(xiàng)目分支,可以將開發(fā)添加到組里面進(jìn)行設(shè)置權(quán)限,不同的組就是公司不同的開發(fā)項(xiàng)目或者服務(wù)模塊,不同的組添加不同的開發(fā)即可實(shí)現(xiàn)對(duì)開發(fā)設(shè)置權(quán)限的管理
創(chuàng)建一個(gè)項(xiàng)目
創(chuàng)建用戶
點(diǎn)擊上面的小扳手
點(diǎn)擊new user
選擇普通用戶類型
創(chuàng)建成功之后,再次編輯用戶,可給用戶設(shè)置密碼
將新建用戶分配到之前創(chuàng)建的組里面
用戶可用分配5種角色
Gitlab用戶在組里面有5種不同權(quán)限:
- Guest:可以創(chuàng)建issue、發(fā)表評(píng)論,不能讀寫版本庫
- Reporter:可以克隆代碼,不能提交,QA、PM可以賦予這個(gè)權(quán)限
- Developer:可以克隆代碼、開發(fā)、提交、push,普通開發(fā)可以賦予這個(gè)權(quán)限
- Maintainer:可以創(chuàng)建項(xiàng)目、添加tag、保護(hù)分支、添加項(xiàng)目成員、編輯項(xiàng)目,核心開發(fā)可以賦予這個(gè)權(quán)限
- Owner:可以設(shè)置項(xiàng)目訪問權(quán)限 - Visibility Level、刪除項(xiàng)目、遷移項(xiàng)目、管理組成員,開發(fā)組組長可以賦予這個(gè)權(quán)限
我們?yōu)樾掠脩舴峙湟粋€(gè)owner權(quán)限 將其拉入組內(nèi)
使用新用戶登錄gitlab
源碼上傳到Gitlab倉庫
寫一個(gè)簡單的微服務(wù)
開啟版本控制
選擇Git
提交代碼到本地倉庫
先Add到緩存區(qū)
右鍵項(xiàng)目選擇Git
再Commit到本地倉庫
添加遠(yuǎn)程倉庫地址
最后推送到Gitlab項(xiàng)目倉庫中
進(jìn)入倉庫查看
Jenkins安裝
接下來我們在Jenkins服務(wù)器上操作
Jenkins需要依賴JDK,所以先安裝JDK1.8 yum install -y java-1.8.0-openjdk* 安裝目錄為:/usr/lib/jvm[root@jenkins ~]# cd /usr/lib/jvm [root@jenkins jvm]# ls java java-openjdk jre-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64 java-1.8.0 jre jre-openjdk java-1.8.0-openjdk jre-1.8.0 java-1.8.0-openjdk-1.8.0.292.b10-1.el7_9.x86_64 jre-1.8.0-openjdk獲取jenkins安裝包下載jenkins安裝包
下載地址
通過瀏覽器ip+端口
輸入密碼
因?yàn)镴enkins插件需要連接默認(rèn)官網(wǎng)下載,速度非常慢,而且經(jīng)過會(huì)失敗,所以我們暫時(shí)先跳過插件安裝
點(diǎn)右邊選擇插件安裝
選擇 無
創(chuàng)建用戶
Jenkins插件管理
Jenkins國外官方插件地址下載速度非常慢,所以可以修改為國內(nèi)插件地址
Jenkins->Manage Jenkins->Manage Plugins,點(diǎn)擊Available
這樣做是為了把Jenkins官方的插件列表下載到本地,接著修改地址文件,替換為國內(nèi)插件地址
最后,Manage Plugins點(diǎn)擊Advanced,把Update Site改為國內(nèi)插件下載地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
在瀏覽器ip后面/restart 然后重啟jenkins
下載中文漢化包
重啟后發(fā)現(xiàn)已經(jīng)漢化
Jenkins用戶權(quán)限管理
我們可以利用Role-based Authorization Strategy 插件來管理Jenkins用戶權(quán)限
選擇
創(chuàng)建一個(gè)角色用有讀權(quán)限
創(chuàng)建兩個(gè)角色可以訪問java項(xiàng)目和springboot
創(chuàng)建兩個(gè)新的用戶
我們通過新創(chuàng)建用戶登錄jenkins 發(fā)現(xiàn)沒有權(quán)限
我們通過管理員賬號(hào)給新用戶分配角色
都分配基本的登陸權(quán)限
然后xiaotian賬號(hào)只能訪問java.*項(xiàng)目
zhuzhu只能訪問springboot.*項(xiàng)目
創(chuàng)建項(xiàng)目進(jìn)行權(quán)限測試
創(chuàng)建兩個(gè)項(xiàng)目
使用不同賬戶登陸驗(yàn)證
xiaotian只能看到j(luò)ava01
zhuzhu只能看到springboot01
Jenkins憑證管理
憑據(jù)可以用來存儲(chǔ)需要密文保護(hù)的數(shù)據(jù)庫密碼、Gitlab密碼信息、Docker私有倉庫密碼等,以便Jenkins可以和這些第三方的應(yīng)用進(jìn)行交互。
安裝Credentials Binding插件
要在Jenkins使用憑證管理功能,需要安裝Credentials Binding插件
如果遇到下載失敗的 則單獨(dú)搜索這個(gè)插件名去下載 就可以了
下載完成之后會(huì)在安全里面出現(xiàn)憑據(jù)
新建一個(gè)憑據(jù)
可以添加的憑證有5種:
常用的憑證類型有:Username with password用戶密碼和SSH Username with private keySSH
密鑰
配置憑據(jù) 將gitlab上面的代碼拉取到j(luò)enkins
為了讓Jenkins支持從Gitlab拉取源碼,需要安裝Git插件以及在CentOS7上安裝Git工具。
下載完成之后 ,去服務(wù)器上安裝Git
創(chuàng)建用戶密碼類型憑證
Jenkins->憑證->系統(tǒng)->全局憑證->添加憑證
這里不要搞混了,添加的賬號(hào)和密碼是gitlab的
我們?nèi)?chuàng)建一個(gè)測試項(xiàng)目test01
因?yàn)槲覀儜{據(jù)使用的是賬戶密碼 因此git拉去方式選擇http方式
選擇之前設(shè)置的憑據(jù)
選擇構(gòu)建項(xiàng)目
控制臺(tái)可以查看拉取過程
創(chuàng)建SSH密鑰類型憑據(jù)
SSH免密登錄示意圖
通過瀏覽器打開gitlab
使用root賬號(hào)登錄 點(diǎn)擊頭像選擇設(shè)置
公鑰上傳完畢
去jenkins上面添加SSH類型的憑證
需要添加root的私鑰
將私鑰add進(jìn)憑據(jù)
添加一個(gè)新項(xiàng)目進(jìn)行測試
將gitlab上面ssh 鏈接復(fù)制到項(xiàng)目里面
構(gòu)建項(xiàng)目
成功啦
再去服務(wù)器上面查看git的代碼
Maven安裝及配置
在Jenkins集成服務(wù)器上,我們需要安裝Maven來編譯和打包項(xiàng)目
下載地址
我下載的 apache-maven-3.8.1-bin.tar.gz
全局工具配置關(guān)聯(lián)JDK和Maven
瀏覽器來到全局工具配置
配置jdk
配置maven
添加Jenkins全局變量
在系統(tǒng)配置中的全局屬性
添加三個(gè)全局變量
- JAVA_HOME
- M2_HOME
- PATH+EXTRA
修改Maven的settings.xml提高下載速度
測試Maven是否配置成功
進(jìn)入test02項(xiàng)目的配置
構(gòu)建下面添加shell腳本
讓mvn先清空字節(jié)碼和構(gòu)建好的包
然后package 構(gòu)建一個(gè)war包
構(gòu)建
控制臺(tái)查看輸入
正在使用配置的阿里源拉取包
等待一會(huì)兒 項(xiàng)目成功編譯和打包
進(jìn)入項(xiàng)目目錄下查看
Tomcat安裝和配置
進(jìn)入tomcat服務(wù)器 安裝JDK yum install -y java-1.8.0-openjdk* java -versiontar xf apache-tomcat-8.5.16.tar.gz -C /usr/localcd /usr/local mv apache-tomcat-8.5.16 tomcat啟動(dòng)tomcat cd /usr/local/tomcat/bin ./startup.sh 通過瀏覽器測試配置Tomcat用戶角色權(quán)限
我們在tomcat網(wǎng)頁下點(diǎn)擊
發(fā)現(xiàn)權(quán)限不足
后續(xù)Jenkins部署項(xiàng)目到Tomcat服務(wù)器,需要用到Tomcat的用戶,所以修改tomcat以下配置,添加用戶及權(quán)限
重啟tomcat
點(diǎn)擊manager webapp
輸入tomcat tomcat
總結(jié)
以上是生活随笔為你收集整理的Jenkins——持续集成及Jenkins介绍和安装配置(插件,用户权限,凭据,Maven安装打包,配置tomcat用户权限)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅谈网站的logo设计
- 下一篇: ROS | 基于MQTT的通信方式mqt