jenkins通过配置ansible传输文件,并且调度服务
最近在研究jenkins,最后卡在了war包传输的问题。看见同事配置了使用ansible,记录一下相关脚本。1、首先安装ansible推荐用yum install ansible。如果没有镜像源,请如下使用:rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmrpm -
·
最近在研究jenkins,最后卡在了war包传输的问题。看见同事配置了使用ansible,记录一下相关脚本。
1、首先安装ansible
推荐用yum install ansible。
如果没有镜像源,请如下使用:
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
yum install ansible
2、jenkins部署机器生产rsa公钥,放入到业务程序部署机
3、在jenkins的post steps之后,配置
附上shell
#定义常量
WORKSPACE=`pwd`
WAR_DIR=${WORKSPACE}/${PROJ_NAME}-web/target
JETTY_DIR=/data/www/java/work/${PROJ_NAME}-jetty
REMOTE_DEPLOY_DIR=${JETTY_DIR}/webapps
INVENTORY_FILE=/tmp/${PROJ_NAME}-inventory-${JOB_NAME##*/}
INVENTORY_TEMPLATE=/opt/jenkins/default_inventory_template
cd $WAR_DIR
#准备Inventory
cat ${INVENTORY_TEMPLATE} > ${INVENTORY_FILE}
echo ${DEPLOY_HOST} >> ${INVENTORY_FILE}
#删除远程服务器部署文件
ansible -i ${INVENTORY_FILE} all -m raw -a "rm -rf ${REMOTE_DEPLOY_DIR}/${PROJ_NAME}-web.war"
#COPY文件到远程服务器部署目录
ansible -i ${INVENTORY_FILE} all -m copy -a "src=${WAR_DIR}/${PROJ_NAME}-web.war dest=${REMOTE_DEPLOY_DIR}/"
#重启jetty
ansible -i ${INVENTORY_FILE} all -m shell -a "${JETTY_DIR}/bin/jetty.sh restart"
注意1:/opt/jenkins/default_inventory_template,模板内容如下
[deploy]
INVENTORY_FILE最终的样子是,如下,第二行的ip就是应用的部署机器
[deploy]
192.168.142.12
注意2:jenkins需要配置几个参数
PROJ_NAME: #项目的名字
DEPLOY_HOST: #业务应用部署的机器
更多推荐
已为社区贡献3条内容
所有评论(0)