九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Jenkins Docker持續(xù)集成

本節(jié)內(nèi)容:

  • Jenkins介紹
  • 安裝部署Jenkins
  • Jenkins構(gòu)建maven風(fēng)格的job
  • Jenkins郵件通知設(shè)置
  • Sonar
  • Jenkins與Docker結(jié)合

 

一、Jenkins介紹

 Jenkins是一個開源軟件項目,是基于Java開發(fā)的一種持續(xù)集成工具,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續(xù)集成變成可能。

 

二、安裝部署Jenkins

下載地址:https://jenkins.io/download/

我這里下載war包安裝,版本:1.642.3 LTS .war

 

1. 環(huán)境信息 

主機(jī)名 操作系統(tǒng)版本 IP地址 安裝軟件
osb30 Redhat 6.5 172.16.206.30 jenkins

 

 

 

2. 新建Jenkins用戶

?
1
2
3
4
5
[root@osb30 ~]# groupadd jenkins
[root@osb30 ~]# useradd -g jenkins jenkins
[root@osb30 ~]# id jenkins
uid=501(jenkins) gid=501(jenkins) groups=501(jenkins)
[root@osb30 ~]# echo 'wisedu' | passwd --stdin jenkins &> /dev/null

 

3. Jenkins安裝方式

安裝jenkins有兩種方式,tomcat方式部署和java部署啟動。本次實驗我以tomcat下部署啟動為例。

(1)tomcat方式部署

a.首先安裝tomcat和JAVA,配置環(huán)境變量(此步驟不再講述,java配置不可缺少)

我這里安裝的是jdk 1.8.0_65。

 

b.將從官網(wǎng)下載下來的jenkins.war文件放入tomcat下的webapps目錄下,進(jìn)入tomcat的/bin目錄下,啟動tomcat即啟動jenkins。

我這里用的是tomcat8。

 

c.啟動jenkins時,會自動在webapps目錄下建立jenkins目錄,訪問地址為:http://localhost:8080/jenkins

?
1
2
3
4
5
[jenkins@osb30 ~]$ tar zxf apache-tomcat-8.0.30.tar.gz
[jenkins@osb30 ~]$ mv jenkins.war apache-tomcat-8.0.30/webapps/
[jenkins@osb30 ~]$ cd apache-tomcat-8.0.30
[jenkins@osb30 apache-tomcat-8.0.30]$ bin/startup.sh
Jenkins home directory: /home/jenkins/.jenkins found at: $user.home/.jenkins

如果啟動時報錯:

?
1
Caused by:java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY varible...

解決:

?
1
2
3
[jenkins@osb30 ~]$ cd apache-tomcat-8.0.30/bin/
[jenkins@osb30 bin]$ vim catalina.sh
JAVA_OPTS='-Xms1024m -Xmx1024m -Djava.awt.headless=true'

 

d.訪問jenkins

http://172.16.206.30:8080/jenkins

 

(2)java部署啟動jenkins

切換到j(luò)enkins.war存放的目錄,輸入如下命令:

?
1
$ java -jar jenkins.war

可以修改啟動端口

?
1
$ java -jar jenkins.war --httpPort=8000

然后在瀏覽器中(推薦用火狐、chrom)輸入http://localhost:8080,localhost可以是本機(jī)的ip,也可以是計算機(jī)名。就可以打開jenkins;修改端口后,訪問地址的端口需同步變更。

 

4. Jenkins授權(quán)和訪問控制

默認(rèn)地Jenkins不包含任何的安全檢查,任何人可以修改Jenkins設(shè)置,job和啟動build等。顯然地在大規(guī)模的公司需要多個部門一起協(xié)調(diào)工作的時候,沒有任何安全檢查會帶來很多的問題。 我們可以通過下面的方式來增強(qiáng)Jenkins的安全:

訪問jenkins:http://172.16.206.30:8080/jenkins

點(diǎn)擊系統(tǒng)管理—> Configure Global Security,點(diǎn)擊”啟用安全”,可以看到可以使用多種方式來增強(qiáng)Jenkins的授權(quán)和訪問控制:

查看策略:

如上圖所示,默認(rèn)是”任何用戶可以做任何事情(沒有任何限制)”。

