gitea+sonar+jenkins+TAPD(docker環(huán)境)

軟件安裝配置》》》

Gitea:

Gitea 的首要目標(biāo)是創(chuàng)建一個(gè)極易安裝,運(yùn)行非常快速三幻,安裝和使用體驗(yàn)良好的自建 Git 服務(wù)则北。項(xiàng)目采用 Go 作為后端語言蹋宦,只要生成一個(gè)可執(zhí)行程序即可。
它是跨平臺(tái)的咒锻,支持 Linux冷冗、macOS 和 Windows 以及各種架構(gòu),除了 x86惑艇,amd64蒿辙,還包括 ARM 和 PowerPC。

1.安裝git

centos 安裝git

yum install git

RHEL和衍生產(chǎn)品通常會(huì)發(fā)布較舊版本的git滨巴。您可以下載tarball并從源代碼進(jìn)行構(gòu)建思灌,也可以使用第三方存儲(chǔ)庫(例如IUS社區(qū)項(xiàng)目)來獲取git的最新版本。

CentOS 安裝最新版本 Git
https://www.cnblogs.com/jhxxb/p/10571227.html

2.docker 搭建 gitea

pull gitea鏡像

 docker pull gitea/gitea

創(chuàng)建一個(gè)本地可以掛載到容器的目錄

 mkdir -p /home/gitea

加上權(quán)限

chmod -R 777 gitea

初次執(zhí)行 run gitea恭取,注意這里 gitea 是前臺(tái)啟動(dòng)泰偿,啟動(dòng)后 command + C 退出就好了
宿主機(jī) 10022 映射到 gitea 容器的 22 ssh 端口
宿主機(jī) 10082 映射到 gitea 容器的 3000 http 端口
docker run -d --name gitea --restart=always -p 10022:22 -p 10082:3000 -v /home/gitea:/data gitea/gitea

參考:https://gitea.io/zh-cn/

SonarQube:

Sonar(SonarQube)是一個(gè)開源平臺(tái),用于管理源代碼的質(zhì)量蜈垮。Sonar 不只是一個(gè)質(zhì)量數(shù)據(jù)報(bào)告工具耗跛,更是代碼質(zhì)量管理平臺(tái)裕照。支持的語言包括:Java、PHP调塌、C#晋南、C、Cobol羔砾、PL/SQL负间、Flex 等。
主要特點(diǎn):
代碼覆蓋:通過單元測試姜凄,將會(huì)顯示哪行代碼被選中
改善編碼規(guī)則
搜尋編碼規(guī)則:按照名字政溃,插件,激活級(jí)別和類別進(jìn)行查詢
項(xiàng)目搜尋:按照項(xiàng)目的名字進(jìn)行查詢
對比數(shù)據(jù):比較同一張表中的任何測量的趨勢

注意:sonar服務(wù)器至少需要2G的內(nèi)存才能有效運(yùn)行

拉取鏡像态秧,默認(rèn)都是從 DockerHub 拉取

1 拉取數(shù)據(jù)庫

docker pull postgres 

2 拉取sonarqube

docker pull sonarqube

3 啟動(dòng)postgresql

docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres

4 啟動(dòng) sonarqube

docker run --name sq --link db -e SONARQUBE_JDBC_URL=jdbc:postgresql://IP:5432/sonar -p 9000:9000 -d sonarqube

5 打開 http://localhost:9000/, 點(diǎn)擊 "Log in"

登錄賬號(hào):admin 密碼:admin

報(bào)錯(cuò)語句:

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

修改文件

vi /etc/sysctl.conf  

修改本地文件的內(nèi)存大小值

vm.max_map_count = 655360

SonarQube 是以工程為單位進(jìn)行掃描管理的玩祟,第一步需要點(diǎn)擊 A 前面的 + 號(hào),創(chuàng)建一個(gè)新工程:


20190910155243663.png

生成sonar的token

可以搜索chinese Pack屿聋,安裝中文語言包空扎,安裝成功后,重啟sonarqube服務(wù)润讥,再次訪問http://localhost:9000/转锈,即可看到中文界面

