jenkins+shell自動(dòng)化部署的實(shí)現(xiàn)步驟
通過jenkins與shell腳本相結(jié)合,實(shí)現(xiàn)war包自動(dòng)部署到多臺(tái)服務(wù)器上
環(huán)境:
- 192.168.2.120 jenkins服務(wù)器
- 192.168.2.117 tomcat服務(wù)器
設(shè)置jenkins服務(wù)器免密鑰登陸tomcat服務(wù)器
117服:執(zhí)行命令ssh-keygen -t rsa
120服:cd .ssh/;scp -p id_rsa.pub root@192.168.2.117:/root/.ssh/authorized_keys
或
scp -p ~/.ssh/id_rsa.pub root@192.168.2.117:/root/.ssh/authorized_keys
單擊helloworld再點(diǎn)擊配置按鈕進(jìn)入配置界面
1)選擇execute shell
點(diǎn)擊保存按鈕
腳本:
cp /root/.jenkins/jobs/helloworld/workspace/target/edu.war /var/www/html/download/ chown apache:apache /var/www/html/download/edu.war ssh root@192.168.2.117 'bash -x -s' < /data/sh/auto_install.sh
此處由于直接通過網(wǎng)頁上下載war包,所以需要開啟httpd
service httpd start(yum install httpd apr apr-util)
在120服上添加腳本名稱
mkdir -p /data/shcd /data/sh
添加腳本內(nèi)容:
#!/bin/bash TOMCAT_PID=`ps -ef| grep tomcat | grep -v grep |awk '{print $2}'` TOMCAT_DIR="/usr/local/tomcat" FILES="edu.war" DES_DIR="/usr/local/tomcat/webapps/ROOT" DES_URL="http://192.168.2.120/download" BAK_DIR="/data/backup/`date +%Y%m%d-%H%M`" [ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID cd $DES_DIR rm -rf $FILES mkdir -p $BAK_DIR \cp -a $DES_DIR/* $BAK_DIR/ rm -rf $DES_DIR/* wget -c $DES_URL/$FILES /usr/java/jdk1.8.0_151/bin/jar -xvf $FILES cd $TOMCAT_DIR rm -rf work . /etc/profile set -m;/bin/sh $TOMCAT_DIR/bin/startup.sh
在jenkins的web界面,進(jìn)入job后,點(diǎn)擊立即構(gòu)建按鈕
1)
2)進(jìn)入構(gòu)建頁面,點(diǎn)擊console output按鈕,可以看到相關(guān)輸出信息
構(gòu)建完成后,可以在120的web界面看到下載的文件edu.war
在117上啟動(dòng)tomcat,瀏覽器輸入網(wǎng)址,可以看到如下部署好的web頁面
至此自動(dòng)部署web完成
如果要部署多個(gè),可以在ip.txt設(shè)置多個(gè)ip,然后通過for循環(huán)取部署即可
添加個(gè)119服務(wù)器,并配置好tomcat,然后設(shè)置120服免密鑰登陸119服
此時(shí)有兩個(gè)tomcat服務(wù)器,分別為117服和119服
在工程的配置界面,修改腳本為
cp /root/.jenkins/jobs/helloworld/workspace/target/edu.war /var/www/html/download/ chown apache:apache /var/www/html/download/edu.war for I in `cat /data/sh/ip.txt`;do ssh root@${I} 'bash -x -s' < /data/sh/auto_install.sh ;done
在/data/sh目錄下手動(dòng)建立文本ip.txt,里面填寫上要自動(dòng)部署web的ip地址
[root@localhost sh]# cat /data/sh/ip.txt 192.168.2.117 192.168.2.119
然后點(diǎn)擊立即構(gòu)建按鈕,此時(shí)就可以在117服和119服上看到自動(dòng)部署的web界面
1)117服
2)119服
如果tomcat服務(wù)器數(shù)量較多,可以借助ansible工具與jenkins的結(jié)合來實(shí)現(xiàn)批量部署
備注:
1) tomcat服務(wù)器要安裝jdk
2) 在tomcat服上手動(dòng)去下載,提示權(quán)限問題
yum安裝的apache,默認(rèn)的執(zhí)行用戶為apache,而腳本里cp的文件edu.war的所有者和所屬組均為root,所以提示沒有權(quán)限
3) tomcat服務(wù)器的jdk路徑要統(tǒng)一
4) 默認(rèn)文件路徑為/root/.jenkins/jobs/helloworld/workspace/target
5) 這里結(jié)合了httpd來獲取下載的路徑,實(shí)際上,可以在項(xiàng)目helloworld的配置界面,設(shè)置文檔存儲(chǔ)路徑
A. 點(diǎn)擊增加構(gòu)建后操作步驟按鈕,設(shè)置路徑
B. 點(diǎn)擊立即構(gòu)建后,war包就會(huì)存放在該路徑下,url為http://192.168.2.120:8080/job/helloworld/lastSuccessfulBuild/artifact/target/edu.war
C. 通過url可以直接獲取war包,
比如
wget http://192.168.2.120:8080/job/helloworld/lastSuccessfulBuild/artifact/target/edu.war
對(duì)應(yīng)的服務(wù)器路徑為/root/.jenkins/jobs/helloworld/lastSuccessful/archive/target
auto_install.sh
#!/bin/bash TOMCAT_PID=`ps -ef| grep tomcat | grep -v grep |awk '{print $2}'` FILENAME="edu.war" TOMCAT_DIR="/usr/local/tomcat" DES_DIR="/usr/local/tomcat/webapps/ROOT" DES_URL="http://192.168.2.120:8080/job/helloworld/lastSuccessfulBuild/artifact/target" BAK_DIR="/data/backup/`date +%Y%m%d-%H%M`" [ -n "$TOMCAT_PID" ] && kill -9 $TOMCAT_PID cd $DES_DIR rm -rf $FILENAME mkdir -p $BAK_DIR \cp -a $DES_DIR/* $BAK_DIR/ rm -rf $DES_DIR/* wget -c $DES_URL/$FILENAME /usr/java/jdk1.8.0_151/bin/jar -xvf $FILENAME cd $TOMCAT_DIR rm -rf work . /etc/profile set -m;/bin/sh $TOMCAT_DIR/bin/startup.sh
到此這篇關(guān)于jenkins+shell自動(dòng)化部署的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)jenkins shell自動(dòng)化部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Jenkinsfile?中如何在?`sh`?步驟中執(zhí)行多行?Shell?命令(多行命令的方法)
- 如何解決jenkins 執(zhí)行shell腳本 sh: ... not found的問題
- Jenkins使用publish?html?report插件展示HTML報(bào)告的方法
- jenkins 實(shí)現(xiàn)shell腳本化定時(shí)執(zhí)行任務(wù)的方法
- Jenkins 編譯后使用SSH發(fā)布詳解
- jenkins中通過Publish Over SSH插件將項(xiàng)目部署到遠(yuǎn)程機(jī)器上的講解說明
- Jenkins中sh函數(shù)的用法示例小結(jié)
相關(guān)文章
深入探究Linux shell的實(shí)現(xiàn)原理
這篇文章主要介紹了Linux shell的實(shí)現(xiàn)原理,文中通過代碼示例和圖文介紹的非常詳細(xì),對(duì)大家探究Linux shell的實(shí)現(xiàn)原理有一定的幫助,需要的朋友可以參考下2024-02-02Shell中printf和test命令的實(shí)際應(yīng)用詳解
本文主要介紹了Shell中printf和test命令的實(shí)際應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09linux定時(shí)備份MySQL數(shù)據(jù)庫并刪除以前的備份文件(推薦)
這篇文章主要介紹了linux定時(shí)備份MySQL數(shù)據(jù)庫并刪除以前的備份文件,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01Shell腳本實(shí)現(xiàn)亂序排列文件內(nèi)容的多種方法(洗牌問題)
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)亂序排列文件內(nèi)容的多種方法(洗牌問題),本文給出3個(gè)Shell腳本和一個(gè)Python腳本解決亂序排列文件內(nèi)容問題,需要的朋友可以參考下2015-01-01