我們在”安全域”選擇”Jenkins專有用戶數(shù)據(jù)庫”,”允許用戶注冊”;并先在“授權(quán)策略”點(diǎn)擊“任何用戶可以做任何事情(沒有任何限制)”, 防止注冊之后無法再管理jenkins。此時就可以刷新一下jenkins的頁面看到右上角有登錄、注冊的按鈕。

 

(1)注冊管理員賬號

a.點(diǎn)擊注冊,首先注冊一個管理員賬號。

 

b.點(diǎn)擊系統(tǒng)管理—> Configure Global Security,在“授權(quán)策略”選擇”安全矩陣”,添加用戶/組——添加admin賬戶——為admin賬戶添加所有權(quán)限,為匿名用戶勾選你希望對方了解的功能。

【注意】:匿名用戶一定要開啟此處的可讀權(quán)限,若不開啟,后面github或者bitbucket的webhook自動構(gòu)建會沒有權(quán)限。

并且勾選上該項,點(diǎn)擊保存。

做完此部操作之后,即可用admin賬號登錄,取消登錄用戶可以做任何事的權(quán)限。

以上操作,即可完成jenkins的授權(quán)和訪問控制。

 

5. Jenkins系統(tǒng)配置

登錄jenkins——系統(tǒng)管理——系統(tǒng)設(shè)置,為jenkins添加上需要的功能配置,有如下幾個方面:

 

(1)JDK配置

在jdk的選項,點(diǎn)擊”新增JDK”,取消自動安裝,輸入jdk別名(名稱隨意),JAVA_HOME大家應(yīng)該都很了解,在此處填寫jenkins所在服務(wù)器安裝的java程序的HOME位置即可,根據(jù)不同操作系統(tǒng)填寫不同路徑,如win7 D:\Java\jdk1.8   linux /usr/lib/jvm/jdk1.7.0_51。

設(shè)置完了請記得保存。

 

(2)git/svn版本控制添加

根據(jù)使用的版本選擇控制版本的應(yīng)用程序的路徑,如jdk配置即可。

【注意】:如果使用Git作為版本控制庫,Jenkins默認(rèn)情況下是沒有安裝Git的。我們需要到插件管理界面中選中Git,然后點(diǎn)擊直接安裝。

點(diǎn)擊系統(tǒng)管理—>管理插件—>可選插件,在右上角”過濾”處輸入git進(jìn)行搜索:

找到Git client plugin和Git plugin,在前面打上√,點(diǎn)擊直接安裝。

安裝插件中。。。

安裝成功后,重啟jenkins。

?
1
2
3
[jenkins@osb30 ~]$ cd apache-tomcat-8.0.30
[jenkins@osb30 apache-tomcat-8.0.30]$ bin/shutdown.sh
[jenkins@osb30 apache-tomcat-8.0.30]$ bin/startup.sh ;tail -f logs/catalina.out

 

(3)Jenkins添加maven配置

先判斷jenkins所在主機(jī)是否安裝了maven:

?
1
2
# mvn –version
-bash: mvn: command not found

如果沒有安裝,請先安裝maven。

 

a.CentOS 安裝maven

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@osb30 ~]# cd /usr/local/
[root@osb30 local]# wget http://apache.opencas.org/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
[root@osb30 local]# tar zxf apache-maven-3.3.9-bin.tar.gz
[root@osb30 local]# ln -s apache-maven-3.3.9 maven
[root@osb30 local]# vim /etc/profile
# 添加如下配置:
# Maven configuration.
MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
[root@osb30 local]# source /etc/profile
[root@osb30 local]# mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47 08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_65, vendor: Oracle Corporation
Default locale: en_US, platform encoding: UTF-8
OS name: 'linux', version: '2.6.32-431.el6.x86_64', arch: 'amd64', family: 'unix'

 

b.Jenkins配置maven

安裝完成后,登錄jenkins。點(diǎn)擊系統(tǒng)管理—>系統(tǒng)設(shè)置。

 

三、Jenkins構(gòu)建maven風(fēng)格的job

1. 新建maven任務(wù)

登錄jenkins,點(diǎn)擊新建。輸入Item名稱,選擇“構(gòu)建一個maven項目”,點(diǎn)擊OK。

 

 

2. 構(gòu)建任務(wù)配置

 

3. 源碼管理配置

進(jìn)入配置頁面,找到”源碼管理”。我這里是svn,輸入項目所在版本庫的地址。

 

