性夜影院午夜看片,无码精品久久一区二区三区,婷婷成人丁香五月综合激情,校园春色 qvod,性调教室高h学校

學(xué)員投稿 | Jenkins與Gitlib實(shí)現(xiàn)自動(dòng)化部署與持續(xù)構(gòu)建

本文來自于學(xué)員"M20-陳功偉”投稿。

持續(xù)部署之jenkins與gitlab(一)

主要部分

  • 安裝部署Jenkins和gitlib
  • 了解gitlib的常用命令
  • 部署haproxy與tomcat環(huán)境
  • 配置Jenkins使用gitlib更新代碼
  • 通過sonar實(shí)現(xiàn)代碼檢測
  • 實(shí)現(xiàn)gitlib觸發(fā)Jenkins自動(dòng)部署
  • 通過Jenkins實(shí)現(xiàn)自動(dòng)部署
  • 實(shí)現(xiàn)haproxy動(dòng)態(tài)添加刪除后端服務(wù)器
  • 編寫腳本實(shí)現(xiàn)自動(dòng)化部署與回滾

持續(xù)集成的分類:

  • 持續(xù)集成:持續(xù)集成是指程序員在代碼的開發(fā)工程中,可以頻繁的將代碼部署到主干上,并進(jìn)行自動(dòng)化測試
  • 持續(xù)交互:持續(xù)交互是指在持續(xù)集成的基礎(chǔ)之上,將代碼部署到線上測試環(huán)境
  • 持續(xù)部署:持續(xù)部署是指在持續(xù)交互的基礎(chǔ)之上,將要部署的代碼實(shí)現(xiàn)自動(dòng)部署,包括持續(xù)交互、持續(xù)部署

Gitlab簡介

gitlab是使用Ruby語言所研發(fā),實(shí)現(xiàn)自動(dòng)托管的git項(xiàng)目倉庫,可以通過web界面訪問進(jìn)行配置。gitlab擁有與GitHub類似的功能,能夠?yàn)g覽代碼,管理缺陷和注釋,可以管理團(tuán)隊(duì)對(duì)倉庫的訪問,它非常容易使用,并提供一個(gè)歷史回顧,便于日后的管理和維護(hù)及其查找。

版本控制分類:集中式版本控制、分布式版本控制,常見的集中式版本控制有:CVS,SVN,分布式版本控制有:GitLab、GitHub。git在每個(gè)用戶都有自己的私有倉庫及其中央倉庫,用戶先提交代碼到本地的私有倉庫,而后確定無誤后將代碼提交到中央倉庫,這樣大大的方便了開發(fā)者,而相比CVS和SVN都是集中式的版本控制系統(tǒng),工作時(shí)需要從中央服務(wù)器獲取最新代碼,改完之后需推送到服務(wù)器。如果是一個(gè)比較大的文件則需要足夠快的網(wǎng)絡(luò)才能快速提交完成,而使用分布式的版本控制系統(tǒng),每個(gè)用戶都是一個(gè)完整的版本庫,即使沒有中央服務(wù)器也可以提交代碼或者回滾,最終再把改好的代碼提交至中央服務(wù)器進(jìn)行合并即可。

圖示:

wKioL1hrZt6SccxtAADavCX1YJw438.png

Gitlab安裝

安裝前準(zhǔn)備:

1
2
3
4
5
6
7
yum?install?vim?gcc?gcc-c++?wget?net-tools?lrzsz?iotop?lsof?iotop?bash-completion?-y
yum?install?curl?policycoreutils?openssh-server?openssh-clients?postfix?-y
wget?-O?/etc/yum.repos.d/epel.repo?http://mirrors.aliyun.com/repo/epel-7.repo
systemctl??disable?firewalld
sed?-i?'/SELINUX/s/enforcing/disabled/'?/etc/sysconfig/seLinux
hostnamectl??set-hostname?xxx.com.cn
yum?update?–y?&&?reboot

1.關(guān)閉防火墻

systemctl stop firewalld systemctl disable firewalld ?iptables -F ?setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' ? /etc/sysconfig/seLinux ?#需重啟生效

2.配置好base源和epel源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/CentOS-7.repo

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

可配置好gitlab官網(wǎng)源使用yum進(jìn)行安裝,也可使用官方下載的rpm進(jìn)行安裝配置

1
2
3
4
5
6
7
8
vim??/etc/yum.repos.d/gitlab.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1?
gpgkey=https://packages.gitlab.com/gpg.key

3.安裝配置gitlab依賴于Java環(huán)境,安裝之前先安裝jdk,可使用rpm包進(jìn)行安裝等

yum -y install jdk-8u111-Linux-x64.rpm

yum -y install gitlab-ce-8.13.5-ce.0.el7.rpm

