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

2023年 9月 21日 78.5k 0

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

首先分享之前的所有文章 >>>> 😜😜😜
文章合集 : 🎁 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个重要的工具是可以使用的 :

image.png

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

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

容器镜像服务 ACR

image.png

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

三. 处理流程

3.1 第一步 : 准备

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

3.2 第二步 : 提交你的代码

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

  • Java Spring 代码,常规的 Application 和 pom.xml ,和正常项目一样
  • 一个 Dockerfile ,用于docker 镜像的生成
  • 一个 StartUp.sh ,用于进行项目启动(也可以直接命令启动,只不过弄一个 sh 文件扩展更轻松)

image.png

// 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 )

image.png

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

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

部署命令 :

  • DOCKER_PASSWORD 是在变量和缓存中进行配置,用于拉取对应的容器镜像
  • quick_demo 是前面的构建环节生成的镜像,这里拉取后进行部署
  • CI_COMMIT_ID 在构建环节作为镜像的版本,这个变量是固有变量 , 在这里可以看 环境变量的来源

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}

image.png

流水线执行完成

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

image.png

image.png

四. 执行结果

4.1 Docker 执行情况

image.png

4.2 容器内应用启动情况

image.png

4.3 访问应用

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

image.png

五. 总结

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

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

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

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论