一、前言
Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。
二、部署流程
1、用戶提交代碼到Git倉庫
2、Jenkins服務器從指定Git倉庫拉去代碼,使用maven編譯打包。
3、Jenkins服務器ssh連接應用服務器,將打包好的war或者jar包傳送到應用服務器指定位置,例如 tomcat/webapps
4、Jenkins服務器在應用服務器遠程執行腳本文件 重啓應用服務器tomcat 或者 在應用服務器執行 java -jar 啓動當前項目。
三、Jenkins服務器的安裝與配置工作
〇、Docker安裝Jenkins
安裝環境
-
操作系統 Centos7.3
-
安裝Docker,安裝及配置見 《Docker學習——理解Docker與安裝(一)》
-
Ⅰ.下載最新的Jenkins LTS:
docker pull jenkins/jenkins:lts
Ⅱ.啓動Jenkins前準備
#創建jenkins文件夾,用於和容器內文件夾做磁盤掛載 mkdir /home/jenkins
注意:在安裝jenkins時候,掛在文件夾/home/jenkins/的歸屬用戶id必須是1000,否則會拋出無操作權限異常。異常如下:
需要修改文件夾的歸屬者和組
sudo chown -R 1000:1000 jenkins/
Ⅳ、啓動jenkins
sudo docker run -itd -p 32772:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/jenkins:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone jenkins/jenkins:lts
-p 8080:8080 -p 50000:50000 進行端口映射
--privileged=true 在CentOS7中的安全模塊selinux把權限禁掉了,參數給容器加特權。
-v /home/jenkins:/var/jenkins_home 磁盤掛載
-v /etc/localtime:/etc/localtime 修改/etc/localtime,修改容器的時間
-v /etc/timezone:/etc/timezone 修改jenkins的時區
Ⅴ、查找Jenkins初始密碼
首次啓動會提示初始密碼位置,找到初始密碼:
[root@iZwz9aa0bof90ijp1bsncbZ globalEnvi]# sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 9e3a37cf78264798878606621db632d3
Ⅵ、安裝需要的插件
在jenkins頁面“系統管理”-->“管理插件”-->"可選插件"中搜索:
Maven Integration 用來支持構建maven項目
Publish Over SSH 用來把構建好的部署包傳送到指定服務器的指定位置
GitLab、Gitlab Authentication、Gitlab Hook來獲取倉庫源碼
Ⅶ、配置Jenkins
Maven安裝
#1.下載maven並解壓
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
tar -zxvf apache-maven-3.6.0-bin.tar.gz
#2.修改maven的遠程鏡像爲阿里雲鏡像庫
vim conf/setting.xml
...
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
...
#3.在/etc/profile文件末尾增加以下配置
vim /etc/profile
#注意這裏是maven的安裝路徑
M2_HOME=/home/jenkins/globalEnvi/apache-maven-3.6.0
#4.重載/etc/profile這個文件 source /etc/profile
export PATH=${M2_HOME}/bin:${PATH} JDK安裝
#1.將下載完的jdk解壓
tar -zxvf jdk-8u191-linux-x64.tar.gz
#2.在/etc/profile文件末尾增加以下配置
vim /etc/profile
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
#3.更新配置文件
source /etc/profile Git安裝
#安裝依賴
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc
yum install gcc perl-ExtUtils-MakeMaker |
在jenkins頁面“系統管理”-->“管理插件”-->”全局工具配置”:
Ⅷ、添加SSH Servers(可使用密鑰,也可以使用密碼,這裏我們使用密碼)
在jenkins頁面“系統管理”-->“系統設置”:
至此,Jenkins服務器環境如下 :
環境 | 版本 |
Jenkins | 2.138.3 |
JDK | 1.8.0_191 |
Maven | 3.6.0 |
Git | 1.8.3.1 |
四、部署應用服務器的安裝與配置工作
Tomcat安裝 #1.下載Tomcat並解壓 wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v8.5.35/bin/apache-tomcat-8.5.35.tar.gz tar -zxvf apache-tomcat-8.5.35.tar.gz #2.修改Tomcat服務啓動端口 JDK安裝
#1.將下載完的jdk解壓
tar -zxvf jdk-8u191-linux-x64.tar.gz
#2.在/etc/profile文件末尾增加以下配置
vim /etc/profile
export JAVA_HOME=/home/jenkins/globalEnvi/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
#3.更新配置文件
source /etc/profile |
至此,部署應用服務器環境如下:
環境 | 版本 |
JDK | 1.8.0_191 |
Tomcat | 8.5.35 |
五、實戰演練
Ⅰ、新建一個maven項目(沒有maven項目選項則需要下載對應插件)
Ⅱ、配置源碼管理:
Ⅲ、配置maven項目編譯,maven 執行的命令:
clean package -Dmaven.test.skip=true
Ⅳ、項目構建成功後部署應用服務器的配置
“增加構建後的操作步驟”-->“Send build artifacts over SSH”:
Ⅴ、部署應用服務器的自動化shell腳本
echo "####################Jenkins針對 項目 放到 /home下,且指向/home/auto-deploy.sh腳本,部署開始#####################" #1、配置tomcat路徑 TOMCAT_HOME=/home/tomcat8 #2、配置tomcat端口 TOMCAT_PORT=8080 #3、配置java項目名,不用寫.war PROJECT_NAME=im-server-1.0.0 pid=$(netstat -nlp | grep :$TOMCAT_PORT | awk '{print $7}' | awk -F"/" '{ print $1 }'); echo "根據端口號查詢對應的pid"$pid #殺掉對應的進程,如果pid不存在,則不執行 if [ -n "$pid" ]; then kill -9 $pid; echo "殺掉對應的進程" fi echo "強制刪除tomcat下的項目"$TOMCAT_HOME"/webapps/"$PROJECT_NAME rm -rf $TOMCAT_HOME"/webapps/"$PROJECT_NAME echo "強制刪除tomcat下的項目"$TOMCAT_HOME"/webapps/"$PROJECT_NAME".war" rm -rf $TOMCAT_HOME"/webapps/"$PROJECT_NAME".war" echo '刪除完成' cd $TOMCAT_HOME"/webapps" echo "查看當前"$TOMCAT_HOME"/webapps目錄下的文件" ls -a echo "將遠程打包的war包放入到"$TOMCAT_HOME"/webapps/下" mv /home/$PROJECT_NAME".war" $TOMCAT_HOME/webapps cd $TOMCAT_HOME/bin ./startup.sh DATE_N=`date "+%Y-%m-%d %H:%M:%S"` echo $PROJECT_NAME" 最新構建部署時間:${DATE_N}" >> ../../deploy_time.log #記錄啓動日誌 echo "########################################"$PROJECT_NAME"啓動成功########################################"
Ⅵ、我們回到任務欄,點擊任務最後面的“立即構建”按鈕。
Ⅶ、構建成功
六、授權策略
Ⅰ、在jenkins頁面“系統管理”-->“全局安全配置”-->“授權策略“