jenkins

jenkins

1.什么是敏捷开发

    敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目
在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换
言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处
于.可使用状态。

2.什么是持续集成(CI)

     因为开发部门同时维护多个版本,多个版本的发布,测试需要大量人力,所 以要有一个专业的持续集
 成工具来管理持续重复的工作。  

3.持续集成工具(CI)

1.1 Jenkins 和Hudson
Jenkins是一个持续集成(CI)工具。它可以持续编译,运行你的代码;运行单元测试(UT)或集成测试;将运行结果发送至邮件,或展示成报告。
Jenkins起源于Hudson。Hudson在商业软件的路上继续前行,而Jenkins则作为开源软件,从hudson分支出来。 因此现在的jenkins和hudson非常类似,但是随着二者各自的发展,已经有了一些不同。
1.2 技术组合
Jenkins 可以整合 GitHub 或 Subversion Husband 也可以整合 GitHub 或 Subversion二者既然是同源的工具软件,操作和指导思想就是接近的

4. 安装Jenkins

  1. 下载jenkins wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
  2. 启动jenkins # 使用nohup命令启动 nohup 当虚拟机黑屏时 也会运行 日志—>输出到jenkins.log & 后台运行 nohup java -jar /data/software/jenkins.war --httpPort=8777 --httpsPort=8778 > /data/software/jenkins.log 2>&1 &
  3. 通过浏览器访问jenkins http://虚拟机ip地址:8777 jenkins默认端口号为8777
  4. 进入安装所需要的插件就可以了
    在这里插入图片描述
    jenkins 的所有插件安装后需要重启才能生效,由于Jenkins国外官方插件地址下载速度非常慢,所以可以修改为
    国内插件地址(清华大学源):
    进入 Manage Jenkins -》 Manage Plugin -> 高级最下面有 升级站点设置为:
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json在这里插入图片描述在这里插入图片描述
    1 修改服务器配置,进入 jenkins 安装目录 ,找到 /updates/default.json 文件
    /root/.jenkins/updates/
    2 输入
    sed -i ‘s/http://updates.jenkinsci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g’ default.json && sed -i ‘s/http://www.google.com/https://www.baidu.com/g’ default.json

jenkins集成JDK

在这里插入图片描述
可以点新增jdk
在这里插入图片描述

jenkins集成Git

先检查Git插件是否已安装
在这里插入图片描述
在集成jdk的位置下方有
在这里插入图片描述

集成Maven

检查插件
在这里插入图片描述
在jdk集成下方找maven
在这里插入图片描述
保存即可

凭证配置

先查询插件是否安装
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

新建任务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
保存即可
在这里插入图片描述

5.编写jenkins发布脚本

由于 jenkins 构建消耗内存极大,一般jenkins是一台单独的工具机器,Java项目一般在其他的机器上
(1)配置ssh免密登录来远端拷贝项目
在jenkins机器上使用root用户生成秘钥注意此处是root用户

$ ssh-keygen -t rsa 
# 3次回车

运行后会在当前用户的根目录生成一个.ssh文件夹
在这里插入图片描述
.ssh文件夹中的文件描述

  • id_rsa : 生成的私钥文件
  • id_rsa.pub : 生成的公钥文件

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

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

如果希望ssh公钥生效需满足至少下面两个条件:

  • .ssh 目录的权限必须是700
  • .ssh/authorized_keys 文件权限必须是600

给对应文件授权

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

将 authorized_keys 文件拷贝到应用服务器的admin用户.ssh目录下

#在应用服务器上用root用户创建/root/.ssh文件夹 
mkdir -p /root/.ssh 
# 在jenkins服务器(192.168.223.128)上将pub公钥文件拷贝到应用服务器的.ssh目录下 
scp -p ~/.ssh/id_rsa.pub root@192.168.223.129:/root/.ssh/authorized_keys

在jenkins服务器上进行免密连接测试

# 在jenkins服务器的/root/目录下创建filetest文件,并拷贝到应用服务器 
$ cd ~/ 
$ touch filetest 
$ scp -p filetest root@192.168.71.3:/root/filetest
# 进入到应用服务器(192.168.223.129),检查/root目录下是否出现filetest 

# 在jenkins服务器上使用ssh进行免密连接测试,成功后会出现Last Login的提示 
$ ssh root@192.168.71.3 
Last login: Sun Sep 20 21:53:03 2020 
$ exit
#!/bin/bash

echo "部署的目录和项目名称"
DIR="/data/app" 
projectName="my-boot"
 
echo "待部署的应用服务器,可多台" 
server_ips="192.168.71.3" 
for server_ip in ${server_ips[@]} 
do

echo "ssh连接进行备份操作" 
ssh -Tq -oStrictHostKeyChecking=no root@${server_ip} <<EOF 
mkdir -p $DIR/backup/${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

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

done 
echo "success"

在这里插入图片描述

  • 在 /data/app/my-boot 目录下创建启动脚本start.sh

     $ touch start.sh 
     $ vi start.sh 
     # 将下面代码粘贴到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
  • 在 /data/app/my-boot 目录下创建停止脚本stop.sh

      $ touch stop.sh 
      $ vi stop.sh # 将下面代码粘贴到stop.sh中
    
#!/bin/bash 
APP_ID=my-boot 
ps -ef | grep ${APP_ID} | grep -v "grep" | awk '{print "kill -9 "$2}' | sh

最后重新在jenkins工作台
在这里插入图片描述
就不需要自己在测试服务器中部署项目。可以直接在浏览器测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值