4. 構(gòu)建觸發(fā)器配置

在”源碼管理”下面是”構(gòu)建觸發(fā)器”。

”構(gòu)建觸發(fā)器”是一個持續(xù)集成的觸發(fā)器插件,可以根據(jù)已經(jīng)完成構(gòu)建的結(jié)果,觸發(fā)新Job或者傳遞參數(shù)。默認(rèn)的選項是Build whenever a SNAPSHOT dependency is built,意思是依賴于快照的構(gòu)建,意思是依賴于快照的構(gòu)建,當(dāng)代碼有更新時就構(gòu)建項目。

Build periodically和Poll SCM可以設(shè)置定時自動構(gòu)建。兩者區(qū)別如下:

  • Poll SCM:定時檢查源碼變更(根據(jù)SCM軟件的版本號),如果有更新就checkout最新code下來,然后執(zhí)行構(gòu)建動作。
  • Build periodically:定時進(jìn)行項目構(gòu)建(它不care源碼是否發(fā)生變化)。

我這里設(shè)置為每12小時構(gòu)建一次。

 

5. Maven構(gòu)建設(shè)置

(1)Pre Step

Pre Steps選項用來配置構(gòu)建前的工作,這里不作更改。

(2)配置Root POM和Goals and options

因為是Maven項目,所以Build選項有Root POM和Goals and options的設(shè)置。Root POM:填寫你項目的pom.xml文件的位置,注意:是相對位置,如果該文件不存在,會有紅色字提示。 

比如我這里是:

(3)Post Steps 

在maven項目創(chuàng)建完成后,我們還需要實現(xiàn)每次構(gòu)建完成,將war發(fā)布到阿里云主機(jī)上,以實現(xiàn)自動發(fā)布。我們通過添加shell實現(xiàn)自動發(fā)布。

找到Post steps下有個Execute shell:

【注意】:Jenkins在執(zhí)行該shell腳本的時候是以jenkins這個用戶身份去執(zhí)行。某些場景下請注意環(huán)境變量PATH。

將構(gòu)建完成后,所要采取的動作,shell腳本腳本內(nèi)容如下:

#!/bin/bash #阿里云主機(jī) # Stop tomcat. ssh root@114.55.29.246 '/usr/local/apache-tomcat-7.0.65/bin/shutdown.sh' &>/dev/null sleep 15 # Check the stop is successful or not. If until not, kill the tomcat process. if ssh root@114.55.29.246 'ps -ef|grep tomcat |grep -v 'grep'' &>/dev/null; then tomcat_pid=`ps -ef | grep tomcat | grep -v 'grep' | awk '{print $2}'` kill -9 ${tomcat_pid} fi # Check the stop is successful or not. if ssh root@114.55.29.246 'ps -ef|grep tomcat |grep -v 'grep'' &>/dev/null; then echo 'Tomcat stop failed.Please check the problem.' exit 5 fi # Backup previous version and delete the war in the path /usr/local/apache-tomcat-7.0.65/webapps/. ssh root@114.55.29.246 '/usr/bin/cp -f /usr/local/apache-tomcat-7.0.65/webapps/*.war /backups/*war' ssh root@114.55.29.246 'rm -rf /usr/local/apache-tomcat-7.0.65/webapps/*' # Copy the newest war to aliyun ECS. scp /home/jenkins/.jenkins/workspace/godseye/godseye-parent/godseye-container/target/godseye-container-aliyun.war root@114.55.29.246:/usr/local/apache-tomcat-7.0.65/webapps/godseye.war &>/dev/null # Start the tomcat. ssh root@114.55.29.246 '/usr/local/apache-tomcat-7.0.65/bin/startup.sh' &>/dev/null
shell腳本

 

配置阿里云主機(jī)信任內(nèi)網(wǎng)的這臺jenkins主機(jī):

由于是war包在內(nèi)網(wǎng)服務(wù)器上,發(fā)布的環(huán)境是在阿里云主機(jī)上,所以要配置主機(jī)互信,防止scp war包時還需要輸入密碼。我這里內(nèi)網(wǎng)服務(wù)器ip是172.16.206.30,外網(wǎng)是114.55.29.246。

