先来看总体架构图,分为构建和部署
- 从代码库到runner完成docker镜像的制作,然后提交到私有镜像库
- 通过rancher容器管理平台拉取镜像,启动容器服务,完成服务部署
1.项目版本中加入
.gitlab-ci.yml
stages:
- test
- deploy
# 变量
variables:
DEV_RSYNC_PATH: "/data/deploy/xunlei.com/misc.xl9.xunlei.com/d/"
# 所有 stage 之前的操作
before_script:
- npm set registry http://xnpm.sz.xunlei.cn
- npm install
# 代码检查
lint:
stage: test
script: npm run lint
# 单元测试
unit:
stage: test
script: npm run unit
# 部署测试服务器
deploy_dev:
stage: deploy
tags:
- 10.10.34.91-dev
only:
- develop
script:
- rsync -av --delete-after --exclude-from=/data/shell/home.xl9.xunlei_exclude.list . $DEV_RSYNC_PATH
- chmod -R 755 $DEV_RSYNC_PATH
- chown -R nobody:nobody $DEV_RSYNC_PATH
- find $DEV_RSYNC_PATH -type f -exec chmod 644 {} \;
- cd $DEV_RSYNC_PATH
- npm install
2. 制作项目dockerfile
例如:
FROM ubuntu
RUN apt-get update && apt-get install -y nodejs
ADD . /app
RUN cd /app && npm install
CMD npm start
- 当代码提交后,通过git的钩子机制触发gitlab ci,gitlab ci 管理在注册在自己下的runner构建主机,执行.gitlab-ci.yml 中配置的shell命令,通过dockerfile制作项目镜像,然后push镜像到私有镜像库中。
- 在rancher中,配置容器启动命令,完成服务的运行
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。