4.編輯配置文件/etc/gitlab/gitlab.rb修改配置文件,測試配置文件,啟動(dòng)服務(wù)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
external_url?'http://node1.alren.com'?#此處為本機(jī)IP地址
gitlab_rails['smtp_enable']?=?true
gitlab_rails['smtp_address']?=?"smtp.163.com"
gitlab_rails['smtp_port']?=?25
gitlab_rails['smtp_user_name']?=?"chengong101300@163.com"
gitlab_rails['smtp_password']?=?"aaaaa"
gitlab_rails['smtp_domain']?=?"163.com"
gitlab_rails['smtp_authentication']?=?:login
gitlab_rails['smtp_enable_starttls_auto']?=?true
gitlab_rails['smtp_tls']?=?false
gitlab_rails['gitlab_email_from']?=?"chengong101300@163.com"
user["git_user_email"]?=?"chengong101300@163.com"
#gitlab-ctl?reconfigure?#修改配置文件后需從新編譯此文件
#gitlab-ctl?status?#查看gitlab狀態(tài)信息?默認(rèn)占用80、8080端口
#gitlab-ctl?stop/restart/start?關(guān)閉、重啟、啟動(dòng)gitlab服務(wù)
[root@node1?~]#
[root@node1?~]#?ss?-tnl
State???????Recv-Q?Send-Q?Local?Address:Port???????????????Peer?Address:Port
LISTEN??????0??????128???????127.0.0.1:8080??????????????????????????*:*
LISTEN??????0??????128???????????????*:80????????????????????????????*:*
LISTEN??????0??????128???????????????*:22????????????????????????????*:*
LISTEN??????0??????128???????127.0.0.1:631???????????????????????????*:*
LISTEN??????0??????100???????127.0.0.1:25????????????????????????????*:*
LISTEN??????0??????128???????????????*:8060??????????????????????????*:*
LISTEN??????0??????128??????????????:::22???????????????????????????:::*
LISTEN??????0??????128?????????????::1:631??????????????????????????:::*
LISTEN??????0??????100?????????????::1:25???????????????????????????:::*
[root@node1?~]#?gitlab-ctl?status
run:?gitlab-workhorse:?(pid?115536)?34579s;?run:?log:?(pid?16049)?300897s
run:?logrotate:?(pid?9121)?2913s;?run:?log:?(pid?16068)?300889s
run:?nginx:?(pid?115547)?34579s;?run:?log:?(pid?16055)?300895s
run:?postgresql:?(pid?115553)?34578s;?run:?log:?(pid?15906)?300961s
run:?redis:?(pid?115561)?34578s;?run:?log:?(pid?15823)?300967s
run:?sidekiq:?(pid?115565)?34577s;?run:?log:?(pid?16038)?300903s
run:?unicorn:?(pid?115568)?34577s;?run:?log:?(pid?16007)?300905s
[root@node1?~]#

1.通過瀏覽器訪問微博界面,接下來操作都是在web界面中進(jìn)行,輸入本機(jī)IP地址加上端口進(jìn)行訪問

wKiom1hrjTvRqfL3AADGDJ57B9Y968.png

2.將此處的注冊(cè)按鈕去除,防止其他人員配置登錄。需點(diǎn)擊最下面的save按鈕生效。

wKiom1hrkD7j-EwAAADHdc587EI842.png

3.在創(chuàng)建項(xiàng)目之前需事先創(chuàng)建用戶和組及其根據(jù)需求將用戶加入到組中

wKioL1hrkeTSixE6AACf3Xa0uFo956.png

提示:在gitlab中要事先創(chuàng)建組后才能在組中創(chuàng)建項(xiàng)目或以root身份創(chuàng)建項(xiàng)目,此定義在其自動(dòng)生成的地址中有明確規(guī)定

wKiom1hrkzLAbfsCAADkrjsHTPc367.png

創(chuàng)建項(xiàng)目(project)后將可以對(duì)項(xiàng)目進(jìn)行一定的命令行操作。如下為命令行字符命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Command?line?instructions
Git?global?setup?#git全局設(shè)置
git?config?--global?user.name?"Administrator"
git?config?--global?user.email?"admin@example.com"
Create?a?new?repository
git?clone?git@node1.alren.com:mywebs/webs.git?#從倉庫中克隆代碼
cd?webs
touch?README.md
git?add?README.md?#將修改的代碼或文件提交到本地的倉庫中
git?commit?-m?"add?README"?#將修改的代碼或文件提交到本地的倉庫中并取名
git?push?-u?origin?master?#推送到中央服務(wù)器中
Existing?folder?or?Git?repository
cd?existing_folder
git?init
git?remote?add?origin?git@node1.alren.com:mywebs/webs.git
git?add?.
git?commit
git?push?-u?origin?master

可將多個(gè)用戶添加到同一個(gè)組,以后組內(nèi)的成員將對(duì)此項(xiàng)目擁有一定的權(quán)限

wKioL1hrl0nRtr_KAADU138xlB4352.png

wKiom1hroJCAQJAxAACxz47ZKzU353.png

wKioL1hrmYexhwe9AADCXapQm4s874.png

創(chuàng)建完成之后它提示我們可以創(chuàng)建一個(gè)key對(duì)它進(jìn)行管理,部署key之后則無需密碼可將項(xiàng)目克隆到本地,僅支持ssh模式免秘鑰,同時(shí)自動(dòng)生成一個(gè)url,有兩種形式基于HTTP,SSH

我們點(diǎn)擊REDME可編輯一個(gè)文檔,隨意寫一些內(nèi)容,點(diǎn)擊提交

wKioL1hrmxmhbzLkAABnNuXwLeo187.png

填寫完將會(huì)出現(xiàn)路上所訴,可查看其內(nèi)容。此時(shí)從gitlab中clone時(shí)需輸入用戶名和密碼,免去秘鑰登錄需添加ssh-key,免秘鑰登錄。