?
1
2
[jenkins@osb30 ~]$ ssh-keygen -t rsa -f .ssh/id_rsa
[jenkins@osb30 ~]$ ssh-copy-id -i .ssh/id_rsa.pub root@114.55.29.246

 

四、Jenkins郵件通知設(shè)置

1. 配置jenkins自帶的郵件功能

(1)找到系統(tǒng)設(shè)置

 

(2)填寫系統(tǒng)管理員郵箱

【注意】:這個系統(tǒng)管理員郵件地址一定要填寫,否則郵件發(fā)不出去,連下面的測試郵件都發(fā)不出去。

 

(3)找到郵件通知,輸入SMTP服務(wù)器地址,點(diǎn)擊高級,輸入發(fā)件人賬號和密碼

(4)勾選上”通過發(fā)送測試郵件測試配置”,然后輸入收件人賬號

此時我們已經(jīng)可以發(fā)送郵件了。在具體job配置處,找到”構(gòu)建設(shè)置”,輸入收件人信箱,但是你會發(fā)現(xiàn)只能在構(gòu)建失敗時發(fā)郵件??梢园惭b插件Email Extension Plugin來自定義。

 

2. 安裝使用插件Email Extension Plugin

(1)安裝插件Email Extension Plugin

該插件支持jenkins 1.5以上的版本。

在系統(tǒng)管理-插件管理-安裝Email Extension Plugin。它可根據(jù)構(gòu)建的結(jié)果,發(fā)送構(gòu)建報告。該插件支持jenkins 1.5以上的版本。

【注意】:安裝完如果使用Email Extension Plugin,就可以棄用自帶的那個郵件功能了。

 

(2)配置使用插件Email Extension Plugin

點(diǎn)擊”系統(tǒng)配置”—>”系統(tǒng)設(shè)置”。

找到Extended E-mail Notification處,輸入如下的配置:

 【注意】:上面的User Name和Password需要點(diǎn)開“高級設(shè)置”后才能看到,必須輸入用戶名和密碼,否則郵件發(fā)不出去。

構(gòu)建通知:$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! <hr/> (本郵件是程序自動下發(fā)的,請勿回復(fù)!)<br/><hr/> 項目名稱:$PROJECT_NAME<br/><hr/> 構(gòu)建編號:$BUILD_NUMBER<br/><hr/> svn版本號:${SVN_REVISION}<br/><hr/> 構(gòu)建狀態(tài):$BUILD_STATUS<br/><hr/> 觸發(fā)原因:${CAUSE}<br/><hr/> 構(gòu)建日志地址:<a href='${BUILD_URL}console'>${BUILD_URL}console</a><br/><hr/> 構(gòu)建地址:<a href='$BUILD_URL'>$BUILD_URL</a><br/><hr/> 變更集:${JELLY_SCRIPT,template='html'}<br/><hr/>
Email Extension Plugin配置內(nèi)容

點(diǎn)擊下面的保存。

然后去job配置頁面激活這個插件。找到需要發(fā)郵件的項目,點(diǎn)擊進(jìn)去。

點(diǎn)擊配置,點(diǎn)擊”增加構(gòu)建后操作步驟”,選擇Editable Email Notification。

附上構(gòu)建日志,點(diǎn)擊高級設(shè)置。

配置Triggers:

更詳細(xì)的介紹:http://www.cnblogs.com/zz0412/p/jenkins_jj_01.html

 

五、Sonar

官方文檔:http://docs.sonarqube.org/display/SONARQUBE45/Documentation

 

1. sonar簡介

Sonar是一個用于代碼質(zhì)量管理的開源平臺,用于管理Java源代碼的質(zhì)量。通過插件機(jī)制,Sonar 可以集成不同的測試工具,代碼分析工具,以及持續(xù)集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通過不同的插件對這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。

與持續(xù)集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是簡單地把不同的代碼檢查工具結(jié)果(例如 FindBugs,PMD 等)直接顯示在 Web 頁面上,而是通過不同的插件對這些結(jié)果進(jìn)行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對不同規(guī)模和種類的工程進(jìn)行代碼質(zhì)量管理。

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

此外,Sonar 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報告文檔化也有良好的支持。

 

2. 環(huán)境要求

http://docs.sonarqube.org/display/SONAR/Requirements 

 

3. 新建用戶