IDEA 集成(maven): https://blog.csdn.net/wojiushiwo945you/article/details/100699885
gradle: https://www.cnblogs.com/wangfg/p/12331745.html

mvn sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=559fa7b02af13e181f0a39444ee17b71acdf2724 -Dsonar.java.binaries=target/sonar
gradle clean build sonarqube  

Jenkins :

Jenkins 的前身是 Hudson 是一個(gè)可擴(kuò)展的持續(xù)集成引擎。Jenkins 是一款開源 CI&CD 軟件楚殿,用于自動(dòng)化各種任務(wù)撮慨,包括構(gòu)建、測試和部署軟件脆粥。Jenkins 支持各種運(yùn)行方式砌溺,可通過系統(tǒng)包、Docker 或者通過一個(gè)獨(dú)立的 Java 程序变隔。
主要特色功能:

  • 流水線
  • 多種類型的計(jì)算節(jié)點(diǎn)支持(SSH规伐、JNLP等)
  • 豐富的插件擴(kuò)展機(jī)制

1 下載Jenkins官方鏡像

docker pull jenkins/jenkins

2 啟動(dòng)

docker run -d -p 80:8080 -p 50000:50000 -v jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins docker.io/jenkins/jenkins
  • -d 后臺(tái)運(yùn)行鏡像
  • -p 80:8080 將鏡像的8080端口映射到服務(wù)器的80端口
  • -p 50000:50000 將鏡像的50000端口映射到服務(wù)器的50000端口
  • -v jenkins:/var/jenkins_home /var/jenkins_home目錄為jenkins工作目錄,>我們將硬盤上的一個(gè)目錄掛載到這個(gè)位置匣缘,方便后續(xù)更新鏡像后繼續(xù)使用原來的工作目錄猖闪。
  • -v /etc/localtime:/etc/localtime 讓容器使用和服務(wù)器同樣的時(shí)間設(shè)置。
  • --name jenkins 給容器起一個(gè)別名

3 查看

docker ps |grep jenkins

5配置Jenkins

在瀏覽器輸入http://ip進(jìn)入Jenkins登錄頁面肌厨。頁面會(huì)提示你到服務(wù)器的指定位置獲取初始化密碼培慌。

docker exec jenkins tail /var/jenkins_home/secrets/initialAdminPassword

在頁面輸入密碼,點(diǎn)擊Continue柑爸,進(jìn)入插件安裝頁面吵护。我們點(diǎn)擊左邊的Install suggested plugins,安裝推薦插件就好。


1600491674567.jpg

安裝中文插件

1.點(diǎn)擊Manage Jenkins
2.打開Available點(diǎn)擊馅而,輸入Localization: Chinese (Simplified)祥诽,查找。
3.安裝后點(diǎn)擊restart

安裝SonarQube插件

因?yàn)槲覀兪怯肑enkins做為后臺(tái)的持續(xù)掃描調(diào)度服務(wù)用爪,所以需要安裝SonarQube Scanner For Jenkins插件

搭建自動(dòng)化持續(xù)代碼掃描質(zhì)量平臺(tái)》》》

SonarQube主要工作流程:


20181126150309510.png

1.開發(fā)人員使用開發(fā)工具(IDE)上傳代碼到GitLab(源代碼管理器)原押;
2.Jenkins(CI系統(tǒng))SCM自動(dòng)拉取代碼到到編譯服務(wù)器胁镐;
3.Sonar Scanners掃描該代碼檢查質(zhì)量,將分析結(jié)果推送到SonarQube平臺(tái)偎血,進(jìn)而持久化數(shù)據(jù)庫存儲(chǔ);
4.開發(fā)&測試人員可以使用IDE插件來同步SonarQube結(jié)果(java和js版本等)并可以實(shí)時(shí)在線分析分析
5.管理員可以通過Web訪問SonarQube質(zhì)量平臺(tái)盯漂,項(xiàng)目代碼質(zhì)量趨勢一目了然

