DevOps实现自动化发布实操

DevOps实现自动化发布流程

本篇文章来自 B站视频(部分步骤与视频存在差异)

流程图及原理

在这里插入图片描述

  1. 本地编写代码
  2. 提交至远程仓库
  3. Jenkins(基于Docker)通过内置Git获取提交的代码,通过Maven进行打包,形成可执行文件,发送至目标服务器并执行启动命令
  4. 访问目标服务器查看效果

效果展示

  1. 查看目标服务器,并未启动java项目在这里插入图片描述
  2. 访问Jenkins执行项目构建操作在这里插入图片描述在这里插入图片描述
  3. 查看目标服务器服务状态在这里插入图片描述在这里插入图片描述

准备步骤

  1. 准备两台虚拟机,安装CentOS-7系统
  2. 打通虚拟机与本机之间的网络,可供安装基础配置
  3. 建议所有操作都在root用户下进行,尽可能减少因为权限带来的问题。
  4. 文件的创建、修改、网络配置通常可以通过重启服务、刷新配置、重启容器、重启虚拟机解决
  5. 可能涉及到的命令(可以跳过)
#安装telnet命令
yum install telnet-server

#修改系统ip
vi /etc/sysconfig/network-scripts/ifcfg-eth0
#重启网卡
service network restart

#设置linux启动默认用户
vim /etc/gdm/custom.conf
#在 [daemon]下添加
AutomaticLoginEnable=True
AutomaticLogin=root
#立即重启
reboot

#没有 docker-compose  命令的 需要安装一下
yum install docker-compose 
#检查是否存在 
docker-compose version
#上面不行就用下面的
docker compose version

#查看版本
docker -v
# 启动docker服务
systemctl start docker  
# 停止docker服务
systemctl stop docker  
# 重启docker服务
systemctl restart docker  
#查看docker信息
docker info

# docker 服务开机自启动命令
systemctl enable docker.service
# 关闭docker 服务开机自启动命令
systemctl disable docker.service
#进入容器
sudo docker exec -i -t 镜像名称 /bin/bash
#退出容器
ctrl + P + Q
#停止容器内服务
docker compose stop
#启动容器内服务并后台运行
docker compose up -d
#查看日志
docker compose logs -f 镜像名称
#重启容器
docker compose restart
#查看容器内服务运行情况
docker ps
#强制删除镜像 
docker rmi -f 镜像名称版本

192.168.1.8安装服务

  1. 安装yum工具

    yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken
    
  2. 卸载、安装Docker
    卸载docker

    yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine docker-ce
    

    在这里插入图片描述

    配置本地镜像源

    # 设置docker镜像源
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
     
    sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
    
    # 更新缓存 也可以不执行
    yum makecache fast
    

    在这里插入图片描述
    安装Docker

    yum install -y docker-ce
    

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

  3. 修改Docker国内镜像源

    vi /etc/docker/daemon.json
    
    #添加配置
    {
        "registry-mirrors": ["http://hub-mirror.c.163.com"]
    }
    
  4. 配置开机自启docker

    #设置开机自启dokcer
    systemctl enable docker.service
    
  5. 查看版本及docker信息

    #查看docker版本
    docker -v
    #查看docker信息
    docker info
    

    在这里插入图片描述

  6. 安装docker compose命令

    yum install docker-compose 
    

    在这里插入图片描述
    查看docker-compose版本

    docker compose version
    

    在这里插入图片描述

  7. 下载Jenkins
    视频中提到的版本有点低,所有的插件都安装失败,所以我采用了新版本

    docker pull jenkins/jenkins:2.4.0.1.2-lts
    

    创建 文件夹 /usr/local/docker/jenkins_docker
    编写 vim docker-compose.yml

    version: "3.1"
    services:
      jenkins:
        image: jenkins/jenkins:2.4.0.1.2-lts  #声明镜像版本
        container_name: jenkins  #声明镜像名称
    	ports:
    	  - 8080:8080   #绑定端口
    	  - 50000:50000
    	volumes:
          - ./data/:/var/jenkins_home/  #镜像数据存储地址
    

    在这里插入图片描述

  8. 启动docker中的Jenkins 镜像

    docker compose up -d
    

    在这里插入图片描述
    查看日志

    docker logs -f jenkins
    

    发现没有权限
    在这里插入图片描述
    赋予文件夹 权限

    chmod -R 777 data
    

    在这里插入图片描述
    赋予权限后重新启动容器

    docker compose  restart
    

    查看日志,并保存Jenkins默认密码
    在这里插入图片描述
    访问Jenkins 服务
    在这里插入图片描述
    修改Jenkins下载插件地址
    data/hudson.model.UpdateCenter.xml

    <?xml version='1.1' encoding='UTF-8'?>
    <sites>
      <site>
        <id>default</id>
        <url>http://mirror.esuni.jp/jenkins/updates/update-center.json</url>
      </site>
    </sites>
    

    重启镜像后选择安装自定义插件-全选-安装即可
    创建用户-下一步-进入Jenkins
    下载必备插件在这里插入图片描述
    下载以下两个插件 完成后并重启

    Git Parameter #用于Jenkins拉取代码
    Publish Over SSH  #用于将构建好的文件发送至目标服务器
    

    在这里插入图片描述
    查看已下载插件
    在这里插入图片描述
    至此docker、jenkins 、git已经安装完成

  9. 安装Maven
    maven-Linux-地址
    在这里插入图片描述
    上传后解压至对应目录并 重命名为 maven

    tar -zxvf  apache-maven-3.9.3-bin.tar.gz -C /use/local
    
    mv apache-maven-3.9.3-bin.tar.gz maven
    

    在这里插入图片描述
    配置镜像仓库和编译插件
    在这里插入图片描述
    设置镜像仓库地址 setting 161行

    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    

    设置编译插件 254行

    	<profile>
    	  <id>jdk8</id>
    	  <activation>
    		<activeByDefault>true</activeByDefault>
    		<jdk>1.8</jdk>
    	  </activation>
    	  <properties>
    		<maven.compiler.source>1.8</maven.compiler.source>
    		<maven.compiler.target>1.8</maven.compiler.target>
    		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    	  </properties>
    	</profile>
    

    默认开启编译插件 276行

    <activeProfiles>
        <activeProfile>jdk8</activeProfile>
    </activeProfiles>
    
  10. 安装JDK(可以不配置环境变量)
    寻找你的运维同事或自行官网下载linux版本
    在这里插入图片描述
    上传后解压至对应目录并 重命名为 maven

    tar -zxvf  jdk-8u291-linux-x64.tar.gz -C /use/local
    mv jdk-8u291-linux-x64.tar.g jdk
    

    在这里插入图片描述

  11. 将JDK和MAVEN配置进docker容器
    在这里插入图片描述

    根据之前的jenkins配置需要将jdk和maven移动至data目录下

    在这里插入图片描述

    切换到目录下查看
    在这里插入图片描述
    至此192.168.1.8所需服务已经安装完成

