哥哥帶你學(xué)Jenkins自動(dòng)化打包一(持續(xù)更新中……)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?互聯(lián)網(wǎng)開(kāi)發(fā)流程已經(jīng)形成一套完整的模式

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??編碼 --> 構(gòu)建 --> 集成 --> 測(cè)試 --> 交付 --> 部署

但是這不并不意味這是一個(gè)這是一套一次成型的系統(tǒng),因?yàn)殡S著不同項(xiàng)目的不同交付周期以及交付版本,整個(gè)系統(tǒng)其實(shí)隨時(shí)處于動(dòng)態(tài)調(diào)整狀態(tài),這也就是圖中雙箭頭所指出的我們要談的重點(diǎn),持續(xù)集成Continuous integration,持續(xù)交付Continuous delivery,以及持續(xù)部署continuous deployment??偟膩?lái)說(shuō),持續(xù)集成,持續(xù)交付,持續(xù)部署,對(duì)整個(gè)開(kāi)發(fā)測(cè)試流程自動(dòng)化都將成為未來(lái)軟件工程的重要組成部分。

Jenkins 介紹

Jenkins是一個(gè)開(kāi)源的,可擴(kuò)展的持續(xù)集成、交付、部署的基于web界面的平臺(tái)、允許持續(xù)集成和持續(xù)交付項(xiàng)目,無(wú)論是用什么平臺(tái)。可以處理任何類型的構(gòu)建或者是持續(xù)集成。包含了上面所說(shuō)的:自動(dòng)構(gòu)建,自動(dòng)編譯,自動(dòng)發(fā)布。還能監(jiān)控集成中存在的錯(cuò)誤,提供詳細(xì)的日志和提醒功能

官網(wǎng):https://jenkins.io/? ? ?官方文檔:https://jenkins.io/doc/?教程: https://www.yiibai.com/jenkins

開(kāi)源的java語(yǔ)言開(kāi)發(fā)持續(xù)集成工具,支持CI,CD;

易于安裝部署配置:可通過(guò)yum安裝,或下載war包以及通過(guò)docker容器等快速實(shí)現(xiàn)安裝部署,可方便web界面配置管理;

消息通知及測(cè)試報(bào)告:集成RSS/E-mail通過(guò)RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過(guò)e-mail通知,生成JUnit/TestNG測(cè)試報(bào)告;

分布式構(gòu)建:支持Jenkins能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測(cè)試;

文件識(shí)別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等;

豐富的插件支持:支持?jǐn)U展插件,你可以開(kāi)發(fā)適合自己團(tuán)隊(duì)使用的工具,如git,svn,maven,docker等。

? 解決的用戶痛點(diǎn):

開(kāi)發(fā)人員需經(jīng)常集成自己的工作成果,每次集成都是通過(guò)自動(dòng)化的構(gòu)建來(lái)完成,包括:自動(dòng)拉取倉(cāng)庫(kù)代碼、自動(dòng)編譯、自動(dòng)發(fā)布、自動(dòng)測(cè)試。為了更快更好的發(fā)現(xiàn)問(wèn)題,提高團(tuán)隊(duì)開(kāi)發(fā)效率。各個(gè)開(kāi)發(fā)人員的工作成果不需要在工作一段時(shí)間(可能幾個(gè)星期)后進(jìn)行將代碼集成,jenkins會(huì)很頻繁的集成代碼然后 自動(dòng)發(fā)布測(cè)試,能夠盡快發(fā)現(xiàn)問(wèn)題。(如果人工集成,集成很耗時(shí)耗力,并且集成時(shí)間會(huì)耗費(fèi)在開(kāi)發(fā)時(shí)間里)。


核心價(jià)值

1,集成的任意環(huán)節(jié)都是自動(dòng)完成,無(wú)需人工太多干預(yù)

2,能盡快發(fā)現(xiàn)軟件的集成問(wèn)題,因?yàn)轭l繁集成,每一次集成都有可能發(fā)現(xiàn)集成問(wèn)題

