花20分钟白嫖一整套 DevOps 发布方案

👈👈👈 欢迎点赞收藏关注哟

首先分享之前的所有文章 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164...
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca...

一. 前言

持续集成 、 持续交付 一直是整个产品研发中十分重要的一环。在这个领域里面有很多重量级的选手 , 开源领域能打的包括 Jenkins ,阿里云玩家会使用 云效 这类工具。

这段时间在做集群体系的部署,发现这套方案 完全足够我们个人开发者的使用,甚至于可以轻松的部署一个小集群。

二. 一个完整的持续集成需要什么

如果从 0 到 1 的方式进行持续集成,基本上需要以下关键元素 :

  • 代码仓库管理
  • DevOps 持续集成工具
  • Maven 依赖管理库
  • 容器镜像库
  • 一套可以执行的代码
  • 适量的便宜好用的最好是阿里云送的服务器没得资格了哦,搞不起哦

而以上的东西在阿里体系里面基本上可以找到。

2.1 云效上能免费使用的东西

阿里云云效_云效_云原生时代新DevOps平台-阿里云 (aliyun.com)

云效上我们有2个重要的工具是可以使用的 :

  • 代码管理 :帮助我们进行代码的维护和持续集成
  • 流水线 flow :用于进行持续部署
  • 还可以使用制品仓库用于 Maven 私库的使用,这一篇用不上,不介绍了

2.2 阿里云上能免费使用的东西

容器镜像服务 ACR

通过容器进行服务进行 Docker 容器的管理,流水线的制品会放入这个镜像服务中

三. 处理流程

3.1 第一步 : 准备

  • 需要一个 ESC 服务器,或者自己的服务器 (非阿里系整起来会有点麻烦,强制要求 python2.7 就过分了)
    • 如果没有服务器也不要紧,ESC里面 领个免费的 或者买个 按需计费(一块钱不到) 的玩一个小时绰绰有余
  • 把JDK镜像环境下载后上传到镜像服务中(如果本身容器带了更好)

3.2 第二步 : 提交你的代码

流程就不说了,准备一个 SpringBoot 或者其他语言的项目都行,这里以 SpringBoot 举例,里面我准备了这几个部分 :

    1. Java Spring 代码,常规的 Application 和 pom.xml ,和正常项目一样
    1. 一个 Dockerfile ,用于docker 镜像的生成
    1. 一个 StartUp.sh ,用于进行项目启动(也可以直接命令启动,只不过弄一个 sh 文件扩展更轻松)
java 复制代码
// Dockerfile (openjdk 是我下载后推送到容器镜像服务里面的,不然拉取外网会有点问题)
#! bash
FROM registry.cn-hangzhou.aliyuncs.com/ant_public/openjdk:8
WORKDIR /root

ARG appName
COPY /target/$appName.jar /root/

COPY startup.sh /root/
CMD ["bash","startup.sh"]


// startup.sh (里面就一个启动命令)
exec java -jar quick.jar ""

3.3 第三步 : 部署你的流水线

流水线如果用过的肯定很清楚这一块,我这里简单介绍 , 包括3大模块 :

  • 流水线源 : 用于关联代码仓库,从指定的仓库拉取代码进行部署
  • 构建用于进行 Java 包得到构建,以及镜像的构建
  • 部署用于部署到对应的环境(可以是 Docker , 主机 , 或者 K8S )

其中有几个比较关键的点 :

  • mvn 编译命令基本上不需要修改,可以按照自己的需求来
  • 变量替换是为了替换上面的 Dockerfile 文件中的文件名
  • 关联了容器镜像服务就可以进行镜像的上传

部署命令 :

  • DOCKER_PASSWORD 是在变量和缓存中进行配置,用于拉取对应的容器镜像
  • quick_demo 是前面的构建环节生成的镜像,这里拉取后进行部署
  • CI_COMMIT_ID 在构建环节作为镜像的版本,这个变量是固有变量 , 在这里可以看 环境变量的来源
java 复制代码
echo $DOCKER_PASSWORD | docker login --username $DOCKER_USERNAME --password-stdin registry.cn-hangzhou.aliyuncs.com

echo "--- 打印环境变量"
echo ${CI_COMMIT_ID}

docker pull registry.cn-hangzhou.aliyuncs.com/antblack/quick_demo:${CI_COMMIT_ID}

docker run -p 8080:8080 -d registry.cn-hangzhou.aliyuncs.com/antblack/quick_demo:${CI_COMMIT_ID}

流水线执行完成

  • 执行的时候可以通过执行日志了解到具体的执行过程
  • 执行完第二步后就能看到自己镜像服务的镜像了
  • 如果使用的 ESC 服务器没有 Docker ,记得要安装
  • 如果是阿里的服务器,则直接可以在主机组里面进行选择,否则要玩混合云,还搞得有点麻烦

四. 执行结果

4.1 Docker 执行情况

4.2 容器内应用启动情况

4.3 访问应用

记得配置 ESC 安全组,把访问端口添加上去,不出问题就可以访问了

五. 总结

这种只是小玩法,后面要通过 K8S 玩个大的,不过这个也折腾了半天,所以记下来。

全程除了服务器花了几块钱买的按需计费,其他的基本上没花多钱,轻轻松松玩持续集成,爽爆了。

另外不要拉我的镜像哦,阿里云镜像服务器并发是有上限的,别把我挤挂了

相关推荐
liu_chunhai2 分钟前
设计模式(3)builder
java·开发语言·设计模式
姜学迁10 分钟前
Rust-枚举
开发语言·后端·rust
ya888g38 分钟前
GESP C++四级样题卷
java·c++·算法
【D'accumulation】1 小时前
令牌主动失效机制范例(利用redis)注释分析
java·spring boot·redis·后端
小叶学C++1 小时前
【C++】类与对象(下)
java·开发语言·c++
2401_854391081 小时前
高效开发:SpringBoot网上租赁系统实现细节
java·spring boot·后端
Cikiss1 小时前
微服务实战——SpringCache 整合 Redis
java·redis·后端·微服务
wxin_VXbishe1 小时前
springboot合肥师范学院实习实训管理系统-计算机毕业设计源码31290
java·spring boot·python·spring·servlet·django·php
Cikiss1 小时前
微服务实战——平台属性
java·数据库·后端·微服务
无敌の星仔1 小时前
一个月学会Java 第2天 认识类与对象
java·开发语言