目标
当我们 push 代码到 git 仓库时,将项目部署到目标服务器上,具体步骤:
- 基于代码仓库中的 Dockerfile 构建代码镜像
- 将构建的代码镜像推送到我们的私有镜像仓库
- 通过 ssh 连接目标服务器,远程执行部署指令,基于代码镜像启动容器
示例代码说明
1 | stages: |
这段 CI 脚本有两个 stage:
- build # 根据代码目录下的 Dockerfile 构建镜像,并 push 到镜像仓库
- deploy # 通过 ssh 连接目标服务器,远程执行部署指令
其中用到了一些预定义了一些环境变量:
- REGISTRY_ADDR # 私有镜像仓库的地址,例如:registry.cn-hangzhou.aliyuncs.com
- REGISTRY_USER # 私有镜像仓库用户名
- REGISTRY_PASSWORD # 私有镜像仓库密码
- SERVER_SSH_PRIV_KEY # 登陆目标服务器的私钥
- SERVER_ADDR # 目标服务器的地址
预定义的环境变量并不在 .gitlab-ci.yml
中定义,因为它们往往是一些敏感信息,具体的设置方式是提前在 GitLab Web 端代码仓库设置页面填写:Settings > CI/CD > Variables
。
参考链接
- GitLab Variables: https://docs.gitlab.com/ee/ci/variables/README.html#variables
- Using SSH keys with GitLab CI/CD: https://docs.gitlab.com/ee/ci/ssh_keys/README.html
- Building Docker images with GitLab CI/CD:
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#making-docker-in-docker-builds-faster-with-docker-layer-caching