wKiom1hropvg4xaKAAEbULKJ-zg416.png
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@node1?~]#?git?clone?http://node1.alren.com/mywebs/webs.git
Cloning?into?'webs'...
Username?for?'http://node1.alren.com':?root
Password?for?'http://root@node1.alren.com':
fatal:?Authentication?failed?for?'http://node1.alren.com/mywebs/webs.git/'
[root@node1?~]#?git?clone?http://node1.alren.com/mywebs/webs.git
Cloning?into?'webs'...
Username?for?'http://node1.alren.com':?root
Password?for?'http://root@node1.alren.com':
warning:?You?appear?to?have?cloned?an?empty?repository.
[root@node1?~]#?ls
anaconda-ks.cfg??webapp??webs
[root@node1?~]#?rm?-rf?webs/
[root@node1?~]#?git?clone??git@node1.alren.com:mywebs/webs.git
Cloning?into?'webs'...
remote:?Counting?objects:?3,?done.
remote:?Total?3?(delta?0),?reused?0?(delta?0)
Receiving?objects:?100%?(3/3),?done.
[root@node1?~]#?ls
anaconda-ks.cfg??webapp??webs
[root@node1?~]#

Git總結(jié):工作區(qū)就是編輯文件的目錄區(qū)域,需要將工作區(qū)的修改好的文件add到暫存區(qū)才能提交到git服務(wù)器,在工作區(qū)有多個(gè)文件的時(shí)候可以將一個(gè)或多個(gè)文件添加至?xí)捍鎱^(qū)提交到git服務(wù)器即可,剛提交后的暫存區(qū)和服務(wù)器的文件是一致的,因此也可以將最新的暫存區(qū)的文件進(jìn)行上線和回滾,但是生產(chǎn)當(dāng)中還是使用服務(wù)器進(jìn)行代碼更新和回滾。

Jenkins簡介

Jenkins是一個(gè)高度插件化的管理平臺(tái),這就是Jenkins流行的原因,因?yàn)镴enkins什么插件都有,有非常靈活的API,開發(fā)可以調(diào)用編寫插件,可完成不同任務(wù)的編排和執(zhí)行。Jenkins有Java語言所研發(fā),此環(huán)境則需部署在Java環(huán)境之上,可下載rpm包或下載.war包丟到webapps目錄下,啟動(dòng)服務(wù),即可訪問。

Jenkins官網(wǎng)地址:https://jenkins.io/

Jenkins安裝及啟動(dòng)

通過rpm包進(jìn)行安裝:

rpm -ivh jdk-8u111-Linux-x64.rpm

rpm -ivh https://pkg.jenkins.io/redhat/jenkins-2.27-1.1.noarch.rpm

可配置yum源,直接使用yum進(jìn)行安裝:

sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo

sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key

在啟動(dòng)之前編輯/etc/sysconfig/jenkins/配置文件,可對(duì)其數(shù)據(jù)目錄、啟動(dòng)的用戶、啟動(dòng)的端口等進(jìn)行修改后啟動(dòng),也可以默認(rèn)。

JENKINS_HOME="/data" ?#數(shù)據(jù)庫目錄,使用高i/o大容量磁盤

JENKINS_USER="jenkins" #啟動(dòng)用戶

JENKINS_PORT="8080" ?#啟動(dòng)端口

啟動(dòng)服務(wù):

systemctl jenkins start 或 /etc/init.d/jenkins start

加入開機(jī)自啟動(dòng)(默認(rèn)Jenkins啟動(dòng)會(huì)占用8080端口,所以其他服務(wù)不能與之沖突):

chkconfig jenkins on

輸入IP地址進(jìn)行訪問:將/data/secrets/initialAdminPassword中將密碼輸入到選框中

wKioL1hrsX6Cs63FAACxz7d8TkY652.png

下一步則是選擇插件的步驟,可以自定義安裝,也可以安裝建議安裝的插件,安裝過程中需連接互聯(lián)網(wǎng),且速度非常慢,可先忽略安裝插件,直接在將插件解壓至Jenkins的插件目錄。

wKiom1hrsbfQi7hCAAFctuOqAU4173.png

wKiom1hrsseCIWydAAC4z0fRygs791.png

如出現(xiàn)插件安裝失敗沒關(guān)系,使用準(zhǔn)備好的插件包解壓至jenkins的plugin目錄即可目錄結(jié)構(gòu)默認(rèn)在/var/lib/jenkins/plugins/。

wKiom1hrs8Lwtqd1AABiqrCIMLA769.png

Jenkins基礎(chǔ)功能 ?

在jenkins-->系統(tǒng)管理-->系統(tǒng)設(shè)置設(shè)置管理員郵箱地址,當(dāng)構(gòu)建失敗時(shí),則會(huì)發(fā)郵件通知

按照實(shí)際情況配置Jenkins URL及其系統(tǒng)管理員郵件地址

wKioL1hrtViBv0VpAABdiFDOzBU651.png

設(shè)置郵件通知,通過設(shè)置好的郵件給需要發(fā)送的收件人發(fā)件reply-to-address

wKiom1hrtVmhMeW1AABib8izpd4671.png

Jenkins項(xiàng)目構(gòu)建

構(gòu)建項(xiàng)目-->輸入項(xiàng)目名稱-->構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目-->點(diǎn)擊ok,不過在創(chuàng)建項(xiàng)目之前需事先配置好jenkins的Credentials-->將私鑰配置在此,將公鑰部署在gitlab中,這樣才能從gitlab中拉取代碼或項(xiàng)目。

