👈👈👈 欢迎点赞收藏关注哟
首先分享之前的所有文章 >>>> 😜😜😜
文章合集 : 🎁 juejin.cn/post/694164...
Github : 👉 github.com/black-ant
CASE 备份 : 👉 gitee.com/antblack/ca...
一. 前言
持续集成 、 持续交付 一直是整个产品研发中十分重要的一环。在这个领域里面有很多重量级的选手 , 开源领域能打的包括 Jenkins ,阿里云玩家会使用 云效 这类工具。
这段时间在做集群体系的部署,发现这套方案 完全足够我们个人开发者的使用,甚至于可以轻松的部署一个小集群。
二. 一个完整的持续集成需要什么
如果从 0 到 1 的方式进行持续集成,基本上需要以下关键元素 :
- 代码仓库管理
- DevOps 持续集成工具
- Maven 依赖管理库
- 容器镜像库
- 一套可以执行的代码
适量的便宜好用的最好是阿里云送的服务器(没得资格了哦,搞不起哦)
而以上的东西在阿里体系里面基本上可以找到。
2.1 云效上能免费使用的东西
云效上我们有2个重要的工具是可以使用的 :
- 代码管理 :帮助我们进行代码的维护和持续集成
- 流水线 flow :用于进行持续部署
- 还可以使用制品仓库用于 Maven 私库的使用,这一篇用不上,不介绍了
2.2 阿里云上能免费使用的东西
容器镜像服务 ACR
通过容器进行服务进行 Docker 容器的管理,流水线的制品会放入这个镜像服务中
三. 处理流程
3.1 第一步 : 准备
- 需要一个 ESC 服务器,或者自己的服务器 (非阿里系整起来会有点麻烦,强制要求 python2.7 就过分了)
- 如果没有服务器也不要紧,ESC里面 领个免费的 或者买个 按需计费(一块钱不到) 的玩一个小时绰绰有余
- 把JDK镜像环境下载后上传到镜像服务中(如果本身容器带了更好)
3.2 第二步 : 提交你的代码
流程就不说了,准备一个 SpringBoot 或者其他语言的项目都行,这里以 SpringBoot 举例,里面我准备了这几个部分 :
-
- Java Spring 代码,常规的 Application 和 pom.xml ,和正常项目一样
-
- 一个 Dockerfile ,用于docker 镜像的生成
-
- 一个 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 玩个大的,不过这个也折腾了半天,所以记下来。
全程除了服务器花了几块钱买的按需计费,其他的基本上没花多钱,轻轻松松玩持续集成,爽爆了。
另外不要拉我的镜像哦,阿里云镜像服务器并发是有上限的,别把我挤挂了