jenkins安装与自动部署集成

/ 默认分类 / 1 条评论 / 235浏览

一.准备工作
1.
准备3台服务器:
  192.168.9.136
安装jenkins.war+tomcat+git+maven+jdk1.8 Jenkins部署机器)
  192.168.9.138
安装tomcat+jdk1.8(应用服务器A
  192.168.9.139
安装tomcat+jdk1.8(应用服务器B


2.下载Jenkins war包,下载地址:https://jenkins.io/download/


3.下载jdk1.8,下载地址:
http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html

4.tomcat下载地址:https://tomcat.apache.org
5.maven
下载地址:https://maven.apache.org/download.cgi
6.jenkins
服务器 到 服务器A,Bssh免密登录
 6-1
jenkins服务器:执行命令:ssh-keygen 生成密钥
 6-2)
将文件拷贝至远程服务器A,B
      
命令:scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key
 6-3
)远程服务器A,B导入公钥
     
命令:cat ~/pub_key >>~/.ssh/authorized_keys
    
如果报错如图:


  执行命令:ssh-keygen,再次执行导入命令:cat ~/pub_key >>~/.ssh/authorized_keys

二.安装步骤
说明:tomcatmavenjdk环境安装就不细说了,解压,配置环境变量等自行网上查找攻略
1.
服务器A,B配置好tomcat+jdk即可

2.Jenkins
服务器,安装git,一路向下y
命令:yum install git

3. Jenkins服务器,安装maven,上传maven包,解压,配置环境变量

4.上传jenkins.warJenkins服务器的tomcat中,并启动tomcat
网页打开:http://192.168.9.136:8080/jenkins 出现此页面,稍等一会再刷新(时间有点久)










至此,Jenkins安装完毕

三.Jenkins集成coding

3-1)全局工具配置



根据jenkins服务器jdkmaven安装路径来配置如下两项:


3-2Maven Integration插件安装




3-3)新建一个任务





创建Credentialscoding帐号密码:


选择帐号并选择拉取分支


多模块项目,Root POM需要指定父pom.xmlGoals and options设置为-pl xxx -am clean package -Dmaven.test.skip=truexxx表示子模块名称)



配置shall脚本,作用:停止远程服务器,备份上一版本,拷贝编译后的包到远程服务器,并启动服务



返回项目,点立即构建


如果,日志打印如下错误:


需要修改tomcatbin目录下的setclasspath.sh


如下日志表示成功


附录:

远程部署脚本:

#!/bin/bash<o:p></o:p>

back_time=date +"%Y-%m-%d-%H-%M-%S"<o:p></o:p>

src=/root/.jenkins/workspace/gw-api/mzyz/gw-api/target<o:p></o:p>

war_name="gw-api"<o:p></o:p>

tomcat_add=/usr/tomcat/apache-tomcat-8.5.30<o:p></o:p>

all_ip=192.168.9.138,192.168.9.139<o:p></o:p>

tomcat_port=8080<o:p></o:p>

<o:p> </o:p>

# 远程停止服务<o:p></o:p>

function stop_tomcat () {<o:p></o:p>

    Tomcat_id=ssh $dest_ip lsof -i:$tomcat_port | awk 'NR==2''{print $2}'<o:p></o:p>

    if [ ! Tomcat_id  ];then<o:p></o:p>

        echo "tomcat id 不存在"<o:p></o:p>

    else<o:p></o:p>

        ssh $dest_ip "/bin/kill -9 $Tomcat_id"<o:p></o:p>

    fi<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

# 远程开启服务<o:p></o:p>

function start_tomcat () {<o:p></o:p>

    ssh $dest_ip "cd ${tomcat_add}/bin && /bin/sh startup.sh"<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

# 远程备份<o:p></o:p>

function backup () {<o:p></o:p>

    ssh $dest_ip "cd ${tomcat_add}/webapps && cp ${war_name}.war{,-${back_time}};cd ${tomcat_add}/webapps && /bin/rm -rf ${war_name}.war"<o:p></o:p>

    ssh $dest_ip "cd ${tomcat_add}/webapps && /bin/rm -rf ${war_name}"<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

# 远程上传包<o:p></o:p>

function upload () {<o:p></o:p>

    scp $src/${war_name}.war $dest_ip:${tomcat_add}/webapps<o:p></o:p>

}<o:p></o:p>

<o:p> </o:p>

# 循环逻辑<o:p></o:p>

for_ip=awk 'BEGIN{iplist="'$all_ip'";split(iplist,ip,",");for (s in ip) {print ip[s]}}' <o:p></o:p>

for dest_ip in ${for_ip[*]};do<o:p></o:p>

    echo "$dest_ip 开始部署"<o:p></o:p>

<o:p> </o:p>

    if [ -f $src/${war_name}.war ];then<o:p></o:p>

    stop_tomcat<o:p></o:p>

    backup<o:p></o:p>

    upload<o:p></o:p>

    start_tomcat <o:p></o:p>

    echo  "$dest_ip 部署成功"<o:p></o:p>

    echo  "------------------------------------------"<o:p></o:p>




















  1. 在来一次啊

    回复