wKiom1hruYmD5mZiAADsByw1YgQ930.png

主界面包含系統(tǒng)的大部分配置

在系統(tǒng)設(shè)置中可配置郵件通知,maven、gitlab、sonar scanner郵件通知等

wKiom1hruRqCosNRAACjxQhLn4U700.png

wKiom1hruRizEYkNAAFEp_gYTEo220.png

在系統(tǒng)管理--->插件管理中可安裝大部分插件

wKioL1hruRmjdpDjAAD9HNUyqcQ935.png

持續(xù)部署之jenkins與gitlab(二)

測試部署項(xiàng)目,此項(xiàng)目配置成直接在gitlab中拉取代碼至Jenkins服務(wù)器中,在工作區(qū)域可見,項(xiàng)目名稱為auto-deloy

新建-->填寫項(xiàng)目名稱-->構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目-->點(diǎn)擊OK按鈕

wKioL1hspJ2QWI-FAADl3YQo4pU728.png

需要從gitlab中拉取代碼至Jenkins服務(wù)器則需要在gitlab中deploy keys部署公鑰(jenkins的公鑰),而在Jenkins服務(wù)器中需部署私鑰。

wKiom1hssqeRvUSXAAD_YNgN6KE221.png

配置credentials,存放私鑰

wKiom1hssqezyQnmAACokIpWxnk600.png

需要在項(xiàng)目中配置從哪個(gè)gitlab服務(wù)器中拉取代碼,則需使用gitlab中ssh開頭的地址

點(diǎn)擊auto-deploy-->源碼管理-->選擇倉庫URL和credentials(資格證書)此證書為之前配置中的證書繼承即可

wKioL1hssqjTFnmJAACdMgd7jTo378.png

測試自動(dòng)構(gòu)建,查看是否能從gitlab中拉取代碼至本地Jenkins服務(wù)器中

wKiom1hss6_DSddEAACg14OATmI440.png

可在工作區(qū)中查看Jenkins上拉取的代碼信息

wKiom1hss6_DSddEAACg14OATmI440.png

持續(xù)部署之jenkins與gitlab(三)

sonar簡介

sonar是一個(gè)用于代碼質(zhì)量管理的開放平臺(tái),通過插件機(jī)制,sonar可以集成不同的測試工具,代碼分析工具,以及持續(xù)集成的工具(例如Jenkins、 Hudson )等。sonar并不是簡單地把代碼檢查結(jié)果直接顯示在web界面上,而是通過不同的插件對(duì)這些結(jié)果進(jìn)行加工處理,通過量化的方式度量代碼的質(zhì)量的變化,從而可方便的對(duì)不同的插件對(duì)這些代碼進(jìn)行管理。。在對(duì)其他工具的支持方面,Sonar?不僅提供了對(duì)IDE?的支持,可以在?Eclipse和?IntelliJ IDEA?這些工具里聯(lián)機(jī)查看結(jié)果;同時(shí)Sonar還對(duì)大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用Sonar,此外,Sonar的插件還可以對(duì)?Java?以外的其他編程語言提供支持例如(PHP/Python),對(duì)國際化以及報(bào)告文檔化也有良好的支持。

sonar部署

sonar稱之為代碼質(zhì)量管理,sonar的相關(guān)下載和文檔可以在官網(wǎng)下載,官網(wǎng)地址:https://www.sonarqube.org/downloads/?。需要特別注意最新版的Sonar需要jdk1.8至及以上版本及其數(shù)據(jù)庫版本在5.6以上(這個(gè)必須重視,不然啟動(dòng)服務(wù)是報(bào)錯(cuò)為數(shù)據(jù)庫連接失?。?。上篇文章我們已經(jīng)可以成功的使用git進(jìn)行從gitlab拉取代碼,Sonar的功能就是來檢查代碼是否有BUG,除此之外還有其他的功能,比如說:你的代碼注釋率是多少,代碼有一些建議,編寫語法的建議等。

1.編譯安裝數(shù)據(jù)庫5.6以上版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cd????/opt
tar?xf?mysql-5.6.34-Linux-glibc2.5-x86_64.tar.gz?-C?/usr/local/
cd????/usr/local/
ln?-sv?mysql-5.6.34-Linux-glibc2.5-x86_64????mysql
useradd?mysql?-s?/sbin/nologin?-M?
mkdir?/data?;chown?-R?mysql.mysql?/data
/usr/local/mysql/scripts/mysql_install_db?--user=mysql?--datadir=/data?--basedir=/usr/local/mysql
cd?/usr/local/mysql/;cp?support-files/mysql.server?/etc/init.d/mysqld?;cp?/usr/local/mysql/my.cnf??/etc/my.cnf?
chmod?+x?/etc/init.d/myqld?;chkconfig?mysqld?on?
#編輯/etc/profile.d/添加mysql.sh??
export?PATH=/usr/local/mysql/bin:$PATH???
#編輯/etc/my.cnf,指明datadir和port,及其啟動(dòng)MySQL創(chuàng)建sonar用戶并授權(quán)sonar用戶
grant?all?on?sonar.*?to?'sonar'@'localhost'?identified?by?'pass';?
grant?all?on?sonar.*?to?'sonar'@'10.1.10.%'?identified?by?'pass';?
flush?privileges;

