GitLab CI/CD实战:从代码提交到自动部署完整Pipeline

引言

GitLab CI/CD 是集成在 GitLab 中的 CI/CD 工具。本文将深入讲解 GitLab CI/CD 的使用方法,通过实战案例实现从代码提交到自动部署的完整流程。

一、GitLab CI/CD 基础

1.1 .gitlab-ci.yml

GitLab CI/CD 通过 .gitlab-ci.yml 文件定义 Pipeline。

1.2 基本结构

stages:
  - build
  - test
  - deploy

build:
  stage: build
  script:
    - echo "Building..."

test:
  stage: test
  script:
    - echo "Testing..."

deploy:
  stage: deploy
  script:
    - echo "Deploying..."

二、Go 项目 Pipeline

2.1 完整 Pipeline

stages:
  - build
  - test
  - docker
  - deploy

variables:
  DOCKER_IMAGE: registry.example.com/http-server
  DOCKER_TAG: $CI_COMMIT_SHORT_SHA

build:
  stage: build
  image: golang:1.21
  script:
    - go mod download
    - go build -o app .
  artifacts:
    paths:
      - app
    expire_in: 1 hour

test:
  stage: test
  image: golang:1.21
  script:
    - go test -v ./...

docker-build:
  stage: docker
  image: docker:latest
  services:
    - docker:dind
  before_script:
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
  script:
    - docker build -t $DOCKER_IMAGE:$DOCKER_TAG .
    - docker push $DOCKER_IMAGE:$DOCKER_TAG
    - docker tag $DOCKER_IMAGE:$DOCKER_TAG $DOCKER_IMAGE:latest
    - docker push $DOCKER_IMAGE:latest
  only:
    - main

deploy:
  stage: deploy
  image: bitnami/kubectl:latest
  script:
    - kubectl set image deployment/http-server http-server=$DOCKER_IMAGE:$DOCKER_TAG -n production
  only:
    - main
  environment:
    name: production

三、Kubernetes 部署

3.1 使用 kubectl

deploy:
  stage: deploy
  image: bitnami/kubectl:latest
  script:
    - kubectl apply -f k8s/ -n production
  only:
    - main

3.2 使用 Helm

deploy:
  stage: deploy
  image: alpine/helm:latest
  script:
    - helm upgrade --install http-server ./helm-chart \
        --set image.tag=$CI_COMMIT_SHORT_SHA \
        -n production
  only:
    - main

四、总结

通过本文,我们学习了:

  1. GitLab CI/CD:.gitlab-ci.yml 配置
  2. Pipeline 阶段:build、test、deploy
  3. Docker 构建:构建和推送镜像
  4. Kubernetes 部署:自动部署到集群

关键要点

  • GitLab CI/CD 集成在 GitLab 中
  • 通过 YAML 定义 Pipeline
  • 支持多阶段构建和部署
  • 可以集成 Kubernetes

下一步

掌握了 GitLab CI/CD 后,我们将在下一节学习 Kubernetes CI/CD 最佳实践。


下一节预告:我们将学习 Kubernetes CI/CD 最佳实践,包括构建、测试、部署全流程自动化。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