步骤六:构建应用
编译构建提供配置简单的混合语言构建平台,支持任务一键创建、配置和执行,实现获取代码、构建、打包等活动自动化。
通过本章节,您将了解开发人员Chris如何使用编译构建服务构建环境镜像、将代码编译打包成软件包,以及通过代码变更触发自动构建来实现持续集成。
预置编译构建任务简介
本章节以任务“phoenix-sample-ci”为例进行讲解,此任务包含的步骤如表2所示。
构建步骤 |
说明 |
---|---|
制作Vote镜像并推送到SWR仓库 |
通过路径工作目录“./vote”及Dockerfile路径“./Dockerfile”找到“Dockerfile”文件,依据“Dockerfile”文件制作并推送Vote功能镜像。 |
制作Result镜像并推送到SWR仓库 |
通过路径工作目录“./result”及Dockerfile路径“./Dockerfile”找到“Dockerfile”文件,依据“Dockerfile”文件制作并推送Result功能镜像。 |
使用Maven安装Worker依赖包 |
使用Maven安装Worker功能所需的依赖。 |
制作Worker镜像并推送到SWR仓库 |
通过路径工作目录“./worker”及Dockerfile路径“Dockerfile.j2”找到“Dockerfile”文件,依据“Dockerfile”文件制作并推送Worker功能镜像。 |
生成Postgres and Redis Dockerfile |
通过Shell命令生成Postgres和Redis的Dockerfile文件。Redis和Postgres分别是缓存和数据库。 |
制作Postgres镜像并推送到SWR仓库 |
通过工作目录“.”及Dockerfile路径“./Dockerfile-postgres”找到“Dockerfile”文件,依据“Dockerfile”文件制作并推送Postgres镜像。 |
制作Redis镜像并推送到SWR仓库 |
通过工作目录“.”及Dockerfile路径“./Dockerfile-redis”找到“Dockerfile”文件,依据“Dockerfile”文件制作并推送Redis功能镜像。 |
替换Docker-Compose部署文件镜像版本 |
首先,将文件“docker-compose-standalone.yml”中的以下参数“docker-server”、“docker-org”、“image-version”依次用构建任务当中的参数“dockerServer”、“dockerOrg”、“BuildNumbe”“r”进行替换,以便后续进行ECS部署时可以拉取到正确的镜像。 然后,使用tar命令将文件“docker-compose-standalone.yml”压缩为“docker-stack.tar.gz”,将部署所需文件进行打包,以便于后续步骤将该文件上传归档。 |
替换Kubernetes部署文件镜像版本 |
首先,将在目录“kompose”下,所有以“deployment”结尾的文件中,参数“docker-server”、“docker-org”、“image-version”依次用构建任务当中的参数“dockerServer”、“dockerOrg”、“BuildNumber”进行替换,以便后续进行CCE部署时可以拉取到正确的镜像。 然后,使用tar命令将整个“kompose”目录压缩为“phoenix-sample-k8s.tar.gz”,将部署所需文件进行打包,以便于后续步骤将该文件上传归档。 |
上传Kubernetes部署文件到软件发布库 |
将之前压缩好的“phoenix-sample-k8s.tar.gz”(构建包路径)上传到软件发布库中归档,包名命名为“phoenix-sample-k8s”,实现软件包的版本管理。 |
上传docker-compose部署文件到软件发布库 |
将之前压缩好的“docker-stack.tar.gz”(构建包路径)上传到软件发布库中归档,包名命名为“docker-stack”,实现软件包的版本管理。 |

在项目部署过程中,经常遇到由于环境不一致而导致的失败,例如研发调试环境的JDK升级后,未在环境清单中标记清楚,导致生产环境未做相应升级而引发失败。为了避免因为环境不一致导致的各种问题,本样例项目中统一使用Docker的方式将各微服务应用与环境统一打包到镜像,保持每个环境(开发调测环境、测试环境、QA环境、生产环境)一致。
容器镜像加速
构建任务中需要使用node镜像。
为了防止拉取node镜像不稳定,在执行编译构建任务之前,可以先通过容器镜像加速服务获取一个更稳定的node镜像地址。
配置并执行编译构建任务
本文档使用容器镜像服务SWR来保存环境镜像,因此需要首先配置SWR服务,然后配置编译构建任务。
设置提交代码触发自动编译
通过以下配置,可实现代码变更后自动触发应用编译构建任务的执行,从而实现项目的持续集成。
- 在编译构建任务“phoenix-sample-ci”的详情页,单击页面右上角“编辑任务”。
- 选择“源码选择”页签,单击“高级设置”。
- 打开“提交代码触发执行”开关,单击“保存”,如图10所示。
由于在参数设置页面为参数codeBranch配置的默认值为“master”,因此本次设置的结果是当master有代码变更时自动触发构建。
- 验证配置结果:修改项目代码并提交至master(代码开发方式请参考步骤四:开发项目代码,本节不再赘述),即可查看编译构建任务是否自动执行。
设置定时执行编译构建任务
为了防止问题代码进入生产环境,确保应用总是处于可部署的状态,团队建议对应用进行持续不断的验证。
通过以下设置,可实现编译构建任务的定时执行。
- 在编译构建任务“phoenix-sample-ci”的详情页,单击页面右上角“编辑任务”。
- 选择“执行计划”页签,可看到如表4所示三种执行计划。
- 本文档中选择“每日定时执行”,执行开始时间为“12:00”。
- 验证配置结果:根据配置时间查看编译构建任务是否自动执行,本节不再赘述。