2.下載解壓安裝sonar,在安裝之前需要配置jdk的環(huán)境,jdk的版本需要在1.8以上的版本

unzip sonarqube-5.6.6.zip

ln -sv /usr/local/sonarqube-5.6.6 ?/usr/local/sonar

編輯sonar配置文件,開啟如下配置:/usr/local/sonar/conf/sonar.properties

1
2
3
4
sonar.jdbc.username=sonar???#連接數(shù)據(jù)庫用戶名
sonar.jdbc.password=chen????#連接數(shù)據(jù)庫時(shí)密碼?jdbc.url=jdbc:mysql://10.1.10.67則表示?
sonar.jdbc.url=jdbc:mysql://10.1.10.67:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.web.port=8800?????????#web界面的監(jiān)聽端口

既然使用到MySQL數(shù)據(jù)庫則需連接MySQL數(shù)據(jù)庫,創(chuàng)建庫和授權(quán)用戶

1
2
3
4
create?database?sonar?character?set?utf8?collate?utf8_general_ci;
grant?all?on?sonar.*??to?'sonar'@'localhost'?identified?by?'pass';?
grant?all?on?sonar.*??to?'soanr'@'10.1.10.%'?identified?by?'pass';?
flush?privileges;

啟動(dòng)服務(wù):/usr/local/sonar/bin/Linux-x86_64/sonar.sh start #查看sonar監(jiān)聽的端口8800師傅開啟,及其MySQL服務(wù)器中sonar庫中是否創(chuàng)建出多張表。。。

通過瀏覽器輸入IP地址進(jìn)行訪問,默認(rèn)情況下為英文,需要安裝插件漢化,但是漢化的效果不是很好

默認(rèn)登錄sonar時(shí),用戶名:admin 密碼:admin

安裝中文插件如下配置:

wKiom1hs95vAXOLuAACQhL_MWtI412.png

使用IP地址訪問如下:

wKioL1hs9mjwhiWSAACit2o-3XI090.png

如果安裝失敗可將插件下載好后解壓至sonar默認(rèn)存放插件的目錄,重啟服務(wù)即可,安裝可掃描php/java/Python的插件。

wKioL1hs-NHgylKFAACNIoR6dzo623.png

sonar通過sonarqube scanner掃描器來對(duì)代碼進(jìn)行掃描分析

官方文檔:

http://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

sonar-scanner安裝部署?

unzip sonar-scanner-2.6.1.zip

ln -sv /usr/local/sonar-scanner-2.6.1 ?/usr/local/sonar-scanner

cd /usr/local/sonar-scanner/

grep "^[[:alpha:]]" sonar-scanner.properites

1
2
3
4
sonar.host.url=??#sonar地址?
sonar.sourceEncoding=UTF-8?#設(shè)定字符集
sonar.jdbc.password=chen???#sonar數(shù)據(jù)庫密碼????#如下為連接數(shù)據(jù)庫地址
sonar.jdbc.url=jdbc:mysql://10.1.10.67:3306/sonar?useUnicode=true&characterEncoding=utf8

