一、简要概述
一提起CI/CD,国内开发猿第一个想到的就是jenkins。
大致流程如下:
- 本地代码推送至Github
- Github监听到推送事件后触发 webhook,请求开发猿们自己搭建的 jenkins 平台
- jenkins 平台收到请求后自动拉取代码,开始构建。
jenkins 构建后的产物可以是二进制可执行文件,也可以是 Docker 镜像。当然也可以是源码形式。
例如:Golang构建完就可以是可执行的二进制文件、PHP就可以直接是以源码的形式、如果你用 Docker 也可以构建为镜像的形式。
通过 jenkinsfile 的编写,我们可以控制构建时的每个生命周期。
例如:构建前、构建中、构建后、构建失败时。
我们可以自行编写 Jenkinsfile 代码控制每一步构建的流程。比如构建失败时,可以发一封邮件通知开发人员。
这些构建完后的产物,我们称为构建产物。可以归档到制品库中
如何理解制品库这个名词呢?
例如当我们构建好 docker 镜像后推送至容器镜像服务平台,则这个平台就是一个制品库,它管理着你每次构建的产物。(这里我推荐阿里镜像容器服务)
当你推送到容器镜像服务平台后,也可以配置该平台上的webhook。它触发事件后会通知你的应用程序拉取刚推送的镜像。实现持续部署的功能。
二、实操
介绍了那么多,其实我并不喜欢 jenkins 平台,因为人都有惰性,它配置太过复杂并且需要下载太多插件。如果抛开公司需求,单纯只面对于个人开发者来说,部署一个jenkins,比较消耗个人服务器资源。
因此我更热爱直接使用别人现成的服务。(例如:腾讯的 coding 平台、阿里的容器镜像服务)
这里我拿阿里云的举例


如上图所示:当你绑定了代码源后,创建仓库即可选择自己的代码托管平台的仓库。每当有推送的指定事件后就将通知阿里云,事件类型可以自行定义,按照开发标准来说一般都是项目在 github 上打 Tag 时会触发事件。

选择代码变更自动构建镜像
这里的前提是你必须保证你的项目代码中拥有 Dockerfile 文件。
例如我是Golang项目,它的 Dockerfile 如下所示

因此,当你推送代码时,阿里云会自动根据你编写的 Dockerfile 构建镜像,并放入阿里云镜像仓库中。
最后配置触发器

当构建完成后,触发器会通知你的应用程序,并且发送构建镜像的Tag。你的应用程序可以拉取最新镜像,实现持续部署功能。
完。
文章评论(0)