如何实现Github项目自动构建部署到阿里云ECS
本文首发于个人博客 Cyy’s Blog
转载请注明出处 https://cyyjs.top/blog/5ff7f26ae676b5000ec60c01
上篇文章我们介绍了持续集成平台 Drone 的搭建,使用Drone
是可以满足github
自动构建部署的,本章内容介绍如何使用另外一个平台阿里云效来实现Github
项目代码PUSH
后自动构建及部署、成功失败通知。
# 为什么选择使用云效?
首先我购买的服务器是阿里云的ECS,项目部署方式是使用Docker,云效同样是阿里的产品,中间是打通的,如镜像构建,可以使用阿里云的容器镜像服务,构建自己私有的镜像,云效Flow流水线可以直接集成,可以直接关联ECS服务器,运行私有镜像部署。 重要的是这些都是可以免费试用的。
# 前提准备条件
接下来以我在GitHub
上一个Node.js
项目为例进行演示
# 创建流水线
打开创建流水线页面
这里选择会列出来许多预设的模板,我们可以选择Node.js
模板,并创建。
# 第一步:选择代码源
支持所有的Git
仓库来源,我们这里可以选择Github
,添加关联我们的Github
账户,关联完成后可以获取到账户下的仓库信息。
这里选择命名空间,如果是个人,即为您的Github
用户名,然后选择要部署的仓库及分支。
如果想在代码提交时自动触发构建部署,可以打开开启代码源触发
选项,设置自定义的过滤条件;这里输入main
表示只有在main
分支提交代码才会触发构建
条件设置完成后还需要再Github
仓库设置里配置上面生成的webhook
地址;配置完成后,下次git提交代码时就会触发自动部署流程了。
# 第二步:测试
此步骤执行代码lint
检测和运行测试用例
,通过后将会进入下一步。
# 第三步:构建并推送至阿里云镜像仓库
这一步是对代码进行Docker
构建,需要保证代码里有Dockerfile
配置文件,构建完成后自动推送到阿里云的镜像仓库。
首先需要对相关服务授权,可以新建服务授权,使其拥有对【阿里云容器镜像服务】的相关权限。然后选择或创建一个镜像仓库;配置标签
和Dockerfile
文件路径。
# 第四步:部署
新建主机组,选择我们在阿里云的ECS主机,执行用户为root
,然后配置部署脚本
需要确保主机已经安装了
Docker
并且已经登录了阿里容器仓库,参考地址
docker pull $image
docker run $image
上面$image
为上一步构建后输出的变量,可在变量
配置里进行配置
# 通知配置
如果我们想在每一步执行成功或失败的时候收到通知,可在每个阶段的配置下面添加一个任务插件
;插件支持三种类型:钉钉机器人通知、邮件通知、webhooks通知;这里我们可以选择Webhooks通知插件
,然后填入我们自己的webhook
服务地址, 可以参考此文章来创建一个简单的Webhook服务
# 运行部署
全部完成后,可点击右上角的保存并运行
来运行我们刚才创建的流程。
如果所有配置正确,就可以看到部署成功的通知。