3,能很快適應(yīng)需求變化,因?yàn)榻?jīng)常變換需求真的很煩

4,減少管理風(fēng)險(xiǎn)

應(yīng)用場(chǎng)景

你寫(xiě)了一個(gè)月代碼,然后合并,合并,花了3天時(shí)間解決沖突,又花了一周解決合并后的bug,大多數(shù)時(shí)間都耽誤在了繁瑣的問(wèn)題上,而不能專心于業(yè)務(wù)開(kāi)發(fā)和技術(shù)提升。而現(xiàn)在是很頻繁的去集成,比方說(shuō)10分鐘,那么解決10分鐘寫(xiě)的代碼沖突會(huì)比解決一個(gè)月的代碼沖突簡(jiǎn)單的多,并且集成這個(gè)事情還不是你做,而是CI來(lái)做,大大提高了開(kāi)發(fā)效率。


使用原則

?需要使用版本控制工具 如:SVN / Git

?需及時(shí)向版本控制庫(kù)里提交代碼和從版本控制庫(kù)里更新代碼

?開(kāi)發(fā)環(huán)境得統(tǒng)一

?集成頻率得當(dāng)

為什么要使用jenkins

是所有持續(xù)集成產(chǎn)品中安裝和配置最簡(jiǎn)單的

?基于瀏覽器web訪問(wèn)界面,用戶界面簡(jiǎn)潔友好

擁有非常多和強(qiáng)大的插件

簡(jiǎn)單點(diǎn)來(lái)說(shuō):jenkins是一個(gè)web應(yīng)用程序,這個(gè)web應(yīng)用程序能做持續(xù)集成的一切功能

部署代碼上線流程

1.代碼獲?。ㄖ苯恿死。?/p>

2.編譯(可選)

3.配置文件放進(jìn)去

4.打包

5.scp到目標(biāo)服務(wù)器

6.將目標(biāo)服務(wù)器移除集群

7.解壓并放置到Webroot

8.Scp差異文件

9.重啟(可選)

10.測(cè)試

11.加入集群

Jenkins學(xué)習(xí)流程

Jenkins安裝

Tomat安裝設(shè)置

GIt安裝設(shè)置

Maven安裝設(shè)置

Jenkins配置

Jenkins管理

Jenkins安裝程序生成作業(yè)

Jenkins單元測(cè)試

Jenkins自動(dòng)化測(cè)試

Jenkins郵件通知

Jenkins報(bào)表

Jenkins代碼分析

Jenkins分布式構(gòu)建

Jenkins自動(dòng)部署

Jenkins指標(biāo)與趨勢(shì)

Jenkins服務(wù)器維護(hù)

Jenkins持續(xù)部署

Jenkins管理插件

Jenkins安全

Jenkins備份插件

Jenkins遠(yuǎn)程測(cè)試

初始化

第一次訪問(wèn)的時(shí)候會(huì)有一個(gè)重置密碼界面,我們按照他的要求進(jìn)行即可。

自主選擇插件安裝。

我們先什么插件也不安裝,稍后我們自主進(jìn)行安裝,需要什么插件就當(dāng)場(chǎng)安裝什么插件。

最后一步,我們?cè)O(shè)置管理員賬戶密碼就可以了。

三、配置 jenkins 全局工具

1、配置 jdk 工具

jdk1.8我們已經(jīng)事先安裝好了,路徑是 /usr/java/default/。點(diǎn)擊系統(tǒng)管理--->全局工具配置。

2、配置 maven 工具

去 maven 官網(wǎng)下載軟件,直接解壓在 /usr/local 路徑下面,我下載的地址是?http://mirrors.shuosc.org/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz?。

3、配置 Git 工具

jenkins 服務(wù)器首先要安裝 git

yuminstall git

安裝 Git client(系統(tǒng)管理--->插件管理)

安裝完成之后重啟 jenkins,然后再配置全局工具。