掃描時(shí)需要在源碼目錄中有掃描配置文件及其源碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
[root@node2?php-sonar-runner]#?ls
README.md??sonar-project.properties??src??validation.txt
[root@node2?php-sonar-runner]#?cat?sonar-project.properties
#?Required?metadata
sonar.projectKey=org.sonarqube:php-simple-sq-scanner?#sonar項(xiàng)目key名稱
sonar.projectName=PHP?::????#sonar項(xiàng)目名稱
Simple?Project?::?SonarQube?Scanner?
sonar.projectVersion=2.0??#版本號(hào)
#?Comma-separated?paths?to?directories?with?sources?(required)
sonar.sources=src?#源碼路徑
#?Language
sonar.language=php?#掃描語言
#?Encoding?of?the?source?files
sonar.sourceEncoding=UTF-8??#字符編碼
[root@node2?php-sonar-runner]#?/usr/local/sonar-scanner/bin/sonar-scanner?#再次執(zhí)行sonar-scanner
INFO:?Scanner?configuration?file:?/usr/local/sonar-scanner/conf/sonar-scanner.properties
INFO:?Project?root?configuration?file:?/home/mageedu/sonar-examples-master/projects/languages/php/php-sonar-runner/sonar-project.properties
INFO:?SonarQube?Scanner?2.6.1
INFO:?Java?1.8.0_111?Oracle?Corporation?(64-bit)
INFO:?Linux?3.10.0-327.el7.x86_64?amd64
INFO:?User?cache:?/root/.sonar/cache
INFO:?Load?global?repositories
INFO:?Load?global?repositories?(done)?|?time=1777ms
WARN:?Property?'sonar.jdbc.url'?is?not?supported?any?more.?It?will?be?ignored.?There?is?no?longer?any?DB?connection?to?the?SQ?database.
WARN:?Property?'sonar.jdbc.username'?is?not?supported?any?more.?It?will?be?ignored.?There?is?no?longer?any?DB?connection?to?the?SQ?database.
WARN:?Property?'sonar.jdbc.password'?is?not?supported?any?more.?It?will?be?ignored.?There?is?no?longer?any?DB?connection?to?the?SQ?database.
INFO:?User?cache:?/root/.sonar/cache
INFO:?Load?plugins?index
INFO:?Load?plugins?index?(done)?|?time=156ms
INFO:?Plugin?[l10nzh]?defines?'l10nen'?as?base?plugin.?This?metadata?can?be?removed?from?manifest?of?l10n?plugins?since?version?5.2.
INFO:?SonarQube?server?5.6.6
INFO:?Default?locale:?"en_US",?source?code?encoding:?"UTF-8"
INFO:?Process?project?properties
INFO:?Load?project?repositories
INFO:?Load?project?repositories?(done)?|?time=832ms
INFO:?Load?quality?profiles
INFO:?Load?quality?profiles?(done)?|?time=1532ms
INFO:?Load?active?rules
INFO:?Load?active?rules?(done)?|?time=6049ms
WARN:?SCM?provider?autodetection?failed.?No?SCM?provider?claims?to?support?thisproject.?Please?use?sonar.scm.provider?to?define?SCM?of?your?project.
INFO:?Publish?mode
INFO:?-------------??Scan?PHP?::?Simple?Project?::?SonarQube?Scanner
INFO:?Language?is?forced?to?php
INFO:?Load?server?rules
INFO:?Load?server?rules?(done)?|?time=4650ms
INFO:?Base?dir:?/home/mageedu/sonar-examples-master/projects/languages/php/php-sonar-runner
INFO:?Working?dir:?/home/mageedu/sonar-examples-master/projects/languages/php/php-sonar-runner/.sonar
INFO:?Source?paths:?src
INFO:?Source?encoding:?UTF-8,?default?locale:?en_US
INFO:?Index?files
INFO:?0?files?indexed
INFO:?Quality?profile?for?php:?Sonar?way
INFO:?Sensor?Lines?Sensor
INFO:?Sensor?Lines?Sensor?(done)?|?time=1ms
INFO:?Sensor?SCM?Sensor
INFO:?No?SCM?system?was?detected.?You?can?use?the?'sonar.scm.provider'?propertyto?explicitly?specify?it.
INFO:?Sensor?SCM?Sensor?(done)?|?time=0ms
INFO:?Sensor?Analyzer?for?"php.ini"?files
INFO:?Sensor?Analyzer?for?"php.ini"?files?(done)?|?time=9ms
INFO:?Sensor?SonarJavaXmlFileSensor
INFO:?Sensor?SonarJavaXmlFileSensor?(done)?|?time=0ms
INFO:?Sensor?Zero?Coverage?Sensor
INFO:?Sensor?Zero?Coverage?Sensor?(done)?|?time=1ms
INFO:?Sensor?Code?Colorizer?Sensor
INFO:?Sensor?Code?Colorizer?Sensor?(done)?|?time=0ms
INFO:?Sensor?CPD?Block?Indexer
INFO:?DefaultCpdBlockIndexer?is?used?for?php
INFO:?Sensor?CPD?Block?Indexer?(done)?|?time=14ms
INFO:?Calculating?CPD?for?0?files
INFO:?CPD?calculation?finished
INFO:?Analysis?report?generated?in?337ms,?dir?size=8?KB
INFO:?Analysis?reports?compressed?in?63ms,?zip?size=3?KB
INFO:?Analysis?report?uploaded?in?643ms
INFO:?ANALYSIS?SUCCESSFUL,?you?can?browse?http://10.1.10.12:8888/dashboard/index/org.sonarqube:php-simple-sq-scanner
INFO:?Note?that?you?will?be?able?to?access?the?updated?dashboard?once?the?server?has?processed?the?submitted?analysis?report
INFO:?More?about?the?report?processing?at?http://10.1.10.12:8888/api/ce/task?id=AVrrR_tSXasaRrmKgvaL
INFO:?------------------------------------------------------------------------
INFO:?EXECUTION?SUCCESS
INFO:?------------------------------------------------------------------------
INFO:?Total?time:?32.914s
INFO:?Final?Memory:?40M/103M
INFO:?------------------------------------------------------------------------
[root@node2?php-sonar-runner]#

掃描后的結(jié)果會(huì)在web界面中給與顯示掃描結(jié)果

wKioL1htDoGygR9DAACoB0xWKgk816.png

Jenkins結(jié)合sonar-scanner自動(dòng)進(jìn)行代碼掃描?

掃描之前需安裝sonarqube plugin插件

系統(tǒng)管理-->管理插件-->搜索sonarqub plugin插件安裝即可

wKioL1htECHgV2nVAAC5gkUbbmg636.png

Jenkins結(jié)合sonar則需在系統(tǒng)管理-->系統(tǒng)設(shè)置-->sonar配置段進(jìn)行配置,輸入name、server URL、server version即可

wKiom1htEVuj4H1tAACoWBBGJNI212.png

系統(tǒng)管理-->Global tools configuration找到sonarqube填寫sonar的安裝路徑及其name

wKioL1htEsXxX0KyAACGtge76bo332.png

全局配置段配置完成之后則在接下來的項(xiàng)目中即可繼承全集配置段中的配置,在需要掃描的項(xiàng)目中嵌入,點(diǎn)開項(xiàng)目-->設(shè)置-->構(gòu)建-->execute sonarqube scanner 將掃描參數(shù)填寫在文本框中

wKioL1htFrLzl2Z0AACLwMHCoqs039.png

