準備階段
1.apache-tomcat-7.0.75.tar.gz
2.jdk-8u121-linux-x64.tar.gz
3.apache-maven-3.6.3-bin.tar.gz
4.jenkins.war
網(wǎng)盤地址:鏈接:https://pan.baidu.com/s/1hmV0YgR_m4OphjE9XtWMcA
提取碼:ayzo
創(chuàng)建3個虛擬機
1.CI-Subversion 部署svn
2.CI-Jenkins 部署Jenkins(需要JDK tomcat maven)
3.CI-ApplicationServer 部署應(yīng)用(需要JDK tomcat環(huán)境)
虛擬機我是用VirtualBox創(chuàng)建的,個人感覺很方便,輕巧
1.CI-Subversion
第一步:通過yum命令安裝svnserve,命令如下:
yum -y install subversion
第二步:創(chuàng)建版本庫目錄(此僅為目錄,為后面創(chuàng)建版本庫提供存放位置)
mkdir /svn/svnrepos
第三步:創(chuàng)建svn版本庫
在第二步建立的路徑基礎(chǔ)上,創(chuàng)建版本庫,命令如下
svnadmin create /svn/svnrepos/demo
創(chuàng)建成功后,進入xxxx目錄下
cd /svn/svnrepos/demo
進入目錄,可以看見如下文件信息:
[root@CI-node1 demo]# ll
total 8
drwxr-xr-x. 2 root root 54 Jul 13 02:31 conf
drwxr-sr-x. 6 root root 253 Jul 14 00:12 db
-r--r--r--. 1 root root 2 Jul 13 02:17 format
drwxr-xr-x. 2 root root 250 Jul 13 15:59 hooks
drwxr-xr-x. 2 root root 41 Jul 13 02:17 locks
-rw-r--r--. 1 root root 229 Jul 13 02:17 README.txt
下面是這些目錄的詳細講解

第四步:配置修改
進入已經(jīng)創(chuàng)建好的版本庫目錄下,也就是前文說創(chuàng)建的demo,進入conf
[root@CI-node1 conf]# ll
total 12
-rw-r--r--. 1 root root 1095 Jul 13 02:19 authz
-rw-r--r--. 1 root root 327 Jul 13 02:20 passwd
-rw-r--r--. 1 root root 3074 Jul 13 02:31 svnserve.conf
authz:負責(zé)賬號權(quán)限的管理,控制賬號是否讀寫權(quán)限
passwd:負責(zé)賬號和密碼的用戶名單管理
svnserve.conf:svn服務(wù)器配置文件
1.編輯 authz 文件(注意:[/]也是必須的)

[/] 表示根目錄,即 /svn/svnrepos
fancl = rw 表示用戶fancl對根目錄具有讀寫權(quán)限。
2.編輯 passwd 文件

如上所示,用戶名為:fancl,認證密碼為:123456
3.編輯 svnserve.conf 文件(注意:配置的前面不能有空格,一定要頂格寫)

