Docker安裝Jenkins實現項目自動部署(Java Web項目) 原

一、前言

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。

二、部署流程

1、用戶提交代碼到Git倉庫

2、Jenkins服務器從指定Git倉庫拉去代碼,使用maven編譯打包。

3、Jenkins服務器ssh連接應用服務器,將打包好的war或者jar包傳送到應用服務器指定位置,例如 tomcat/webapps

4、Jenkins服務器在應用服務器遠程執行腳本文件 重啓應用服務器tomcat 或者 在應用服務器執行 java -jar 啓動當前項目。

三、Jenkins服務器的安裝與配置工作

〇、Docker安裝Jenkins

    安裝環境

 

Ⅰ.下載最新的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頁面“系統管理”-->“全局安全配置”-->“授權策略“

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章