准备的东西
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'
done
#直接写到Jenkins构建计划里
ansible
touch etc/ansible/screen.yaml
cat >etc/ansible/screen.yaml
- 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'"
或者写先拷贝过去再执行
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内容如下:
(本邮件是程序自动下发的,请勿回复!)
项目名称:$PROJECT_NAME
构建编号:$BUILD_NUMBER
构建状态:$BUILD_STATUS
触发原因:${CAUSE}
构建日志地址:${BUILD_URL}console
构建地址:$BUILD_URL
变更集:${JELLY_SCRIPT,template="html"}
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