DevOps实现自动化发布实操

news2024/9/21 22:18:13

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构建镜像进行启动。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714127.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字信号处理实验:IIR数字滤波器设计及软件实现

目录 一、实验目的 二、实验原理 三、实验设备 四、实验内容及步骤 五、实验结果及分析 六、实验主程序框图及程序清单 七、实验总结 一、实验目的 熟悉用双线性变换法设计IIR数字滤波器的原理与方法&#xff1b;学会调用MATLAB信号处理工具箱中滤波器设计函数&#xff…

还在手动下载github项目?想要自动化下载github项目?基于python开发项目自动下载模块帮你实现自动下载存储

GitHub是一个基于Web的代码托管平台和开发者社区。它允许开发者存储、管理和分享他们的代码&#xff0c;并进行版本控制。开发者可以在GitHub上创建仓库来存储项目代码&#xff0c;并使用Git来跟踪和管理代码的变更历史。GitHub提供了一系列协作工具&#xff0c;如问题追踪、Pu…

一波三折|药学博士终获CSC资助赴瑞典隆德大学从事2年博士后研究

我们先为W博士获得美国哈佛大学布列根和妇女医院的邀请函&#xff0c;助其成功获得CSC公派资助&#xff0c;但后被哈佛大学国际中心以可能拒签为由&#xff0c;不予办理DS-2019表格。幸亏我们未雨绸缪先期又申请到瑞典隆德大学的2年博士后邀请函&#xff0c;最终顺利得到CSC改派…

CAS + 自旋 锁底层

多线程安全问题 为什么会出现多线程安全问题? 在多线程并发下, 假设有 A,B 两个线程同时操作 count 0 这个公共变量, 在A线程中count, 在B线程中count, 正常来说结果应该是 count 2, 可是同时在A, B两个线程中拿到 count 0 , 并且都执行count赋值, 结果就变成了 count 1…

【Java可执行命令】(十一)Java 密钥库和证书管理工具keytool:玩转密钥库和证书管理,深入解析keytool工具的应用与技巧~

Java可执行命令之keytool 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用3.1 语法格式3.2 生成证书请求&#xff1a;keytool -certreq3.3 导出证书&#xff1a;keytool -exportcert3.4 生成密钥对&#xff1a;keytool -genkeypair3.5 导入证书或证书链&#xff1a;keytool -importcert3…

基于STM32的直流电机调速系统

目录 基于STM32的直流电机调速系统一、原理图二、部分代码三、视频演示 基于STM32的直流电机调速系统 功能&#xff1a; 1.通过LCD屏幕显示实时两个电机的占空比 2.通过按键调整电机1和2的加减速 3.通过L298N驱动两个直流电机完成调速 一、原理图 二、部分代码 #include &qu…

基于Spring Boot + Vue社区管理系统的设计与实现

1、项目介绍 Spring Boot 是一个用于构建 Java 应用程序的开源框架&#xff0c;它使得开发者可以轻松地创建独立的、生产级别的 Spring 应用程序。Vue.js 是一个流行的 JavaScript 框架&#xff0c;用于构建现代化的、响应式的社区管理系统是一个用于管理社区活动、用户信息和…

Vue发布新版本,强制更新代码的方式

public下新建version.json文件定义版本 {"version":"1.1.0" } util下新建updateVersion.js import axios from axios; import { Loading } from element-ui; var t1; var t2; export async function isNewVersion() {var randomNumberMath.random() co…

[软件工具]左键连发工具左键连点工具使用教程

左键连发软件是一个可以点击一下自动左键连续点击指定次数的软件&#xff0c;比如你设置20次&#xff0c;当你点击一次松开鼠标后&#xff0c;会自动左键连续点击20次。具体使用教程为&#xff0c;我们打开软件 我们可以设置连发次数&#xff0c;默认15次&#xff0c;你可以设置…

Zabbix如何对接Prometheus

一、简介 云原生和容器广泛流行打破传统的技术堡垒&#xff0c;现在Prometheus监控得到越来越多企业应用和探索。对于已经存在Zabbix监控系统的用户又想尝试Prometheus而言&#xff0c;在Zabbix4.2版本及5.0 LTS版本正式发布增加了对Prometheus数据源的接入&#xff0c;后续都…

人机环境系统中的一多分有问题探讨

在一般的事物中&#xff0c;一多关系通常指的是一个事物与多个其他事物之间的关系。一多关系可以带来更多的选择和多样性&#xff0c;使事物更加丰富多样。不同的事物之间相互影响和交融&#xff0c;可以产生新的创意和发展机会&#xff1b;不同事物之间的各种关系需要平衡各自…

leetcode 203.移除链表元素

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;移除链表元素 1️⃣ 代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*//*思路1&#xff1a;遍历链表&#xff0c;同时用另一个指针记录当…

IDA c++分析辅助插件ida_medigate使用记录

1.下载插件 IDA_medigate 2.将medigate_cpp_plugin.py放到 ida的plugin文件夹中 plugins/ida-referee/referee.py 放置到plugin中 3.将下载的 ida_medigate 放到IDA 内置的python38的Lib\site-packages\目录下 如:D:\IDA_Pro_7.7\python38\Lib\site-packages4.配置插件搜索…

大厂面试官:软件测试员,你的简历,是如何石沉大海的?

引言 俗话说&#xff1a;知己知彼百战百胜&#xff0c;面试如打仗&#xff0c;不是面试官赢&#xff0c;就是求职者胜。站在面试官的维度来跟求职者聊天&#xff0c;让求职者知道面试官的心理。 因为我本身作为一面多年的大厂面试官&#xff0c;相对来说还是有一些面试经验&am…

股价在5年内暴涨了3000%后,Enphase Energy未来还会继续上涨吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 Enphase Energy股票的关键指标 最近很多人都在关注Enphase Energy&#xff08;ENPH&#xff09;的关键指标&#xff0c;包括该公司第二季度的指引和最近的股价调整。 2023年4月25日收盘后&#xff0c;Enphase Energy公布了…

leetcode每日一题——80.删除有序数组中的重复项II(面试经典150题)

一、题目描述与要求 80. 删除有序数组中的重复项 II - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用…

NodeJS安装教程(详细)

系列文章 MySQL安装教程&#xff08;详细&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/126037520 MySQL卸载教程&#xff08;详细&#xff09; 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/129279265 …

Linux 内核源代码情景分析(一)

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理 Linux 内核源代码情景分析&#xff08;一&#xff09; 文章目录 系列文章目录一、存储管理1、外部设备存储空间的地址映射&#xff08;1&#xff…

LinK3D论文详解

摘要 特征提取和匹配是许多计算机视觉任务的基本部分&#xff0c;例如二维或三维物体检测、识别和配准。众所周知&#xff0c;二维特征提取和匹配已经取得了很大的成功。遗憾的是&#xff0c;在3D领域&#xff0c;由于描述能力差和效率低&#xff0c;目前的方法无法支持3D激光雷…

uniapp在微信开放平台创建移动应用时,如何生成应用签名的问题

包名在打包的时候是必填项&#xff0c;就不多赘述了… 微信开放平台获取应用签名&#xff0c; 场景&#xff1a; 首先需要在手机或者模拟器上下载签名生成工具&#xff0c;下载地址&#xff1a;下载签名生成工具 然后手机打开&#xff0c; 在这里输入你的app打包时的包名&…