?
1
2
3
4
5
[root@osb30 ~]# groupadd sonar
[root@osb30 ~]# useradd -g sonar sonar
[root@osb30 ~]# id sonar
uid=502(sonar) gid=502(sonar) groups=502(sonar)
[root@osb30 ~]# echo 'wisedu' | passwd --stdin sonar &> /dev/null

 

4. 安裝jdk

?
1
2
3
4
[sonar@osb30 ~]$ java -version
java version '1.8.0_65'
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

 

5. 安裝配置數(shù)據(jù)庫

?
1
2
3
4
5
6
[root@osb30 ~]# mysql -uroot –p
mysql> CREATE DATABASE sonar CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'wisedu';
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'wisedu';
mysql> FLUSH PRIVILEGES;

 

6. 安裝sonar

我這里用的版本是SonarQube 4.5.7 (LTS *),上傳該軟件到sonar用戶的家目錄下。

?
1
2
[sonar@osb30 ~]$ unzip -oq sonarqube-4.5.7.zip
[sonar@osb30 ~]$ vim sonarqube-4.5.7/conf/sonar.properties

修改如下字段(就是配置數(shù)據(jù)庫信息,其他不用動):

?
1
2
3
4
5
6
sonar.jdbc.username:                       sonar
sonar.jdbc.password:                       wisedu
sonar.jdbc.url:                            jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true
# Optional properties
sonar.jdbc.driverClassName:                com.mysql.jdbc.Driver

 

7. 啟動sonar

Sonar默認(rèn)集成了jetty容器,可以直接啟動提供服務(wù),也可以通過腳本構(gòu)建為war包,部署在tomcat容器中。

Sonar默認(rèn)的端口是”9000”、默認(rèn)的上下文路徑是”/”、默認(rèn)的網(wǎng)絡(luò)接口是”0.0.0.0”,默認(rèn)的管理員賬號和密碼為:admin/admin,這些參數(shù)都可以在配置文件sonar.properties中修改。我這里修改下port,因為本機(jī)的9000端口被其他程序占用了。

?
1
2
3
[sonar@osb30 ~]$ vim sonarqube-4.5.7/conf/sonar.properties
sonar.web.port=9003
[sonar@osb30 ~]$ sonarqube-4.5.7/bin/linux-x86-64/sonar.sh start

查看日志:

?
1
[sonar@osb30 ~]$ tail -f sonarqube-4.5.7/logs/sonar.log

可以看到第一次啟動時,初始化語句:

 

8. 關(guān)閉sonar

?
1
[sonar@osb30 ~]$ sonarqube-4.5.7/bin/linux-x86-64/sonar.sh stop

 

9. 訪問sonar

瀏覽器輸入http://172.16.206.30:9003/

默認(rèn)的管理員賬號和密碼為:admin/admin。

 

 

 

10. sonar插件

Sonar支持多種插件,插件的下載地址為:http://docs.codehaus.org/display/SONAR/Plugin Library

將下載后的插件上傳到${SONAR_HOME}extensions\plugins目錄下,重新啟動sonar。

sonar默認(rèn)集成了Java Ecosystem插件,該插件是一組插件的合集:

  • Java [sonar-java-plugin]:java源代碼解析,計算指標(biāo)等
  • Squid [sonar-squid-java-plugin]:檢查違反Sonar定義規(guī)則的代碼
  • Checkstyle [sonar-checkstyle-plugin]:使用CheckStyle檢查違反統(tǒng)一代碼編寫風(fēng)格的代碼
  • FindBugs [sonar-findbugs-plugin]:使用FindBugs檢查違反規(guī)則的缺陷代碼
  • PMD [sonar-pmd-plugin]:使用pmd檢查違反規(guī)則的代碼
  • Surefire [sonar-surefire-plugin]:使用Surefire執(zhí)行單元測試
  • Cobertura [sonar-cobertura-plugin]:使用Cobertura獲取代碼覆蓋率
  • JaCoCo [sonar-jacoco-plugin]:使用JaCOCO獲取代碼覆蓋率

 

11. 與jenkins集成

可以通過maven集成,也可以直接與jenkins集成。我這里選擇直接與jenkins集成。