基本也就用到這幾個(gè)工具,后面如果遇到其他工具我們可以再進(jìn)行添加。

四、創(chuàng)建 java 任務(wù)

1、安裝 Maven 插件

目前我們創(chuàng)建項(xiàng)目還是沒(méi)有 maven 的,因?yàn)槲覀冞€沒(méi)有安裝插件。

安裝 Maven Integration

現(xiàn)在我們點(diǎn)擊新建,就可以看到 maven 項(xiàng)目的構(gòu)建啦。


依賴環(huán)境

SSH,遠(yuǎn)程機(jī)開(kāi)啟SSH服務(wù),允許Jenkins所在機(jī)器通過(guò)SSH服務(wù)登錄到遠(yuǎn)程機(jī)執(zhí)行腳本;可以設(shè)置SSH使用用戶名/密碼或通過(guò)key登錄,SSH配置請(qǐng)查看我之前的jenkins配置文章。

JDK,本文部署的是JAVA應(yīng)用,遠(yuǎn)程機(jī)上要用jdk環(huán)境,如非Java應(yīng)用請(qǐng)忽略。

Tomcat或其他web容器,本文是以Tomcat為例,將應(yīng)用部署到Tomcat中運(yùn)行,遠(yuǎn)程機(jī)上安裝Tomcat是必須的,如非Java應(yīng)用請(qǐng)忽略,如用其他web容器請(qǐng)查找容器的安裝資料。


前期準(zhǔn)備

1、安裝 Publish Over SSH 插件

由于后面我們還需要把打好的包分發(fā)到遠(yuǎn)程的服務(wù)器.所以這里還要再安裝一個(gè)Publish Over SSH插件.這樣的話,我們就可以在jenkins配置中直接使用遠(yuǎn)程拷貝了,把包直接拷貝到遠(yuǎn)程服務(wù)器。我這里是已經(jīng)安裝過(guò)了。

2、配置 Publish over SSH

我們添加一臺(tái)服務(wù)器,后面打好的包將推送到這臺(tái)服務(wù)器的 tomcat 上面。

系統(tǒng)管理--->系統(tǒng)設(shè)置--->Publish over SSH。

添加對(duì)應(yīng)服務(wù)器的賬號(hào)信息。

SSH Servers:遠(yuǎn)程服務(wù)器相關(guān)配置,也就是我們要把程序發(fā)布到的那一臺(tái)機(jī)器的相關(guān)配置。

Name:起一個(gè)名字,方便后面配置發(fā)布的時(shí)候,選擇服務(wù)器。

Hostname:遠(yuǎn)程服務(wù)器的IP地址,如果寫(xiě)遠(yuǎn)程的主機(jī)名的話,要在jenkins的hosts文件中加映射。

Username:服務(wù)器賬號(hào)用戶名。

Remote Directory:要把文件發(fā)布到遠(yuǎn)程機(jī)器的哪一個(gè)目錄。

我們針對(duì)單一的服務(wù)器進(jìn)行配置,只需要填寫(xiě)好特定服務(wù)器的賬號(hào)密碼即可,我們也可以配置統(tǒng)一的無(wú)密碼通信,即使用公鑰通信。

測(cè)試成功,點(diǎn)擊保存即可,我們?cè)诤竺鏄?gòu)建項(xiàng)目的時(shí)候可以直接選擇被構(gòu)建的服務(wù)器。

3、安裝 git 插件

因?yàn)槲覀兊?jenkins 需要從 gitlab 獲取代碼,需要安裝 git 插件。

創(chuàng)建 java 任務(wù)

1、創(chuàng)建一個(gè) maven 任務(wù)

任務(wù)名字可以隨便填寫(xiě)。

2、General

描述:我們可以隨便填寫(xiě),大概介紹一下項(xiàng)目的情況,以及發(fā)送到哪個(gè)機(jī)器。

