软件开发生产线 CODEARTS-步骤五:构建应用:预置任务简介
预置任务简介
样例项目中预置了以下5个构建任务。
预置任务 |
任务说明 |
---|---|
phoenix-sample-ci |
基本的构建任务。 |
phoenix-sample-ci-test |
构建测试环境可用镜像的任务。 |
phoenix-sample-ci-worker |
构建Worker功能镜像的任务。 |
phoenix-sample-ci-result |
构建Result功能镜像的任务。 |
phoenix-sample-ci-vote |
构建Vote功能镜像的任务。 |
关于Vote、Result、Worker的说明,请参见方案架构。
本章节以任务“phoenix-sample-ci”为例进行讲解,此任务包含的步骤如下。
构建步骤 |
说明 |
---|---|
制作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文件。 |
制作Postgres镜像并推送到SWR仓库 |
依据“生成Postgres and Redis Dockerfile”所生成的Dockerfile文件制作并推送Postgres镜像,并将镜像推送到容器镜像服务。 |
制作Redis镜像并推送到SWR仓库 |
依据“生成Postgres and Redis Dockerfile”所生成的Dockerfile文件制作并推送Redis镜像,并将镜像推送到容器镜像服务。 |
替换Docker-Compose部署文件镜像版本 |
为了将镜像部署到ECS时,能够可以拉取到正确的镜像,使用shell命令进行完成以下操作。 首先,使用sed命令,依次将文件“docker-compose-standalone.yml”中的参数替换为构建任务的参数“dockerServer”、“dockerOrg”、“BUILDNUMBER”进行替换。 然后,使用tar命令,将文件“docker-compose-standalone.yml”压缩为“docker-stack.tar.gz”,将部署所需文件进行打包,以便于后续步骤将该文件上传归档。 |
替换Kubernetes部署文件镜像版本 |
为了将镜像部署到CCE时,能够可以拉取到正确的镜像,使用shell命令进行完成以下操作。 首先,使用sed命令,将目录“kompose”下所有以“deployment”结尾的文件中的参数“docker-server”、“docker-org”,替换为构建任务的参数“dockerServer”、“dockerOrg”。 然后,使用sed命令,将“result-deployment.yaml”、“vote-deployment.yaml”、“worker-deployment.yaml”三个文件中的参数“image-version”用构建任务参数“BUILDNUMBER”进行替换。 |
上传Kubernetes部署文件到软件发布库 |
将所有“.yaml”文件上传到软件发布库中归档。 |
上传docker-compose部署文件到软件发布库 |
将压缩好的“docker-stack.tar.gz”(构建包路径)上传到软件发布库中归档,包名命名为“docker-stack”,实现软件包的版本管理。 |
在项目部署过程中,经常遇到由于环境不一致而导致的失败,例如研发调试环境的JDK升级后,未在环境清单中标记清楚,导致生产环境未做相应升级而引发失败。为了避免因为环境不一致导致的各种问题,本样例项目中统一使用Docker的方式将各微服务应用与环境统一打包到镜像,保持每个环境(开发调测环境、测试环境、QA环境、生产环境)一致。