準備的東西
ip.txt
192.168.1.10
192.168.1.10
192.168.1.10
auto_deploy_war.sh
#!/bin/bash
#Auto deploy Tomcat
#by yinxingyouyou `date +%F`
TOMCAT_DIR="/usr/local/tomcat/"
WAR="jfedu.war"
DES_DIR="/usr/local/tomcat/webapps/ROOT"
DES_URL="http://192.168.1.107:7001/"
BAK_DIR="/export/backup/`date +%Y%m%d-%H%M`"
cd $DES_DIR
rm -rf $DES_DIR/*
wget $DES_URL/$WAR
jar -xvf $FILES
####################
cd $TOMCAT_DIR;rm -rf work
/bin/sh $TOMCAT_DIR/bin/start.sh
ssh+for循環
#!/bin/bash
for ip in hosts;do
ssh root@$ip 'bash -x -s'</data/sh/auto_deploy_100_war.sh;
done
#直接寫到Jenkins構建計劃裏
ansible
touch etc/ansible/screen.yaml
cat >etc/ansible/screen.yaml<EOF
- hosts: all
remote_user: root
tasks:
- name: auto deploy 100 war
shell:
rm -rf /usr/local/tomcat/webapps/ROOT/*;cd /usr/local/tomcat/webapps/ROOT/; wget 192.168.1.107:7001/jfedu.war;jar -xf /usr/local/tomcat/webapps/ROO
T/jfedu.war;rm -rf /usr/local/tomcat/work;/bin/bash /usr/local/tomcat/bin/shundown.sh;/bin/bash /usr/local/tomcat/bin/sta
rt.sh
然後在hosts里加IP,執行ansible-playbook scree.yaml
或者用ansible批量遠程執行腳本
#!/bin/bash
source /etc/profile
在項目裏執行腳本里寫ansible all -m shell -a "'bash -x -s'</data/sh/deploy_lunch_war.sh;"
或者寫先拷貝過去再執行
ansible all -m copy -a "src=/data/sh/deploy_lunch_war.sh dest=/tmp/"
ansible all -m shell -a "sh /tmp/deploy_lunch_war.sh"
然後在控制機創建腳本
#!/bin/bash
#2017年5月24日20:21:09
#auto deploy tomcat for jenkins war.
###############
TOMCAT_DIR="/usr/local/tomcat/"
APP_WAR="edu.war"
BACK_DIR="/data/backup/`date +%Y%m%d`"
#TOMCAT_PID=`ps -ef |grep java|grep -v grep |grep -v auto|awk '{print $2}'`
TOMCAT_PID=`lsof -i :7002|awk '{print $2}'|grep -v PID`
source /etc/profile
###############
if [ ! -d $BACK_DIR ];then
mkdir -p $BACK_DIR
fi
cd $TOMCAT_DIR/webapps/ROOT/
\cp * $BACK_DIR -a
##############
kill -9 $TOMCAT_PID
rm -rf $APP_WAR $TOMCAT_DIR/work/*
wget -c http://192.168.1.107/$APP_WAR
touch $APP_WAR
#jar -xvf $APP_WAR
echo "/bin/sh $TOMCAT_DIR/bin/startup.sh---------------------------"
set -m;/bin/sh $TOMCAT_DIR/bin/startup.sh
#nohup /bin/sh $TOMCAT_DIR/bin/startup.sh &&
echo "--------------------------------done"
tail -n 30 $TOMCAT_DIR/logs/catalina.out
這裏面的tomcat重啓時要在前面加上set -m,在start.sh前面加上source /etc/profile
·Aborting, target uses selinux but pythonbindings (libselinux-python) aren't installed!
解決:# yum install libselinux-python -y
注意這個是在 host機器上安裝,不是在ansible控制機器上。
插件安裝
系統管理>管理插件,去官網https://wiki.jenkins-ci.org/display/JENKINS/Plugins
右上角搜git,下載下來,下面提示的denpendencies也要安裝從jenkins上傳.hpi文件
也可以下到~./jenkins/plugins/然後重啓jenkins就可以了
重啓:在/後面加exit,再加restart
郵件服務器:
下載email-ext和token-macro、emailext-template,重啓
系統設置,Extended E-mail Notification
SMTP server:設置郵件提供商的SMTP地址,mail.jfedu.net
Default user E-mail suffix 寫@jfedu.net後綴
Default Content Type:內容展現的格式,一般選擇HTML
Default Recipients:默認收件人,逗號隔開
Default Subject 默認郵件標題
Default Content內容如下:
<hr/>
<h3>(本郵件是程序自動下發的,請勿回覆!)</h3><hr/>
項目名稱:$PROJECT_NAME<br/><hr/>
構建編號:$BUILD_NUMBER<br/><hr/>
構建狀態:$BUILD_STATUS<br/><hr/>
觸發原因:${CAUSE}<br/><hr/>
構建日誌地址:<a href="${BUILD_URL}console">${BUILD_URL}console</a><br/><hr/>
構建地址:<a href="$BUILD_URL">$BUILD_URL</a><br/><hr/>
變更集:${JELLY_SCRIPT,template="html"}<br/>
<hr/>
Use SMTP Authentication:使用SMTP身份驗證,點開Default user E-mail suffix下面的高級按鈕才能看到,選中。
User Name:郵件發送賬戶的用戶名。
Password:郵件發送賬戶的密碼。
SMTP port:SMTP端口。
maven下面有個jenkins Location 把管理員郵箱地址改了,有些後綴的郵箱不能接收
填完郵箱設置,項目裏設置增加構建後的操作步驟,其他都默認,要配trigger
管理節點
系統配置,管理節點,子節點也是一臺服務器,遠程目錄/home/kenkins,啓動方法via ssh,遠程創建一個jenkins用戶,高級裏配端口號,java路徑配置到/usr/java/bin/java