(1)修改maven的主配置文件(${MAVEN_HOME}/conf/settings.xml文件或者 ~/.m2/settings.xml文件),在其中增加訪問Sonar數(shù)據(jù)庫及Sonar服務(wù)地址,添加如下配置:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<profile>
<id>sonar</id>
<properties>
    <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonar</sonar.jdbc.url>
    <sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
    <sonar.jdbc.username>sonar</sonar.jdbc.username>
    <sonar.jdbc.password>sonar</sonar.jdbc.password>
    <sonar.host.url>http://localhost:9003</sonar.host.url> <!-- Sonar服務(wù)器訪問地址 -->
</properties>
</profile>
<activeProfiles>
    <activeProfile>sonar</activeProfile>
</activeProfiles>
...

這部分內(nèi)容具體可參照網(wǎng)上http://www.cnblogs.com/gao241/p/3190701.html

 

(2)在jenkins的插件管理中選擇安裝sonar jenkins plugin,該插件可以使項目每次構(gòu)建都調(diào)用sonar進(jìn)行代碼度量。

a.安裝插件

 

b.系統(tǒng)配置添加sonar的配置

進(jìn)入系統(tǒng)配置頁面對sonar插件進(jìn)行配置,如下圖:

 

然后點(diǎn)擊下面的保存。

 

c.配置構(gòu)建項目,增加Post Build Action

點(diǎn)擊要構(gòu)建的項目,在點(diǎn)擊左側(cè)的配置。

在頁面的最下面找到”構(gòu)建后操作”,選擇SonarQube。

 

It is no longer recommended to use SonarQube maven builder. It is preferable to set up SonarQube in the build environment and use a standard Jenkins maven target.

【解決】:
http://docs.sonarqube.org/display/SCAN/Analyzing with SonarQube Scanner for Jenkins

修改Build處:

 

最后去jenkins構(gòu)建項目,構(gòu)建完查看sonar控制臺:

 

12. 常見問題

Jenkins構(gòu)建完成后,sonar掃描代碼報錯:

解決: 卸載sonar的JavaScript插件。

 

六、Jenkins與Docker結(jié)合

我這里沒有使用Docker Pipeline,直接在構(gòu)建完成后,執(zhí)行shell腳本,這樣更靈活。

 

1. 部署流程

  1. 研發(fā)push到svn代碼庫
  2. Jenkins 構(gòu)建,pull svn代碼 使用maven進(jìn)行編譯打包
  3. 打包生成的代碼,生成一個新版本的鏡像,push到本地docker倉庫harbor
  4. 發(fā)布,測試機(jī)器 pull 新版本的鏡像,并刪除原來的容器,重新運(yùn)行新版本鏡像。

 

2. 環(huán)境說明

主機(jī)名 操作系統(tǒng)版本 IP地址 用途 安裝軟件
osb30 Redhat 6.5 172.16.206.30 svn代碼庫、Jenkins、Docker jenkins、svn、Docker 1.7.1
spark32 CentOS 7.0 172.16.206.32 本地docker倉庫、業(yè)務(wù)部署測試環(huán)境 harbor、Docker 17.06.1-ce

 

 

 

 

3. 配置

由于在Jenkins機(jī)器上docker是使用root用戶運(yùn)行的,而Jenkins是使用普通用戶jenkins運(yùn)行的,所以要先配置下jenkins用戶可以使用docker命令。

?
1
2
[root@osb30 ~]# visudo
jenkins ALL=(root)      NOPASSWD: /usr/bin/docker

另外在Jenkins機(jī)器上配置:

?
1
2
3
4
5
# Disable 'ssh hostname sudo <cmd>', because it will show the password in clear.
#         You have to run 'ssh -t hostname sudo <cmd>'.
#
#Defaults    requiretty
Defaults:jenkins !requiretty

如果不配置這個,在執(zhí)行下面腳本時,會報錯誤:

?
1
2
3
cp -f /home/jenkins/.jenkins/workspace/godseyeBranchForNov/godseye-container/target/godseye-container-wisedu.war /home/jenkins/docker-file/godseye_war/godseye.war
sudo docker login -u jkzhao -p Wisedu123 -e 01115004@wisedu.com 172.16.206.32
sudo: sorry, you must have a tty to run sudo

在172.16.206.32機(jī)器上配置:

?
1
2
3
4
# visudo
#
#Defaults    requiretty
Defaults:root !requiretty

否則在機(jī)器172.16.206.32機(jī)器上執(zhí)行腳本時會報錯:

?
1
2
3
[SSH] executing...
sudo: sorry, you must have a tty to run sudo
docker: invalid reference format.

 

4. 安裝插件

登錄Jenkins,點(diǎn)擊“系統(tǒng)管理”,點(diǎn)擊“管理插件”,搜索插件“SSH plugin”,進(jìn)行安裝。

登錄Jenkins,點(diǎn)擊“Credentials”,點(diǎn)擊“Add domain”。

 

 

點(diǎn)擊“系統(tǒng)管理”,“系統(tǒng)配置”,找到“SSH remote hosts”。

 

5. 配置Post Steps

項目其他的配置不變,見上面的章節(jié)。

【注意】:腳本中用到的倉庫和認(rèn)證的賬號需要先在harbor新建好。

 

?
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
# Jenkins機(jī)器:編譯完成后,build生成一個新版本的鏡像,push到遠(yuǎn)程docker倉庫
# Variables
JENKINS_WAR_HOME='/home/jenkins/.jenkins/workspace/godseyeBranchForNov/godseye-container/target'
DOCKERFILE_HOME='/home/jenkins/docker-file/godseye_war'
HARBOR_IP='172.16.206.32'
REPOSITORIES='godseye_war/godseye'
HARBOR_USER='jkzhao'
HARBOR_USER_PASSWD='Wisedu123'
HARBOR_USER_EMAIL='01115004@wisedu.com'
# Copy the newest war to docker-file directory.
\cp -f ${JENKINS_WAR_HOME}/godseye-container-wisedu.war ${DOCKERFILE_HOME}/godseye.war
# Delete image early version.
sudo docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} -e ${HARBOR_USER_EMAIL} ${HARBOR_IP} 
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n '${IMAGE_ID}' ];then
    sudo docker rmi ${IMAGE_ID}
fi
# Build image.
cd ${DOCKERFILE_HOME}
TAG=`date %Y%m%d-%H%M%S`
sudo docker build -t ${HARBOR_IP}/${REPOSITORIES}:${TAG} . &>/dev/null
# Push to the harbor registry.
sudo docker push ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null

 

?
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
# 拉取鏡像,發(fā)布
HARBOR_IP='172.16.206.32'
REPOSITORIES='godseye_war/godseye'
HARBOR_USER='jkzhao'
HARBOR_USER_PASSWD='Wisedu123'
# 登錄harbor
#docker login -u ${HARBOR_USER} -p ${HARBOR_USER_PASSWD} ${HARBOR_IP}
# Stop container, and delete the container.
CONTAINER_ID=`docker ps | grep 'godseye_web' | awk '{print $1}'`
if [ -n '$CONTAINER_ID' ]; then
    docker stop $CONTAINER_ID
    docker rm $CONTAINER_ID
else #如果容器啟動時失敗了,就需要docker ps -a才能找到那個容器
    CONTAINER_ID=`docker ps -a | grep 'godseye_web' | awk '{print $1}'`
    if [ -n '$CONTAINER_ID' ]; then  # 如果是第一次在這臺機(jī)器上拉取運(yùn)行容器,那么docker ps -a也是找不到這個容器的
        docker rm $CONTAINER_ID
    fi
fi
# Delete godseye_web image early version.
IMAGE_ID=`sudo docker images | grep ${REPOSITORIES} | awk '{print $3}'`
if [ -n '${IMAGE_ID}' ];then
    docker rmi ${IMAGE_ID}
fi
# Pull image.
TAG=`curl -s http://${HARBOR_IP}/api/repositories/${REPOSITORIES}/tags | jq '.[-1]' | sed 's/\'//g'` #最后的sed是為了去掉tag前后的雙引號
docker pull ${HARBOR_IP}/${REPOSITORIES}:${TAG} &>/dev/null
# Run.
docker run -d --name godseye_web -p 8080:8080 ${HARBOR_IP}/${REPOSITORIES}:${TAG}
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
【云原生】第十一篇
Jenkins 集成 SonarQube Scanner
snv+maven+jenkins+jboss+sonar做持續(xù)集成
持續(xù)集成Jenkins+sonarqube部署教程
Jenkins使用經(jīng)驗談4(創(chuàng)建Job)轉(zhuǎn)
《jenkins2.x持續(xù)集成部署教程》(4)創(chuàng)建項目
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服