丟棄舊的構(gòu)建:為了不對(duì)服務(wù)器存儲(chǔ)造成太大的壓力,我們需要清理之前構(gòu)建的一些項(xiàng)目,這里大家可以按照自己的情況進(jìn)行設(shè)定。

3、源碼管理

這里我使用的是自己的 gitlab 代碼倉(cāng)庫(kù),沒(méi)有設(shè)定權(quán)限,在 github 上面的地址為:https://github.com/wangzan18/game-of-life?。

Repository URL:填寫(xiě)我們git項(xiàng)目的地址,gitlab上面的每個(gè)項(xiàng)目都有相應(yīng)的地址。

Credentials:我這里演示的是公開(kāi)的項(xiàng)目,如果是私有項(xiàng)目,需要添加認(rèn)證,我會(huì)在其他的博文進(jìn)行講解演示。

Branches Specifer:因?yàn)槲业捻?xiàng)目直接在master分支上面進(jìn)行更新的,所以這里填寫(xiě)了*/master,如果使用的其他分支可以相應(yīng)的修改即可。

4、構(gòu)建觸發(fā)器

構(gòu)建觸發(fā)器我這里沒(méi)有用到,意思就是說(shuō),當(dāng)觸發(fā)了什么條件等時(shí)候,我們后面會(huì)和 gitlab 進(jìn)行自動(dòng)發(fā)布。

5、構(gòu)建環(huán)境

哈哈,這里我沒(méi)有用到哦。

6、Pre Steps

也就這幾個(gè)選項(xiàng),也就是構(gòu)建前需要做什么。反正我是沒(méi)有用到。

7、Build

配置相對(duì)比較簡(jiǎn)單,按照如上填寫(xiě)即可。

8、Post Steps

暫時(shí)不寫(xiě)什么,還沒(méi)有用得到。

9、構(gòu)建設(shè)置

可以填寫(xiě)郵件通知,告訴我構(gòu)建的結(jié)果。

構(gòu)建后操作

這里是比較重要的一塊,這里我們選擇的是:Send build artifacts over SSH。

SSH Server Name:這里選擇之前我們配置好的服務(wù)器,并且已經(jīng)測(cè)試了SSH連接,服務(wù)器也已經(jīng)安裝了Tomcat。