anon-access = none:表示禁止匿名用戶訪問。
auth-access = write:表示授權(quán)用戶擁有讀寫權(quán)限。
password-db = passswd:指定用戶名口令文件,即 passwd 文件。
authz-db = authz:指定權(quán)限配置文件,即 authz 文件。
realm = /var/svnrepos:指定認證域,即 /svn/svnrepos 目錄
第五步:防火墻開啟(這里以iptable防火墻為例, 注意:如果防火墻關(guān)閉 就無需這一步設(shè)置)
多數(shù)情況下服務(wù)器安裝完成,配置完成后,無法連接svn服務(wù)器,均是防火墻問題【注意:如果是阿里云,騰訊云的服務(wù)器,還需在安全組添加端口開啟規(guī)則】
vi /etc/sysconfig/iptables
添加配置信息
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3690 -j ACCEPT
保存退出
systemctl restart iptables.service #重啟防火墻使配置生效
第六步 啟動svn服務(wù)器(重啟虛擬機 需要重新啟動svn服務(wù))
svnserve -d -r /svn/svnrepos
啟動成功后,可用ps -aux查看服務(wù)啟動是否成功
ps -ef | grep 'svnserve'
[root@CI-node1 conf]# ps -ef | grep 'svnserve'
root 1002 1 0 Jul13 ? 00:00:00 svnserve -d -r /svn/svnrepos
root 1376 975 0 00:37 pts/0 00:00:00 grep --color=auto svnserve
[root@CI-node1 conf]#
七:客戶端訪問svn服務(wù)器
在windows客戶端,輸入地址:svn://ip地址:3690/xxxx (iP地址為你linux的ip,xxxx為前文創(chuàng)建的版本庫名稱,3690為svn默認端口)
彈出輸入用戶名和密碼,輸入即可訪問
2.CI-Jenkins
軟件安裝目錄
JDK:/jdk/jdk1.8.0_121
maven:/mvn/apache-maven-3.6.3
tomcat:/usr/local/tomcat/apache-tomcat-7.0.75
修改 /etc/profile 配置
export JAVA_HOME=/jdk/jdk1.8.0_121
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-7.0.75
export MAVEN_HOME=/mvn/apache-maven-3.6.3
export PATH=$MAVEN_HOME/bin:$PATH
修改完運行下面命令
source /etc/profile ##重啟配置
安裝tomcate
tomcat-user.xml 配置
<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"/>
配置編碼 添加 URIEncoding="UTF-8"
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
把jenkins.war 包放到tomcat的webapps目錄下
然后啟動成功 : ./startup.sh
[root@CI-node3 bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat/apache-tomcat-7.0.75
Using CATALINA_HOME: /usr/local/tomcat/apache-tomcat-7.0.75
Using CATALINA_TMPDIR: /usr/local/tomcat/apache-tomcat-7.0.75/temp
Using JRE_HOME: /jdk/jdk1.8.0_121
Using CLASSPATH: /usr/local/tomcat/apache-tomcat-7.0.75/bin/bootstrap.jar:/usr/local/tomcat/apache-tomcat-7.0.75/bin/tomcat-juli.jar
Tomcat started.
[root@CI-node3 bin]#
登錄Jenkins 地址:http://192.168.56.201:8080/jenkins/
秘鑰地址:vi /root/.jenkins/secrets/initialAdminPassword
需要添加兩個插件
1.Subversion Plug-in #svn插件,可以獲取到項目代碼
2.Deploy to container Plugin ##maven打包后部署到其他服務(wù)器tomcat中
Jenkins修改顯示語言為中文(可以參考這里)
修改 jenkins配置

別名一定要取 后面會用到(供選擇 下拉框)
maven中setting配置 自己要修改好
比如:本地倉庫文件夾創(chuàng)建配置 (/maven_repository)
阿里云加速下載(如下面配置)
<localRepository>/maven_repository</localRepository>
##
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
##
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
另外一個jenkins配置

3.CI-ApplicationServer 同 2.CI-Jenkins 一樣 只需要安裝(JDK 、tomcat) (不再累贅復(fù)述)
4.基礎(chǔ)環(huán)境都配置完成 開始配置jenkins

第一步,jenkins創(chuàng)建任務(wù)

配置源碼管理

3中點進去添加svn用戶,密碼

選擇一個用戶

構(gòu)建配置


構(gòu)建后配置


構(gòu)建觸發(fā)器
就是身份令牌 可以寫的長點 復(fù)雜點

JENKINS_URL=http://192.168.56.201:8080/jenkins
/job/demo/build?token= #除了demo是任務(wù)名稱外 其他是一樣的
fcl_demo #就是身份令牌 可以寫的長點 復(fù)雜點
組合起來就是【http: //192.168.56.201:8080/jenkins/job/demo/build?token=fcl_demo】
最后一步,就是在svn服務(wù)器上配置鉤子程序
進入到svn中demo的目錄下
[root@CI-node1 demo]# ll
total 8
drwxr-xr-x. 2 root root 54 Jul 14 00:31 conf
drwxr-sr-x. 6 root root 253 Jul 14 00:12 db
-r--r--r--. 1 root root 2 Jul 13 02:17 format
drwxr-xr-x. 2 root root 250 Jul 14 01:40 hooks
drwxr-xr-x. 2 root root 41 Jul 13 02:17 locks
-rw-r--r--. 1 root root 229 Jul 13 02:17 README.txt
[root@CI-node1 demo]#
進入hooks目錄下
[root@CI-node1 hooks]# ll
total 40
-rwxr-xr-x. 1 root root 2107 Jul 13 15:59 post-commit
-rw-r--r--. 1 root root 1977 Jul 13 02:17 post-commit.tmpl
-rw-r--r--. 1 root root 1638 Jul 13 02:17 post-lock.tmpl
-rw-r--r--. 1 root root 2289 Jul 13 02:17 post-revprop-change.tmpl
-rw-r--r--. 1 root root 1567 Jul 13 02:17 post-unlock.tmpl
-rw-r--r--. 1 root root 3426 Jul 13 02:17 pre-commit.tmpl
-rw-r--r--. 1 root root 2434 Jul 13 02:17 pre-lock.tmpl
-rw-r--r--. 1 root root 2786 Jul 13 02:17 pre-revprop-change.tmpl
-rw-r--r--. 1 root root 2122 Jul 13 02:17 pre-unlock.tmpl
-rw-r--r--. 1 root root 2780 Jul 13 02:17 start-commit.tmpl
[root@CI-node1 hooks]#
復(fù)制一份post-commit.tmpl
cp post-commit.tmpl post-commit ##注意復(fù)制的那份沒有任何后綴 post-commit
修改post-commit內(nèi)容
#別的東西注釋掉
# REPOS="$1"
# REV="$2"
#別的東西注釋掉
# mailer.py commit "$REPOS" "$REV" /path/to/mailer.conf
#curl的命令 如果你虛擬機沒有 自己安裝個curl
curl -X post -v -u admin:e10a2382a7f84ece8428f5e6cb5a4f92 http://192.168.56.201:8080/jenkins/job/demo/build?token=fcl_demo
注意:#curl的命令 如果你虛擬機沒有 自己安裝個curl
admin:e10a2382a7f84ece8428f5e6cb5a4f92 這個是jenkins的賬號密碼
http ://192.168.56.201:8080/jenkins/job/demo/build?token=fcl_demo 這個就是jenkins任務(wù)中配置的觸發(fā)器
使用chmod 命令修改成可運行程序
chmod 755 post-commit
補充
如果發(fā)生 Jenkins 服務(wù)器從 SVN 服務(wù)器下載代碼不是最新版的情況,那么就在 SVN服務(wù)器的 URL 地址后面加上@HEAD 強制要求下載最新版