配置Jenkins全局配置

  1. 配置JDK
    在这里插入图片描述
  2. 配置Maven
    在这里插入图片描述
  3. 配置SSH连接信息
    填写 对应的服务器信息,
    请确保目标服务器路径文件夹已创建
    添加完成后点击测试获取正确结果后,应用并保存在这里插入图片描述

创建一个本地测试jar包(本地测试通过)

在这里插入图片描述
在pom文件中声明打包后的jar包名称
在这里插入图片描述
提交至git
在这里插入图片描述

在Jenkins创建项目管理并完成打包操作

  1. 创建项目
    在这里插入图片描述
    在这里插入图片描述

  2. 配置项目git地址
    在这里插入图片描述

  3. 测试Jenkins拉取git项目文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    根据之前的git maven配置已经实现拉取代码和打包操作

配置构建完成后将文件发送至目标服务器并执行启动脚本(192.168.1.7)

  1. 选择在构建后执行通过SSH发送文件命令
    在这里插入图片描述
  2. 选择之前配置好的全局配置中的 目标服务器配置,并选择需要发送的文件,这里使用的是通配符。在这里插入图片描述
  3. 再次构建
    在这里插入图片描述
    查看日志显示发送成功
    需要将目标服务器配置好运行环境jdk和jre均可
  4. 添加构建后执行脚本命令
    在这里插入图片描述
    在这里插入图片描述
# 启动程序
	pid=`ps -ef|grep hxyTest.jar| grep -v grep | awk '{print $2}'`
	# echo "部署前的pid进程 :$pid"
	if [ -n "$pid" ]
	  then
	    kill -9 $pid
	else
	    echo "开始部署!!!"
	fi
	sleep 1s
	cd /home/work/hxytest/target/
	nohup java -jar hxyTest.jar &
	# echo "脚本执行完毕"
	sleep 1s
	pid=`ps -ef|grep hxyTest.jar | grep -v grep | awk '{print $2}'`
	if [ $? -ne "$pid" ]
	  then
	                echo "脚本执行完毕,进程启动成功,发布成功,请测试!!!"
	                echo "脚本执行完毕,进程启动成功,发布成功,请测试!!!"
	                echo "脚本执行完毕,进程启动成功,发布成功,请测试!!!"
	
	else
	    echo "脚本执行完毕,进程没有启动,发布失败,请查看日志!!!"
	

5.保存后重新构建,并且会直接执行启动命令,此时访问程序、验证成功!

与视频有部分差异,并没有通过docker构建gitlab环境,目前本地的电脑内存不允许,采用其他已经存在的gitlab,并且在目标服务器中并没有完全按照视频中通过docker构建镜像进行启动。

后续有空会继续根据视频完成对应的内容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值