5.3 GitLab CI CD实战:从代码提交到自动部署完整Pipeline
·
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
四、总结
通过本文,我们学习了:
- ✅ GitLab CI/CD:.gitlab-ci.yml 配置
- ✅ Pipeline 阶段:build、test、deploy
- ✅ Docker 构建:构建和推送镜像
- ✅ Kubernetes 部署:自动部署到集群
关键要点
- GitLab CI/CD 集成在 GitLab 中
- 通过 YAML 定义 Pipeline
- 支持多阶段构建和部署
- 可以集成 Kubernetes
下一步
掌握了 GitLab CI/CD 后,我们将在下一节学习 Kubernetes CI/CD 最佳实践。
下一节预告:我们将学习 Kubernetes CI/CD 最佳实践,包括构建、测试、部署全流程自动化。
更多推荐
所有评论(0)