jenkins

目录

1. jenkins

1.1 什么是jenkins

1.2 为什么使用jenkins

1.3 安装jenkins

1.4 修改密码

1.5 jenkins集成jdk

1.6 集成git

2. jenkins集成maven

2.2 jenkins集成maven

2.3 jenkins自动拉取gitee远程仓库的代码

2.4 需要把jenkins打包好的项目复制到测试服务器


1. jenkins

1.1 什么是jenkins

jenkins就是持续开发部署得软件。

1.2 为什么使用jenkins

 jenkins本身没有编译打包的功能,集成maven完成编译和打包, jenkins本身不会拉取gitee远程仓库的代码,集成git从远程仓库拉取代码, git本身也不会运行jar,需要集成jdk来运行jar

1.3 安装jenkins

(1)把jenkins的war放入虚拟机中

(2)启动该war包

nohup java -jar /usr/local/jenkins.war  --httpPort=8777 --httpsPort=8778 > /usr/local/jenkins.log 2>&1 &

-- nohup:如果虚拟机休眠时不关闭jenkins
-- >: 启动时生成的日志放入
-- &: 后台运行

(3) 访问jenkins  

需要密码:  

成功登录后的页面  

1.4 修改密码

1.5 jenkins集成jdk

在jenkins所在的服务上安装jdk并配置环境变量。
【1】解压jdk软件
 [2]vi /etc/profile
    export JAVA_HOME=JDK的安装路径
    export PATH=$PATH:$JAVA_HOME/bin
 [3] source /etc/profile    

1.6 集成git

在jenkins所在的服务器上安装git软件
yum install -y git

查看是否安装git
git --version

 

测试jenkins会不会从gitee拉取代码  

 

上面的jenkins不会自动从远程仓库拉取代码。 后面在完善。

2. jenkins集成maven

必须在我们jenkins所在的服务器,安装maven.

  1. 安装包解压

  2. 配置maven的环境变量

  3. 修改maven的镜像

修改本地仓库所在的路径

2.2 jenkins集成maven

安装maven插件

测试: 如果gitee上的maven项目内容发生改变,则会拉取并进行编译 打包了

 (1)创建一个gitee仓库

(2)idea中创建一个maven工程  

(3) 把idea项目上传到git远程仓库  

(4)jenkins拉取项目  

2.3 jenkins自动拉取gitee远程仓库的代码

1.jenkins中安装gitee插件

修改任务项目:

 

2.4 需要把jenkins打包好的项目复制到测试服务器

企业: jenkins所在的服务器和我们项目运行时的服务器应该不是同一台机器。

jenkins编译打包好的软件在jenkins所在的服务器。

155上的jar远程复制到156上。---->

scp 文件名  root@远程ip:/远程的目录
scp qy150-weixin-pay-0.0.1-SNAPSHOT.jar root@192.168.223.156:/usr/local

 在复制过程中需要手动输入密码:

远程登录其他服务器时,能否免密登录。

如何设置免密:

(1)在jenkins所在的服务器上输入如下命令

ssh-keygen -t rsa

 

 (2)接下来需要将公钥导入到认证文件中

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

(3)给对应文件授权

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys 

(4)把155上的公钥复制到156上

scp -p ~/.ssh/id_rsa.pub root@192.168.223.156:/root/.ssh/authorized_keys 

(5)测试155登录156

ssh 192.168.223.156 

[2]使用脚本在jenkins 完成jar的复制  

#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app"
projectName="my-boot"

echo "待部署的应用服务器,可多台"
server_ips="192.168.223.156"
for server_ip in ${server_ips[@]}
do

echo "ssh连接进行备份操作"
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mkdir -p $DIR/backup/${projectName}
mkdir -p $DIR/${projectName}
if [ -f "$DIR/${projectName}/${projectName}.jar" ];then
  mv $DIR/${projectName}/${projectName}.jar $DIR/backup/${projectName}/${projectName}-`date "+%Y%m%d_%H%M%S"`.jar 
fi
EOF

echo "拷贝jar包到目标服务器的tmp目录"
scp -q -oStrictHostKeyChecking=no ${WORKSPACE}/target/*.jar root@${server_ip}:/tmp/${projectName}.jar

echo "ssh远程连接进行发布操作"
ssh -q -oStrictHostKeyChecking=no root@${server_ip} <<EOF
mv /tmp/${projectName}.jar $DIR/${projectName}/${projectName}.jar

EOF

done

echo "success" 

创建一个启动脚本

vi start.sh 

#!/bin/bash
set -e #任何命令出错就退出
set -o pipefail

APP_ID=my-boot
APP_DIR="/data/app"

nohup java -jar ${APP_DIR}/${APP_ID}/${APP_ID}.jar > release_out.log &
start_ok=false
if [[ $? = 0 ]];then
        sleep 3
        tail -n 10 release_out.log
        sleep 5
        tail -n 50 release_out.log
fi
aaa=`grep "Started" release_out.log | awk '{print $1}'`
if [[ -n "${aaa}" ]];then
    echo "Application started ok"
    exit 0
else
    echo "Application started error"
    exit 1
fi

关闭脚本

#!/bin/bash

APP_ID=my-boot
ps aux | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

两个脚本的运行还需要手动运行

sh $DIR/${projectName}/stop.sh
sh $DIR/${projectName}/start.sh 

  • 6
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值