完成配置,點(diǎn)擊構(gòu)建,即可自動(dòng)進(jìn)行代碼掃描測試

wKiom1htFrPCRASOAACJrjyGalM268.png

構(gòu)建成功顯示為藍(lán)色的球,在旁邊會(huì)顯示sonar的圖標(biāo),點(diǎn)擊圖標(biāo)可查看代碼的質(zhì)量展示信息

wKiom1htFrOxEKuCAACxHRk7Yeo468.png

構(gòu)建完成后,我們發(fā)現(xiàn)這里的SonarQube可以點(diǎn)擊,我們點(diǎn)擊SonarQube就會(huì)鏈接到10.1.10.65:8800就是代碼查看器的地址

wKiom1htGFjT4B95AABvb4c_z_8777.png

同時(shí),可以在項(xiàng)目設(shè)置中配置構(gòu)建后操作,例如構(gòu)建失敗可定義郵件通知等

wKioL1htGPPzLq7QAACaivfMiNo301.png

構(gòu)建失敗后則會(huì)郵件提醒

wKioL1htnG6g7SQiAAHGvTakLvI646.png

持續(xù)部署之jenkins與gitlab(四)

代碼上線流水發(fā)布操作

Pipeline中文意思為流水線之意,公司可能有很多項(xiàng)目,如果使用Jenkins自動(dòng)構(gòu)建成功后,開發(fā)需要一項(xiàng)一項(xiàng)點(diǎn)擊,比較繁瑣,所以出現(xiàn)pipeline流水化作業(yè)的代碼測試管理,代碼質(zhì)量測試完畢之后,我們需將代碼部署到測試環(huán)境或線上環(huán)境進(jìn)行測試。

項(xiàng)目需求:在任意普通用戶的家目錄先將代碼從gitlab中拉取下來,編寫腳本,實(shí)現(xiàn)將代碼自動(dòng)拷貝至后端的Tomcat主機(jī)或其他web服務(wù)器。

新建項(xiàng)目

點(diǎn)擊新建-->構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目-->點(diǎn)擊OK

wKiom1htsFPDg2M9AADmMrny1y0084.png

點(diǎn)擊項(xiàng)目名稱-->設(shè)置-->構(gòu)建中選擇執(zhí)行遠(yuǎn)程腳本

wKioL1htsdKSwMbtAAB400oUmHU351.png

重要提示:執(zhí)行遠(yuǎn)程命令主要涉及的是權(quán)限問題,我們要搞明白Jenkins是以什么權(quán)限來執(zhí)行命令的,我們現(xiàn)在在Jenkins服務(wù)器上,如果在www用戶上執(zhí)行命令,需要怎么做?

使用Jenkins用戶將公鑰發(fā)送給www用戶

使用root用戶將公鑰發(fā)送給www用戶,如果使用管理員命令則需sudo提權(quán)執(zhí)行,因?yàn)閣eb上默認(rèn)執(zhí)行命令的Jenkins用戶

將Jenkins上的私鑰發(fā)送給www用戶,將root的私鑰發(fā)送給www,并使用sudo提權(quán),使得各個(gè)用戶之間可以互通。

1
2
3
4
5
6
7
[www@node2?~]$?cat?.ssh/authorized_keys
ssh-rsa?AAAAB3NzaC1yc2EAAAADAQABAAABAQDLS+HnuGeiI8xQ3duMoJgdF7y4hXRt6FcXNDsYcQ6LaLT8JHN0EajscuMxjrNNKD+2OtTIzMY9/hkxIfH7TvUQRYfbNro6WTefnjmzyHaluG2gWvtL9zEJczxZhTAPLUa0ILkPzGvoiCC5em6wHWnqvlq7f/1BYSv4FyPhsrSiT3VlqoXB2ZvKRMOhPH5gd38EJIpgDAIPGJZpgLnEHpWJGIRcQBKZk8iwKSE+p38P5kggfbxc+epialKd69r7JjdHuZS/osBWUlklovUdGznlcFI+/1fKoXxL852MCZc/cleG40JDb/kDw1jId00Guza4UoK4G+74QdumilQD+RuP?www@node2.alren.com
ssh-rsa?AAAAB3NzaC1yc2EAAAADAQABAAABAQDFGANCXHKFQbKqxSJCENMg41oMoFZmiwOUSUWfCucQzb6/KRgUdhOjKaUavUZBhx5f7XXbIfpr3CHLJLyRxH7DQgSawmleH0gAkx9n2BaSpe9lKfY8h5qTB9T2nSW012Dsz4hK4n0AeNUvMfqcUO4/V4fVs+hOZCh/S3a5MH1rDkeekbguEnGeUPf7/6BzGpz6LEfR3U3Q4X9hvc9gDWYH4pbwz4xOHyrWADZRiwn76NNuLGkgvcUjl8jnpN02ADwyTlFFIAkgcmuxGg5Zaik3THyoksYoyJ30CPC1sFhVRlSR3eiXijpnTrnfGRLX21JKDRCM2TFoGTPd/WS6iZ3F?root@node2.alren.com
[www@node2?~]$
#編輯/etc/sudoer,注釋tty和添加必要的權(quán)限
root?ALL=(ALL)????ALL?
jenkins?ALL=(ALL)?NOPASSWD?/usr/bin/ssh

在/home/www寫一個(gè)測試腳本,檢車腳本是否可執(zhí)行成功

