docker-gitlab CI/CD流水线:从代码提交到自动部署全流程
【免费下载链接】docker-gitlab Dockerized GitLab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab
你还在手动部署代码?还在为版本不一致头疼?本文将带你掌握docker-gitlab CI/CD流水线全流程,从代码提交到自动部署,让开发效率提升10倍!读完你将学会:配置GitLab Runner、编写.gitlab-ci.yml、构建Docker镜像、自动部署应用。
一、环境准备与基础配置
1.1 部署docker-gitlab环境
使用docker-compose快速部署GitLab环境,配置文件docker-compose.yml定义了GitLab、PostgreSQL和Redis服务。关键配置如下:
services:
gitlab:
image: sameersbn/gitlab:18.5.1
ports:
- "10080:80" # HTTP端口
- "10022:22" # SSH端口
environment:
- GITLAB_HOST=localhost
- GITLAB_PORT=10080
- GITLAB_SSH_PORT=10022
- GITLAB_PROJECTS_BUILDS=true # 启用CI构建功能
启动服务:
docker-compose up -d
1.2 配置SSH访问
为确保代码提交和CI/CD正常工作,需配置SSH端口。参考文档docs/exposing-ssh-port.md,使用脚本contrib/expose-gitlab-ssh-port.sh映射SSH端口。
二、CI/CD核心配置解析
2.1 GitLab CI配置文件
项目根目录的.gitlab-ci.yml定义了CI/CD流水线,包含三个主要阶段:
stages:
- build # 构建阶段
docker:build:
stage: build
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build --tag $DOCKER_IMAGE:$VERSION .
- docker push $DOCKER_IMAGE:$VERSION
2.2 容器仓库集成
GitLab容器仓库(Container Registry)用于存储构建产物。配置文件docs/container_registry.md详细说明了如何启用和配置仓库。在docker-compose中添加registry服务:
registry:
image: registry
volumes:
- ./gitlab/shared/registry:/registry
environment:
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/registry
三、完整CI/CD流程实现
3.1 流水线工作流程
3.2 关键环境变量
CONTRIBUTING.md定义了CI/CD所需的环境变量,主要包括:
| 变量 | 描述 |
|---|---|
CI_REGISTRY | 容器仓库地址,默认使用GitLab内置仓库 |
CI_REGISTRY_USER | 仓库认证用户,默认gitlab-ci-token |
CI_REGISTRY_PASSWORD | 仓库认证密码,使用CI_JOB_TOKEN |
DOCKER_IMAGE | 镜像名称,格式为项目路径/镜像名 |
3.3 构建与推送镜像
在.gitlab-ci.yml的docker:build任务中,执行以下操作:
- 登录容器仓库:
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - 构建镜像:
docker build --tag $DOCKER_IMAGE:$VERSION . - 推送镜像:
docker push $DOCKER_IMAGE:$VERSION
四、高级配置与最佳实践
4.1 多环境部署策略
通过分支策略实现多环境部署:
master分支:构建生产环境镜像(latest标签)- 特性分支:构建测试环境镜像(分支名标签)
- 标签发布:构建版本化镜像(如
v1.0.0标签)
4.2 配置文件管理
GitLab配置文件assets/runtime/config/gitlabhq/gitlab.yml包含CI/CD相关设置,关键配置:
default_projects_features:
builds: true # 启用构建功能
cron_jobs:
pipeline_schedule_worker:
cron: "*/15 * * * *" # 每15分钟检查定时任务
4.3 安全与权限控制
- 使用
CI_REGISTRY_PASSWORD变量安全存储认证信息 - 配置CONTRIBUTING.md中的权限变量,限制CI/CD操作范围
- 定期轮换assets/runtime/config/gitlabhq/secrets.yml中的密钥
五、常见问题与解决方案
5.1 构建失败排查
- 检查CI_MIGRATION.md中的迁移指南,确保CI配置兼容新版本
- 验证Docker服务是否正常运行:
docker info - 查看构建日志:GitLab项目 → CI/CD → 作业 → 查看原始日志
5.2 镜像推送失败
- 确认容器仓库地址是否正确,参考docs/container_registry.md
- 检查网络连接,确保CI runner能访问仓库地址
- 验证认证信息:
echo $CI_REGISTRY_PASSWORD | docker login --username $CI_REGISTRY_USER --password-stdin $CI_REGISTRY
通过以上步骤,即可实现从代码提交到自动部署的完整CI/CD流程。如需进一步扩展,可参考docs/docker-swarm-traefik-registry.md配置Docker Swarm集群部署。
【免费下载链接】docker-gitlab Dockerized GitLab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



