准备的东西

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