Source files:需要上傳的文件(注意:相對(duì)于工作區(qū)的路徑。看后面的配置可以填寫(xiě)多個(gè),默認(rèn)用,分隔),為了簡(jiǎn)要也可以寫(xiě)**/*.war。

Remove prefix:移除前綴(只能指定Source files中的目錄)。

Remote directory:遠(yuǎn)程目錄(這里也是相對(duì)目錄,目錄根據(jù)我們配ssh的時(shí)候填寫(xiě)的Remote Directory 路徑,我寫(xiě)的是/root,后面會(huì)上圖,在這個(gè)路徑的基礎(chǔ)上的相對(duì)路徑。

Exec command:把你要執(zhí)行的命令寫(xiě)在里面,也就是我們平時(shí)手動(dòng)操作的一些過(guò)程。

一切配置的差不多之后,我們保存,進(jìn)行構(gòu)建測(cè)試。

構(gòu)建測(cè)試

1、開(kāi)始構(gòu)建

我們回到任務(wù)欄,點(diǎn)擊任務(wù)最后面的構(gòu)建按鈕。

2、查看構(gòu)建

我們點(diǎn)擊我們構(gòu)建的 #2 號(hào)任務(wù)。

我們點(diǎn)擊控制臺(tái)輸出,查看一下構(gòu)建的過(guò)程,一些失敗的過(guò)程我們也可以從中去進(jìn)行查看。

3、構(gòu)建成功

我們可以看到BUILD SUCCESS,說(shuō)明我們編譯打包沒(méi)有了什么問(wèn)題。

再可以看到下面的一些命令的執(zhí)行,也都是成功的,經(jīng)過(guò)我們測(cè)試,項(xiàng)目也確實(shí)發(fā)布了,沒(méi)有什么問(wèn)題,至此大功告成,已經(jīng)我們的更改,都只需點(diǎn)擊一下按鈕就可以發(fā)布測(cè)試了,為我們節(jié)省了很多時(shí)間。

本版本只是簡(jiǎn)要介紹了一下項(xiàng)目的發(fā)布,中間可能也會(huì)有很多設(shè)定不合理的地方,后期會(huì)不斷的進(jìn)行更新。

背景

之前的項(xiàng)目是 public 的,如果我們?cè)?gitlab上面把它修改成 private,然后再次打開(kāi)配置,就可能會(huì)出現(xiàn)下面的錯(cuò)誤,兩種協(xié)議都會(huì)進(jìn)行報(bào)錯(cuò)。

名稱IP備注

Jenkins172.18.2.101內(nèi)網(wǎng)IP

Gitlab172.18.2.100內(nèi)網(wǎng)IP

ssh 協(xié)議

http 協(xié)議


ssh 協(xié)議配置

1、在 Jenkins 服務(wù)器上面生產(chǎn) SSH Keys

如果要通過(guò) git 協(xié)議拉取代碼,需要建立 Jenkins 服務(wù)器和 Gitlab 服務(wù)器的無(wú)密碼通信,我們首先要生存一組密鑰對(duì)。

ssh-keygen -t rsa -C"wzlinux"

[root@jenkins ~]# ll .ssh/total 12-rw------- 1 root root 1675 Sep? 3 22:05 id_rsa-rw-r--r-- 1 root root? 408 Sep? 3 22:05 id_rsa.pub-rw-r--r-- 1 root root? 348 Sep? 4 21:21 known_hosts

2、在 Gitlab 上面配置生產(chǎn)的 SSH Keys

我們登錄 gitlab,打開(kāi)自己的用戶設(shè)置,選擇 SSH Keys 選項(xiàng)進(jìn)行配置,填寫(xiě)我們剛剛生成的公鑰(id_rsa.pub)。

SSH Keys 幫助我們建立 jenkins 到 gitlab 的安全無(wú)密碼連接。

3、在 jenkins 服務(wù)器上面測(cè)試代碼拉取

[root@jenkins test]# git clone git@172.18.2.100:java/game.gitCloning into 'game'...remote: Enumerating objects: 1768, done.remote: Counting objects: 100% (1768/1768), done.remote: Compressing objects: 100% (584/584), done.remote: Total 1768 (delta 1112), reused 1768 (delta 1112)Receiving objects: 100% (1768/1768), 15.02 MiB | 0 bytes/s, done.Resolving deltas: 100% (1112/1112), done.

我們可以看到,配置了SSH Keys之后,我們可以直接在服務(wù)器上面無(wú)密碼拉取代碼了。

4、再次打開(kāi)jenkins任務(wù)配置

當(dāng)我們?cè)俅未蜷_(kāi)配置,發(fā)現(xiàn)認(rèn)證還是有問(wèn)題,這時(shí)候我們需要添加認(rèn)證,因?yàn)?jenkins 并不知道我們的秘鑰。

添加私鑰,然后確定。

認(rèn)證選擇我們剛剛添加的私鑰,已經(jīng)不再報(bào)錯(cuò)。

ssh 協(xié)議配置

1、在 Jenkins 服務(wù)器上面生產(chǎn) SSH Keys

如果要通過(guò) git 協(xié)議拉取代碼,需要建立 Jenkins 服務(wù)器和 Gitlab 服務(wù)器的無(wú)密碼通信,我們首先要生存一組密鑰對(duì)。

ssh-keygen -t rsa -C"wzlinux"

[root@jenkins ~]# ll .ssh/total 12-rw------- 1 root root 1675 Sep? 3 22:05 id_rsa-rw-r--r-- 1 root root? 408 Sep? 3 22:05 id_rsa.pub-rw-r--r-- 1 root root? 348 Sep? 4 21:21 known_hosts

2、在 Gitlab 上面配置生產(chǎn)的 SSH Keys

我們登錄 gitlab,打開(kāi)自己的用戶設(shè)置,選擇 SSH Keys 選項(xiàng)進(jìn)行配置,填寫(xiě)我們剛剛生成的公鑰(id_rsa.pub)。

SSH Keys 幫助我們建立 jenkins 到 gitlab 的安全無(wú)密碼連接。

3、在 jenkins 服務(wù)器上面測(cè)試代碼拉取

[root@jenkins test]# git clone git@172.18.2.100:java/game.gitCloning into 'game'...remote: Enumerating objects: 1768, done.remote: Counting objects: 100% (1768/1768), done.remote: Compressing objects: 100% (584/584), done.remote: Total 1768 (delta 1112), reused 1768 (delta 1112)Receiving objects: 100% (1768/1768), 15.02 MiB | 0 bytes/s, done.Resolving deltas: 100% (1112/1112), done.

我們可以看到,配置了SSH Keys之后,我們可以直接在服務(wù)器上面無(wú)密碼拉取代碼了。

4、再次打開(kāi)jenkins任務(wù)配置

當(dāng)我們?cè)俅未蜷_(kāi)配置,發(fā)現(xiàn)認(rèn)證還是有問(wèn)題,這時(shí)候我們需要添加認(rèn)證,因?yàn)?jenkins 并不知道我們的秘鑰。

添加私鑰,然后確定。

認(rèn)證選擇我們剛剛添加的私鑰,已經(jīng)不再報(bào)錯(cuò)。

構(gòu)建測(cè)試

修改了權(quán)限之后,我們重新構(gòu)建項(xiàng)目,查看整個(gè)過(guò)程。

沒(méi)有任何問(wèn)題,SSH Keys權(quán)限認(rèn)證通過(guò)。

http 協(xié)議配置

1、配置認(rèn)證

和 ssh 基本一樣,我們只需要再添加認(rèn)證的時(shí)候?qū)懳覀冊(cè)?gitlab 上面的用戶名密碼即可。

然后再選擇對(duì)應(yīng)的認(rèn)證方法。


構(gòu)建測(cè)試

拉取代碼也沒(méi)有什么問(wèn)題。


Jenkins 安裝插件

要實(shí)現(xiàn) gitlab 自動(dòng)觸發(fā)的功能,我們需要安裝一個(gè)插件Gitlab Hook。


重新配置任務(wù)

在之前的任務(wù)里面,在構(gòu)建觸發(fā)器多了一項(xiàng),如下,我們記住上面的接口,地址是我們 jenkins 的訪問(wèn)地址。


配置Gitlab

把我們上面記錄的接口地址,配置在gitlab上面相應(yīng)的工程里面。

配置好點(diǎn)擊添加即可。


代碼提交驗(yàn)證

我們可以看到,當(dāng)我們每次提交好代碼之后,會(huì)自動(dòng)觸發(fā) jenkins 構(gòu)建代碼。

問(wèn)題

jenkins自身的權(quán)限管理,無(wú)法實(shí)現(xiàn)用戶指定顯示視圖或者視圖中指定的jobs,之前分配的jenkins帳號(hào)是擁有所有權(quán)限的,因?yàn)閾?dān)心故意或者誤刪job的情況。 我們使用jenkins自身的權(quán)限控制,而實(shí)現(xiàn)的效果用戶只能構(gòu)建,不能查看修改配置和刪除job。雖然避免了故意或者失誤刪除job的情況,但是有時(shí)候開(kāi)發(fā)需要修改配置,比如說(shuō)更改構(gòu)建的分支,或者想查看構(gòu)建的參數(shù),腳本就需要叫運(yùn)維協(xié)助。對(duì)開(kāi)發(fā)來(lái)說(shuō)比較麻煩,對(duì)運(yùn)維也很苦惱。

解決方法

為jenkins安裝角色策略插件,通過(guò)配置角色策略可以解決上面問(wèn)題。每個(gè)項(xiàng)目分配兩個(gè)賬號(hào),一個(gè)賬號(hào)可以查看job配置,修改配置,構(gòu)建新的權(quán)限,不能刪除,不能創(chuàng)建job,另一一個(gè)賬號(hào)只有構(gòu)建權(quán)限。不同項(xiàng)目組賬號(hào)登錄之后,jenkins視圖只顯示自己項(xiàng)目組的job。

配置

1、安裝插件

系統(tǒng)管理--->管理插件。


全局安全配置

系統(tǒng)管理--->全局安全配置。


創(chuàng)建用戶

系統(tǒng)管理--->管理用戶


創(chuàng)建角色

系統(tǒng)管理--->Manage and Assign Roles

1、創(chuàng)建一個(gè)Global roles

我們先創(chuàng)建一個(gè)全局角色user,賦予全局標(biāo)簽下面的Read權(quán)限。

2、創(chuàng)建規(guī)劃項(xiàng)目的角色

分別創(chuàng)建兩個(gè)項(xiàng)目的角色,按照規(guī)劃的分配權(quán)限,Pattern用于給項(xiàng)目匹配 job,使用正則表達(dá)式。


給用戶分配角色

系統(tǒng)管理--->Manage and Assign Roles--->Assign Roles

給用戶分配角色

系統(tǒng)管理--->Manage and Assign Roles--->Assign Roles


創(chuàng)建項(xiàng)目視圖

我這里只展示創(chuàng)建其中一個(gè)視圖,另一個(gè)方式一樣。


登錄驗(yàn)證

1、創(chuàng)建 job

因?yàn)閯?chuàng)建的賬號(hào)都沒(méi)有賦予創(chuàng)建job的權(quán)限,所以我們先使用最高的管理賬戶創(chuàng)建幾個(gè)job,具體如下:

2、項(xiàng)目隔離驗(yàn)證

我們分別登錄 btest 和 qtest 這兩個(gè)賬號(hào),分別查看一下各自賬號(hào)下面可以查看到的 job。

btest

qtest

我們可以看到,隔離成功,不同的項(xiàng)目值可以看到各自的 job。

3、權(quán)限驗(yàn)證

我們分別登錄 badmin 和 btest ,查看其權(quán)限。

badmin

btest

Sonar 介紹

Sonar 是一個(gè)用于代碼質(zhì)量管理的開(kāi)放平臺(tái)。通過(guò)插件機(jī)制,Sonar可以集成不同的測(cè)試工具,代碼分析工具,以及持續(xù)集成工具。與持續(xù)集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是簡(jiǎn)單地把不同的代碼檢查工具結(jié)果(例如 FindBugs,PMD 等)直接顯示在 Web 頁(yè)面上,而是通過(guò)不同的插件對(duì)這些結(jié)果進(jìn)行再加工處理,通過(guò)量化的方式度量代碼質(zhì)量的變化,從而可以方便地對(duì)不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。

在對(duì)其他工具的支持方面,Sonar 不僅提供了對(duì) IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 這些工具里聯(lián)機(jī)查看結(jié)果;同時(shí) Sonar 還對(duì)大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 Sonar。

此外,Sonar 的插件還可以對(duì) Java 以外的其他編程語(yǔ)言提供支持,對(duì)國(guó)際化以及報(bào)告文檔化也有良好的支持。


Sonar 安裝

Sonar 的相關(guān)下載和文檔可以在下面的鏈接中找到:http://www.sonarqube.org/downloads?。 需要注意最新版的 Sonar 需要至少JDK 1.8及以上版本。

之前我們已經(jīng)可以成功的使用 git 進(jìn)行拉取,Sonar 的功能就是來(lái)檢查代碼是否有BUG。除了檢查代碼是否有 bug 還有其他的功能,比如說(shuō):你的代碼注釋率是多少,代碼有一些建議,編寫(xiě)語(yǔ)法的建議。所以我們叫質(zhì)量管理

Sonar 還可以給代碼打分,并且引用了技術(shù)宅的功能(告訴你有很多地方?jīng)]改)

1、安裝 jdk

JDK 可以去 Oracle 官網(wǎng)去下載,也可以使用 yum 倉(cāng)庫(kù)的 JDK。

rpm-ivhjdk-8u45-linux-x64.rpm

2、下載安裝包

我這里下載的是長(zhǎng)期維護(hù)的一個(gè)版本6.7.5。

wget https://sonarsource.bintray.com/Distribution/sonarqube/sonarqube-6.7.5.zip

3、解壓

unzip sonarqube-6.7.5.zipmv sonarqube-6.7.5 /usr/local/sonarqube

準(zhǔn)備數(shù)據(jù)庫(kù)

因?yàn)?sonar 會(huì)用到數(shù)據(jù)庫(kù),所以我們要事先準(zhǔn)備好數(shù)據(jù)庫(kù),它支持多種數(shù)據(jù)庫(kù),我們這里選擇的是 MySQL/Mariadb,注意 MySQL 的版本最低要5.6,因?yàn)槲疫@里有現(xiàn)有的數(shù)據(jù)庫(kù),所以安裝過(guò)程省略。

mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;mysql>GRANT ALL ON sonar.* TO'sonar'@'localhost'IDENTIFIED BY'sonar@pw';mysql>GRANT ALL ON sonar.* TO'sonar'@'%'IDENTIFIED BY'sonar@pw';mysql> FLUSH PRIVILEGES;

配置 Sonar

1、配置數(shù)據(jù)庫(kù)連接

編輯/usr/local/sonarqube/conf/sonar.properties,修改內(nèi)容如下:

# 數(shù)據(jù)庫(kù)連接sonar.jdbc.username=sonar? ? ? ? ? sonar.jdbc.password=sonar@pw? ? sonar.jdbc.url=jdbc:mysql://10.0.1.13:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false# Web 端口sonar.web.host=0.0.0.0sonar.web.port=9000

2、創(chuàng)建用戶 sonar

因?yàn)槌绦虿辉试S我們使用 root 執(zhí)行,所以我們需要注冊(cè)一個(gè)普通用戶

useradd sonarchownsonar.sonar /usr/local/sonarqube -R

3、啟動(dòng) sonar

[root@monitor ~]# su - sonar[sonar@monitor ~]$ /usr/local/sonarqube/bin/linux-x86-64/sonar.sh startStarting SonarQube...Started SonarQube.

4、檢查是否啟動(dòng)成功

[root@monitor ~]# netstat -tlnpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address? ? ? ? ? ? ? Foreign Address? ? ? ? ? ? State? ? ? PID/Program name? tcp00127.0.0.1:320000.0.0.0:*LISTEN8126/java? ? ? ? ? tcp000.0.0.0:100500.0.0.0:*LISTEN1804/zabbix_agentd? tcp000.0.0.0:100510.0.0.0:*LISTEN2202/zabbix_server? tcp000.0.0.0:8730.0.0.0:*LISTEN16611/rsync? ? ? ? tcp000.0.0.0:33060.0.0.0:*LISTEN2040/mysqld? ? ? ? tcp000.0.0.0:220.0.0.0:*LISTEN1586/sshd? ? ? ? ? tcp00127.0.0.1:250.0.0.0:*LISTEN1677/master? ? ? ? tcp00::ffff:127.0.0.1:8005:::*LISTEN16486/java? ? ? ? ? tcp00:::9000:::*LISTEN8258/java? ? ? ? ? tcp00::ffff:127.0.0.1:9001:::*LISTEN8151/java? ? ? ? ? tcp00:::873:::*LISTEN16611/rsync? ? ? ? tcp00:::8080:::*LISTEN16486/java? ? ? ? ? tcp00:::80:::*LISTEN4841/httpd


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容