關(guān)于Jenkins的配置:
在 Jenkins 項(xiàng)目構(gòu)建過程中加入SonarScanner進(jìn)行代碼分析颇玷,首先需要在Jenkins工程的構(gòu)建環(huán)境標(biāo)簽頁中勾選"Prepare SonarQube Scanner evironment"

20181126224343705.png

配置SonarQube Scanner構(gòu)建步驟

20181126224506294.png

  • Task to run: 輸入 scan,即分析代碼就缆;
  • JDK :選擇 SonarQube Scanner 使用的 JDK(注意這里必須是 JDK 不能是 JRE)帖渠;
  • Path to project properties : 這里可以指定一個(gè)sonar-project.properties 文件,如果不指定的話會(huì)使用項(xiàng)目默認(rèn)的 properties文件竭宰;
  • Analysis properties: 這里需要輸入一些配置參數(shù)用來傳遞給 SonarQube空郊,這里的參數(shù)優(yōu)先級(jí)高于sonar-project.properties文件里面的參數(shù),所以可以在這里來配置所有的參數(shù)以替代sonar-project.properties文件切揭,下面列出了一些參數(shù)狞甚,sonar.language指定了要分析的開發(fā)語言(特定的開發(fā)語言對應(yīng)了特定的規(guī)則),sonar.sources定義了需要分析的源代碼位置(示例中的.所指示的是當(dāng)前 Jenkins項(xiàng)目的目錄)廓旬,sonar.java.binaries 定義了需要分析代碼的編譯后文件位置;
  • Additional arguments 輸入框中可以輸入一些附加的參數(shù),示例中的-X 意思是進(jìn)入SonarQube Scanner的Debug 模式僻澎,這樣會(huì)輸出更多的日志信息辛辨;
  • JVM Options 可以輸入在執(zhí)行 SonarQube Scanner是需要的JVM參數(shù)。

關(guān)于質(zhì)量閥狀態(tài)關(guān)聯(lián)編譯結(jié)果
Jenkins支持每當(dāng)代碼分析無法滿足SonarQube的質(zhì)量標(biāo)準(zhǔn)時(shí)励背,即工程構(gòu)建失敗春霍,Jenkins需要安裝Quality Gates Plugin

20181126224506294.png

另外,在項(xiàng)目工程中需要增加“構(gòu)建后操作”叶眉,不過此插件好像有個(gè)缺陷终畅,Project key輸入框不支持${variable}形式

2018112622585527.png

小團(tuán)隊(duì)持續(xù)代碼掃描方案


20181126232424909.png

DevOps 模式

1. 在TAPD中的操作

首先在流水線設(shè)置中找到Jenkins

在這里插入圖片描述

然后下載插件,并點(diǎn)擊新增服務(wù)

在這里插入圖片描述

記錄Webhook竟闪,一會(huì)兒要用


在這里插入圖片描述

2. 在Jenkins中的操作

在系統(tǒng)管理中找到插件管理

在這里插入圖片描述

選擇剛才下載的插件离福,安裝,重啟


在這里插入圖片描述

點(diǎn)擊用戶名炼蛤,選擇設(shè)置妖爷,添加API Token,記得復(fù)制

在這里插入圖片描述

插件配置
在系統(tǒng)管理中找到TAPD

在這里插入圖片描述
  • Jenkins名稱隨便搞
  • 訪問地址就是當(dāng)前Jenkins的url
  • API Token就是剛才的API Token
  • WebhookSecrect Token 就是在TAPD平臺(tái)中的內(nèi)容

3. 配置成功!

如果配置成功的話絮识,就可以在TAPD平臺(tái)流水線配置中的“關(guān)聯(lián)已有服務(wù)”中找到自己的流水線啦


在這里插入圖片描述

及時(shí)反饋機(jī)制:Jenkins的Montor view插件+釘釘群通知+Email通知

Git 工作流程
協(xié)作必須有一個(gè)規(guī)范的工作流程绿聘,讓大家有效地合作,使得項(xiàng)目井井有條地發(fā)展下去次舌。

image

三種廣泛使用的工作流程:

Git flow
Github flow
Gitlab flow
都采用"功能驅(qū)動(dòng)式開發(fā)"(Feature-driven development熄攘,簡稱FDD)。

