什么是持續(xù)集成?
1.Continuous integration(CI)
持續(xù)集成是一種軟件開發(fā)實踐,即團(tuán)隊開發(fā)成員經(jīng)常集成他們的工作,通常每個成員至少集成一次,也就意味著每天可能會發(fā)生多次集成。每次集成都通過自動化的構(gòu)建(包括編譯,發(fā)布,自動化測試)來驗證,從而盡快地發(fā)現(xiàn)集成錯誤。許多團(tuán)隊發(fā)現(xiàn)這個過程可以大大減少集成的問題,讓團(tuán)隊能夠更快的開發(fā)內(nèi)聚的軟件。
2.沒有持續(xù)集成
項目做模塊集成的時候,發(fā)現(xiàn)很多接口都不通==>浪費大量時間
需要手動去編譯打包最新的代碼==>構(gòu)建過程不透明
發(fā)布代碼,上線,基本靠手工==>腳本亂飛
摘自https://www.cnblogs.com/jimmy-xuli/p/9020825.html
3. 如何解決這些問題
持續(xù)集成是一個理念,落實持續(xù)集成我們需要借助工具,如果我們不借助工具的話,很難實現(xiàn)。
jenkins下載
jenkins官網(wǎng)https://jenkins.io/zh/
進(jìn)入官網(wǎng)進(jìn)行下載,細(xì)心的同學(xué)估計已經(jīng)發(fā)現(xiàn)了,下載下來的是一個war包
jenkins啟動
將war包放進(jìn)tomcat中啟動
這里我們用docker做環(huán)境隔離,以免和本機(jī)環(huán)境沖突,docker的安裝這里就不多做介紹了,大家自行了解
創(chuàng)建tomcat容器
docker run -itd --name jenkins -p 1888:8080 tomcat:8.5
訪問本機(jī)地址:http://localhost:1888/
看到如下界面說明tomct容器創(chuàng)建成功
啟動jenkins
將下載的jenkins.war文件放入容器的/usr/local/tomcat/webapps/文件下tomcat會自動啟動這個項目
docker 拷貝宿主機(jī)文件到容器內(nèi)
docker cp 宿主機(jī)文件位置 容器名稱:容器路徑
舉例:
docker cp ./jenkins.war jenkins:/usr/local/tomcat/webapps/
將宿主機(jī)當(dāng)前目錄下的jenkins.war 拷貝到名稱為jenkins的容器/usr/local/tomcat/webapps/文件夾下
訪問地址:http://localhost:1888/jenkins/
看到如下界面jenkins啟動成功
jenkins安裝引導(dǎo)
- 根據(jù)提示:將/root/.jenkins/secrets/initialAdminPassword文件內(nèi)容復(fù)制填寫
- 這里的目錄當(dāng)然是指的容器里的路徑
進(jìn)入容器
docker exec -it jenkins /bin/bash
進(jìn)入容器效果圖
查看文件內(nèi)容
cat /root/.jenkins/secrets/initialAdminPassword
將內(nèi)容復(fù)制出來寫入jenkins引導(dǎo)頁面點繼續(xù)
出現(xiàn)如下界面: 選擇"安裝推薦的插件"
進(jìn)入如下界面,等待安裝完成
安裝完成后自動進(jìn)入如下界面: 點擊"使用admin賬戶繼續(xù)"
出現(xiàn)如下界面點擊:"保存并完成"
出現(xiàn)如下界面點擊:"開始使用jenkins"
jenkins引導(dǎo)完成
jenkins配置操作權(quán)限
公開權(quán)限(設(shè)置任何人有任何權(quán)限)
選擇Anyone can do anything 然后保存
jenkins配置全局工具
配置Maven的settings.xml文件, 選擇“文件系統(tǒng)中的settings文件” ,并填寫settings.xml的位置
這里的位置當(dāng)然也是容器里面的位置了
容器內(nèi)目前還沒有maven環(huán)境
安裝maven
apt-get install maven
信息如下,提示找不到maven的包
將源改為國內(nèi)站點,這樣下載maven比較快
運行如下命令
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "" > /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian-security stretch/updates main" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian-security stretch/updates main" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list
更新源
apt-get update
再次安裝maven, 安裝過程中會有一次詢問,輸出Y敲回車?yán)^續(xù)安裝
apt-get install maven
查看maven是否安裝成功, 查看maven版本信息
mvn -v
如下: 得知maven home的位置是 /usr/share/maven, 將此地址加上/conf/settings.xml填入全局設(shè)置里面
修改maven倉庫地址為國內(nèi)站點,提升下載速度
先下載vim, 下載過程中會詢問是否繼續(xù)輸入Y敲回車
apt-get install vim
maven設(shè)置國內(nèi)地址
vim /usr/share/maven/conf/settings.xml
在mirrors標(biāo)簽下添加如下
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
配置maven
因為我們用不到git所有刪除git配置,
點擊新增maven 勾掉自動安裝
maven的別名: myMaven
maven的地址: /usr/share/maven
配置jdk
查看java_home
cat $JAVA_HOME
得知JAVA_HOME為/usr/local/openjdk-8
配置完成之后點擊保存
創(chuàng)建構(gòu)建任務(wù)
點擊保存
點擊工作區(qū)
這里還不能構(gòu)建,因為我們還沒有配置SVN項目
配置SVN項目(假如你已經(jīng)準(zhǔn)備好了SVN的環(huán)境,如果沒有請移步本文下方subversion服務(wù)安裝)
點擊 源碼管理----> subversion 配置項目倉庫地址
- 注意這里:填寫的不是localhost而是10.0.17.1,作為容器來說他會從我們配置的地址去拉取源碼,localhost是本機(jī)的意思,在jenkins容器中執(zhí)行的話就代表容器本身,jenkins本身沒有沒有SVN服務(wù),所以這里不能配置localhost,要配置局域網(wǎng)
- 為什么不是192.xx.xx.xx 而是10.0.17.1
因為我們的192.xx.xx.xxIP地址是動態(tài)IP,也許下次鏈接的時候就變成別的了,這樣下次構(gòu)建就拉不到源碼了
而10.0.17.1這個IP是分配給Docker的虛擬網(wǎng)卡的IP這里只要你不改就不會變的
查看docker ip
ipconfig
也可以通過網(wǎng)絡(luò)鏈接查看
添加svn賬號密碼 @HEAD 拉去最新版本的代碼
填寫完成點擊添加
選擇剛剛添加的憑證
配置構(gòu)建
選擇我們之前配置的maven
構(gòu)建命令 clean package
構(gòu)建項目
進(jìn)入myProject任務(wù)
立即構(gòu)建
- 藍(lán)色:成功
- 紅色:失敗
-
灰色:取消的
image.png
查看構(gòu)建過程
控制臺輸出的構(gòu)建信息
進(jìn)入工作區(qū)查看構(gòu)建之后的內(nèi)容
進(jìn)入target, 構(gòu)建完成 產(chǎn)生的war包, 到這里我們實現(xiàn)了構(gòu)建
部署
deploy to container
部署到容器的插件: deploy to container
tips: 安裝的時候有可能會失敗,多試幾次就可以了
安裝 deploy to container插件
如果這一步失敗的話,多試幾次
配置構(gòu)建后的操作(假如你已經(jīng)有tomcat服務(wù)了,否則請移步本文下方:tomcat服務(wù)器)
配置war包位置及訪問名稱
這里的war包是你打包之后的war包位置, 一般都是在項目的target目錄下,war包名稱直接點擊工作空間下的target看下就知道了,我這里是ssm.war
項目訪問后綴為ssm
選擇部署的容器版本
添加tomcat用戶名密碼
選中添加的用戶
配置tomcat地址 這里的ip于svn同理
執(zhí)行構(gòu)建之前查看tomcat8.5容器內(nèi)的webapps
點擊構(gòu)建項目
構(gòu)建項目之后, 已經(jīng)將war包部署上去了
訪問:http://10.0.17.1:1890/ssm/
完成構(gòu)建后自動部署
構(gòu)建觸發(fā)器
填寫token 自己隨便寫
根據(jù)提示拼接地址: http://jenkinsUrl/job/myProject/build?token=自己設(shè)置的token值
保存之后訪問:會觸發(fā)jenkins構(gòu)建 這里ip是10.xx.xx與svn同理
http://10.0.17.1:1888/jenkins/job/myProject/build?token=AUTO_DEPLOY
訪問之后查看jenkins, 正在構(gòu)建
現(xiàn)在通過訪問地址就能觸發(fā)構(gòu)建,接下來在svn commit的時候訪問這個地址就能完成自動構(gòu)建和部署
自動構(gòu)建
進(jìn)入svn服務(wù)器
docker exec -it svn /bin/bash
安裝curl
apt-get install curl
利用curl訪問觸發(fā)地址
curl http://10.0.17.1:1888/jenkins/job/myProject/build?token=AUTO_DEPLOY
現(xiàn)在要做的是SVN提交后觸發(fā)這個腳本就可以實現(xiàn)自動部署
進(jìn)入項目hooks
cd /var/local/svn/myProject/hooks
拷貝post-commit.tmpl
docker cp post-commit.tmpl post-commit
將觸發(fā)腳本寫入 post-commit 文件
vim post-commit
- post-commit 文件是SVN內(nèi)置的,commit之后就會自動執(zhí)行post-commit文件
將post-commit 設(shè)置為可執(zhí)行文件
chmod 755 post-commit
這里的#!/bin/sh 一定不能去掉,否則會導(dǎo)致,不能觸發(fā)部署
修改項目并且提交
提交成功后開始自動構(gòu)建
訪問我們部署的項目,修改內(nèi)容成功! 以后每次commit都會自動構(gòu)建部署
subversion 服務(wù)安裝
用svn鏡像創(chuàng)建subversion服務(wù)
docker run -itd --name svn -p 1889:80 marvambass/subversion
訪問:http://localhost:1889/
如下界面,svn服務(wù)端創(chuàng)建完成
修改apt源為國內(nèi)的
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "" > /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list
更新源
apt-get update
安裝vim 安裝過程中會詢問你是否繼續(xù),輸入Y敲回車?yán)^續(xù)安裝
apt-get install vim
在svn上創(chuàng)建一個項目
進(jìn)入svn容器
docker exec -it svn /bin/bash
進(jìn)入svn倉庫
cd /var/local/svn/
創(chuàng)建項目倉庫
svnadmin create myProject
修改倉庫配置
cd myProject/conf/
vim svnserve.conf
將如下注釋打開
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
tips:anon-access=read屬性除了去掉注釋還需要把值改為none
創(chuàng)建一個用戶
vim passwd
在結(jié)尾添加如下內(nèi)容
svn_user = 123456
- 創(chuàng)建一個用戶:svn_user
-
密碼:123456
image.png
設(shè)置用戶權(quán)限
vim authz
在結(jié)尾添加如下內(nèi)容
[/]
svn_user = rw
* =
- svn_user = rw:設(shè)置svn_user用戶對跟目錄有讀寫權(quán)限
- *= :其他用戶沒有權(quán)限
訪問http://localhost:1889/svn/
如下項目倉庫創(chuàng)建成功
測試鏈接svn服務(wù)
用idea測試鏈接
輸入svn倉庫地址 http://localhost:1889/svn/myProject
雙擊輸入用戶名密碼
將項目上傳到SVN MyProject倉庫中
自己到創(chuàng)建一個maven項目獲取去github上下載一個
將項目交給版本控制工具管理
選擇subversion
項目變成紅色,已經(jīng)交給了SVN管理但是還沒有與遠(yuǎn)程倉庫同步
將項目關(guān)聯(lián)遠(yuǎn)程倉庫
右鍵項目跟目錄
選擇要關(guān)聯(lián)的遠(yuǎn)程倉庫地址
點擊ok
完成關(guān)聯(lián)
將項目提交到遠(yuǎn)程svn倉庫
選擇要提交的文件
.gitignore .idea test 不需要提交, 尤其是test構(gòu)建的時候有可能會執(zhí)行單元測試,如果失敗就會影響發(fā)布
點擊commit提交到遠(yuǎn)程倉庫
這里是警告信息,直接點擊commit
這里是警告信息,直接點擊commit
提交到遠(yuǎn)程倉庫之后沒有顏色了
訪問http://localhost:1889/svn/myProject/
tomcat服務(wù)器安裝
使用docker安裝tomcat服務(wù)
docker run -itd --name tomcat8.5 -p 1890:8080 tomcat:8.5
訪問地址:http://localhost:1890/
效果圖
更改為國內(nèi)源
進(jìn)入tomcat
docker exec -it tomcat8.5 /bin/bash
cp /etc/apt/sources.list /etc/apt/sources.list.bak
echo "" > /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ stretch main non-free contrib" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian-security stretch/updates main" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian-security stretch/updates main" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ stretch-updates main non-free contrib" >> /etc/apt/sources.list
echo "deb http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list
echo "deb-src http://mirrors.aliyun.com/debian/ stretch-backports main non-free contrib" >> /etc/apt/sources.list
更新源
apt-get update
安裝vim, 安裝過程中會詢問是否繼續(xù),輸入Y敲回車?yán)^續(xù)安裝
apt-get install vim
配置tomcat用戶
修改文件
vim /usr/local/tomcat/conf/tomcat-users.xml
我這里配置的用戶名是 tomcat_user 密碼:123456
添加如下代碼
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcat_user" password="123456"
roles="manager-gui,manager-script,manager-jmx,manager-status" />
設(shè)置IP訪問權(quán)限
vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
注釋掉
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
重啟容器
docker restart tomcat8.5
訪問:http://localhost:1890
驗證用戶
效果圖: 配置完成
寫作不易,如果文章對您有幫助請給個贊支持下,如有錯誤請指出。謝謝~~
版權(quán)聲明:原創(chuàng)文章,轉(zhuǎn)載請注明來源。