小伙伴们,你们好呀,我是老寇

>>> 头脑风暴 <<<

思考:为什么要采用Jenkins?

1.提交代码后能自动部署,无需手动点击,节省时间,提高效率

2.自动拉取代码,无需人工拉取

实现:自动部署实现思路?

1.Jenkins拉取最新代码,然后构建项目

2.构建完之后,需要停掉之前的服务

3.移除掉之前的jar包,并复制新构建的jar到指定目录

4.启动jar包

目录

一、前提条件

二、安装过程

三、安装插件

四、总结

一、前提条件

1.centos7 安装jdk1.8

2.安装git

yum -y install git

git --version

二、安装过程

# 从Jenkins清华大学镜像站下载
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.332.1-1.1.noarch.rpm

# 安装Jenkins
rpm -ivh jenkins-2.332.1-1.1.noarch.rpm

# 修改配置文件
vi /etc/sysconfig/jenkins

JENKINS_USER="root"
JENKINS_GROUP="root"

#修改Jenkins相关文件夹用户权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

# 设置jdk软连接(需提前安装jdk)
ln -s /usr/local/jdk/bin/java /usr/bin/java

# 启动Jenkins
systemctl start jenkins

# 查看状态
systemctl status jenkins

三、安装插件

1.访问 http://ip:8080

2.服务器执行命令 cat /var/lib/jenkins/secrets/initialAdminPassword

3.选择安装推荐插件

4.创建管理员账号

5.服务器执行命令 systemctl restart jenkins

6.重新访问 http://ip:8080

7.全局工具配置

 jdk配置

maven配置

8.安装插件

下载gitee

下载Maven Integration plugin => 此图省略

9.配置gitee交互凭证

获取gitee私人令牌 => 从首页设置进 => 生成令牌 => 复制令牌

 

 10.全局配置gitee => gitee

 11.创建任务

 创建maven项目

 码云仓库 => 管理  => WebHooks 

填完之后,自己点击测试,返回200则说明配置成功,否则需要检查配置是否正确

#!/bin/bash
sh /opt/laokou/build.sh build && sh /opt/laokou/build.sh run

前方高能,请注意回避 

本文最麻烦的就是:shell脚本执行 部分命令没有权限

解决方案

vi /etc/sudoers

在root下面新增一行
jenkins ALL=(ALL) NOPASSWD:ALL

执行kill、cp等命令前都需要加上sudo

最后点击立即构建即可 

 

四、总结

附启动微服务jar的脚本

注:执行脚本前,需要提前授权

cd /opt/laokou && sed -i 's/\r$//' build.sh && chmod u+x  build.sh
#!/bin/bash

#参数
project_path="/opt/laokou"
admin="admin"
gateway="gateway"
register="register"
monitor="monitor"

#运行
run() {
  cd ${project_path}

  echo 'remove file...'
  sudo rm -rf *.jar

  echo 'copy file...'
  sudo cp jar的位置,根据实际情况来/${admin}.jar ${project_path}
  sudo cp jar的位置,根据实际情况来/${gateway}.jar ${project_path}
  sudo cp jar的位置,根据实际情况来/${register}.jar ${project_path}
  sudo cp jar的位置,根据实际情况来/${monitor}.jar ${project_path}

  # 就是执行 sudo nohup java -jar admin.sh 只是说根据实际情况,需要配置参数
  echo "run ${admin}..."
  sudo sh laokou-${admin}.sh

  # 就是执行 sudo nohup java -jar gateway.sh 只是说根据实际情况,需要配置参数
  echo "run ${gateway}..."
  sudo sh laokou-${gateway}.sh

  # 就是执行 sudo nohup java -jar register.sh 只是说根据实际情况,需要配置参数
  echo "run ${register}..."
  sudo sh laokou-${register}.sh

  # 就是执行 sudo nohup java -jar monitor.sh 只是说根据实际情况,需要配置参数
  echo "run ${monitor}..."
  sudo sh laokou-${monitor}.sh
}

#打包
build() {
  echo "stop ${admin}..."
  admin_pid=`ps -ef|grep ${admin}.jar|grep -v grep|awk '{print $2}'`
  if [ -z ${admin_pid} ]; then
      echo "${admin} is already stopped..."
  else
       sudo kill ${admin_pid}
  fi

  echo "stop ${gateway}..."
  gateway_pid=`ps -ef|grep ${gateway}.jar|grep -v grep|awk '{print $2}'`
  if [ -z ${gateway_pid} ]; then
      echo "${gateway} is already stopped..."
  else
       sudo kill ${gateway_pid}
  fi

  echo "stop ${register}..."
  register_pid=`ps -ef|grep ${register}.jar|grep -v grep|awk '{print $2}'`
  if [ -z ${register_pid} ]; then
      echo "${register} is already stopped..."
  else
       sudo kill  ${register_pid}
  fi

  echo "stop ${monitor}..."
  monitor_pid=`ps -ef|grep ${monitor}.jar|grep -v grep|awk '{print $2}'`
  if [ -z ${monitor_pid} ]; then
      echo "${monitor} is already stopped..."
  else
       sudo kill  ${monitor_pid}
  fi

}

if [ $1 == "run" ]; then
    run
else
    build
fi

最麻烦的就是shell执行权限设置,解决思路就是修改 /etc/sudoers,问题就解决啦

大功告成 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