它指的是彼念,需求是開發(fā)的起點(diǎn)挪圾,先有需求再有功能分支(feature branch)或者補(bǔ)丁分支(hotfix branch)。完成開發(fā)后逐沙,該分支就合并到主分支哲思,然后被刪除。

首先吩案,項(xiàng)目存在兩個(gè)長期分支棚赔。

主分支master
開發(fā)分支develop
前者用于存放對外發(fā)布的版本,任何時(shí)候在這個(gè)分支拿到的徘郭,都是穩(wěn)定的分布版靠益;后者用于日常開發(fā),存放最新的開發(fā)版残揉。

其次胧后,項(xiàng)目存在三種短期分支。

功能分支(feature branch)
補(bǔ)丁分支(hotfix branch)
預(yù)發(fā)分支(release branch)
一旦完成開發(fā)冲甘,它們就會(huì)被合并進(jìn)develop或master绩卤,然后被刪除。
Gitlab flow


image.png

對于"持續(xù)發(fā)布"的項(xiàng)目江醇,建議在master分支以外濒憋,再建立不同的環(huán)境分支。比如陶夜,"開發(fā)環(huán)境"的分支是master凛驮,"預(yù)發(fā)環(huán)境"的分支是pre-production,"生產(chǎn)環(huán)境"的分支是production条辟。

開發(fā)分支是預(yù)發(fā)分支的"上游"黔夭,預(yù)發(fā)分支又是生產(chǎn)分支的"上游"。代碼的變化羽嫡,必須由"上游"向"下游"發(fā)展本姥。比如,生產(chǎn)環(huán)境出現(xiàn)了bug杭棵,這時(shí)就要新建一個(gè)功能分支婚惫,先把它合并到master,確認(rèn)沒有問題,再cherry-pick到pre-production先舷,這一步也沒有問題艰管,才進(jìn)入production。

只有緊急情況蒋川,才允許跳過上游牲芋,直接合并到下游分支。

Squash 多個(gè)commit

為了便于他人閱讀你的提交捺球,也便于cherry-pick或撤銷代碼變化缸浦,在發(fā)起Pull Request之前,應(yīng)該把多個(gè)commit合并成一個(gè)懒构。(前提是餐济,該分支只有你一個(gè)人開發(fā)耘擂,且沒有跟master合并過胆剧。)

image

這可以采用rebase命令附帶的squash操作,具體方法請參考《Git 使用規(guī)范流程》醉冤。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末秩霍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蚁阳,更是在濱河造成了極大的恐慌铃绒,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件螺捐,死亡現(xiàn)場離奇詭異颠悬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)定血,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門赔癌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澜沟,你說我怎么就攤上這事灾票。” “怎么了茫虽?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵刊苍,是天一觀的道長。 經(jīng)常有香客問我濒析,道長正什,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任号杏,我火速辦了婚禮婴氮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己莹妒,他們只是感情好名船,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旨怠,像睡著了一般渠驼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鉴腻,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天迷扇,我揣著相機(jī)與錄音,去河邊找鬼爽哎。 笑死蜓席,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的课锌。 我是一名探鬼主播厨内,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渺贤!你這毒婦竟也來了雏胃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對情侶失蹤志鞍,失蹤者是張志新(化名)和其女友劉穎瞭亮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體固棚,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡统翩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了此洲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厂汗。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖黍翎,靈堂內(nèi)的尸體忽然破棺而出面徽,到底是詐尸還是另有隱情,我是刑警寧澤匣掸,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布趟紊,位于F島的核電站,受9級(jí)特大地震影響碰酝,放射性物質(zhì)發(fā)生泄漏霎匈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一送爸、第九天 我趴在偏房一處隱蔽的房頂上張望铛嘱。 院中可真熱鬧暖释,春花似錦、人聲如沸墨吓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帖烘。三九已至亮曹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秘症,已是汗流浹背照卦。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留乡摹,地道東北人役耕。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像聪廉,于是被迫代替她去往敵國和親瞬痘。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355