本文首发于个人博客 Cyy’s Blog
转载请注明出处 https://cyyjs.top/blog/5ff7f26ae676b5000ec60c01

上篇文章我们介绍了持续集成平台 Drone 的搭建,使用Drone是可以满足github自动构建部署的,本章内容介绍如何使用另外一个平台阿里云效来实现Github项目代码PUSH后自动构建及部署、成功失败通知。

# 为什么选择使用云效?

首先我购买的服务器是阿里云的ECS,项目部署方式是使用Docker,云效同样是阿里的产品,中间是打通的,如镜像构建,可以使用阿里云的容器镜像服务,构建自己私有的镜像,云效Flow流水线可以直接集成,可以直接关联ECS服务器,运行私有镜像部署。 重要的是这些都是可以免费试用的。

# 前提准备条件

  1. 了解docker
  2. 拥有一台阿里云服务器
  3. 登录阿里云效
  4. 打开GitHub上需要部署的项目

接下来以我在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服务

# 运行部署

全部完成后,可点击右上角的保存并运行来运行我们刚才创建的流程。
如果所有配置正确,就可以看到部署成功的通知。