wKiom1httrSx9xh3AABXtgcN_eg065.png

然后我們點(diǎn)擊立即構(gòu)建,查看構(gòu)建結(jié)構(gòu)

wKiom1httzbjBIR_AABX05EG8ec477.png

上訴腳本能自動(dòng)執(zhí)行,則可配置www用戶可以遠(yuǎn)程ssh到web服務(wù)器,將家目錄下的源碼文件拷貝至web服務(wù)器的站點(diǎn)根目錄實(shí)現(xiàn)自動(dòng)部署。這會(huì)看的是你寫腳本的能力。。。。

項(xiàng)目需求:當(dāng)本地Jenkins代碼測試成功之后自動(dòng)聯(lián)動(dòng)部署代碼至web服務(wù)器的站點(diǎn)根目錄。一系列的動(dòng)作需自動(dòng)完成則需要安裝Parameterized插件,系統(tǒng)管理-->管理插件-->可選插件 搜索Parameterized,如果插件在線安裝不成功你懂得,可將下載好的插件解壓至plugin目錄下,將目錄下的所有文件屬組屬主換成Jenkins,重啟服務(wù)即可。

點(diǎn)擊項(xiàng)目-->設(shè)置-->構(gòu)建后操作-->trigger parameterized build on projects -->Add triggers-->點(diǎn)擊保存

wKiom1htwSbgwam3AABoOm123yE787.png

點(diǎn)擊構(gòu)建項(xiàng)目test-delpoy時(shí)自動(dòng)聯(lián)動(dòng)auto-deloy,進(jìn)行構(gòu)建,可見第一個(gè)球閃爍完后,第二個(gè)球接著閃爍,完成自動(dòng)構(gòu)建

wKioL1htwbjxijhrAACRnD6qXNE059.pngwKioL1htwt-xml1yAABGRvxyxlg076.png

下載Pipline,它是一個(gè)更為方便觀察項(xiàng)目的自動(dòng)構(gòu)建的圖形化工具

系統(tǒng)管理-->插件管理-->搜索安裝插件pipline

image_1b4l83oko147g84cr07193465f5i.png-123.2kB

點(diǎn)擊項(xiàng)目All后面的+號(hào),新建一個(gè)視圖,給視圖取名,自定義一些選項(xiàng)。

wKiom1htxKLQQfaCAADNYdJn3WI273.png

pipeline視圖效果更加直觀:?紅色代表構(gòu)建失敗,綠-藍(lán)代表項(xiàng)目沒有關(guān)聯(lián),兩個(gè)都是綠的則表明項(xiàng)目相互關(guān)聯(lián),依次執(zhí)行,可清晰看到上下情況和次數(shù)。

wKioL1htxTvCFpLNAAC-ttiFV48888.png

git提交操作觸發(fā)Jenkins自動(dòng)構(gòu)建

Jenkins與gitlab集成后,實(shí)現(xiàn)的功能是開發(fā)寫好代碼push到gitlab上,push完成之后,jenkins自動(dòng)幫我們立即構(gòu)建,此方法一般使用在測試環(huán)境。

點(diǎn)擊此項(xiàng)目并可觸發(fā)項(xiàng)目聯(lián)動(dòng)結(jié)合腳本可實(shí)現(xiàn)自動(dòng)上線部署,而往往這個(gè)功能只用在測試部署,上線部署手動(dòng)完成較安全。

需安裝GitlabHook Plugin插件

系統(tǒng)管理-->管理插件-->安裝GitlabHook Plugin

wKiom1htyR3RydG3AADcnV8gcfY087.png

完成后,需配置gitlab hook插件,使用openssl rand -hex 14命令自動(dòng)生成隨機(jī)碼

點(diǎn)擊項(xiàng)目-->設(shè)置-->構(gòu)建后觸發(fā)器

wKioL1ht2PXAu8_IAADXyGodaUo834.png

配置完成后則需在gitlab中配置webhooks

點(diǎn)擊項(xiàng)目-->設(shè)置圖標(biāo)

image_1b4l89cdp18ohdbbomnk8kqe9bl.png-56.7kB

Build Authorization Token Root Plugin 插件使用說明
https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

wKiom1ht47HwXS_bAABib7umGac830.png

示例:buildByToken/buildWithParameters?job=RevolutionTest&token=TacoTuesday&Type=Mexican

http://10.1.10.12:8080/project/test-demo/buildByToken/build?job=test-demoTest&token=ac0c608d605db718fa4b1324

在gitlab上配置如下URL:格式如下:http://X.X.X.X:8080/buildByToken/build?job=項(xiàng)目名&token=隨機(jī)數(shù)

wKiom1ht47HyLeTAAACXwl3f1a0901.png

wKiom1ht9XuwN58QAAB4zaKZ0AM321.png

配置完后,可點(diǎn)擊Test按鈕進(jìn)行測試

wKioL1ht9m-z2V81AABXDK2P0qs845.png

Jenkins控制臺(tái)輸出:

wKiom1ht-CGwZzcLAABFYRd1awU255.png

總結(jié):完成上訴的自動(dòng)聯(lián)動(dòng)后,gitlab+jenkins基本上能滿足中小型企業(yè)的版本上線的工作,配置一次后即可讓你以后上線美滋滋,都交給開發(fā),想不想和開發(fā)一起加班那就得看你怎么想的 :)

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!