likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 50

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

一. 前言

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

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

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

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

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

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

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

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

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

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

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

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

容器镜像服务 ACR

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

通过容器进行服务进行 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 文件扩展更轻松)

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

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

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

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

  • 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}

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

流水线执行完成

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

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

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

四. 执行结果

4.1 Docker 执行情况

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

4.2 容器内应用启动情况

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

4.3 访问应用

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

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

五. 总结

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

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

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

转载自:https://juejin.cn/post/7281113851714060303
评论
请登录