docker-gitlab CI/CD流水线:从代码提交到自动部署全流程

docker-gitlab CI/CD流水线:从代码提交到自动部署全流程

【免费下载链接】docker-gitlab Dockerized GitLab 【免费下载链接】docker-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 流水线工作流程

mermaid

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.ymldocker:build任务中,执行以下操作:

  1. 登录容器仓库:docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  2. 构建镜像:docker build --tag $DOCKER_IMAGE:$VERSION .
  3. 推送镜像: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 安全与权限控制

五、常见问题与解决方案

5.1 构建失败排查

  1. 检查CI_MIGRATION.md中的迁移指南,确保CI配置兼容新版本
  2. 验证Docker服务是否正常运行:docker info
  3. 查看构建日志: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 【免费下载链接】docker-gitlab 项目地址: https://gitcode.com/gh_mirrors/do/docker-gitlab

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值