gitlab CICD
1. 安装gitlab-runner 这里不再介绍 这里选择docker 模式
2. 使用gitlab ci 工具 cicd 代码流程
代码检查--> docker build --> 更新harbor 服务器 --> 同步到kubernetes --> 发送邮件通知
3.在项目的主目录创建.gitlab-ci.yml 文件
stages:
- scanner
- sendmail
- build
- update_img
- sync_img
- deploy
- check_pod
- send_mail
variables:
namespace: "test"
deployment_name: "platform-api"
project: "harbor.test.com/cicd/platform-api"
release: "latest"
harbor: "http://harbor.test.com"
DOCKER_HARBOR_USER: "admin"
DOCKER_HARBOR_PASSWD: "Harboreeee12345"
BASE_IMAGE: "harbor.test.com/lks/cicd/initbase:v1"
DOCKER_PUSH_IMAGE: "harbor.test.com/lks/cicd/dockerpush:git"
KUBECTL_TOOL: "harbor.test.com/devel-tool/kubectl_tool:latest"
mail_list: "test@com"
include:
- local: '.gitlab/check/SonarqubeCheck.yml'
- local: '.gitlab/docker/DefaultDockerBuild.yml'
- local: '.gitlab/docker/PushImage.yml'
- local: '.gitlab/Kubernetes/SyncImage.yml'
- local: '.gitlab/Kubernetes/CheckPod.yml'
- local: '.gitlab/check/SendMail.yml'
4. 功能部署使用include 方式加载本地yml文件 。
1)代码检查 .gitlab/check/SonarqubeCheck.yml
image: harbor.test.com/ci/ubuntu-sonarqube-nodejs-scanner:v4
example-master-sonar:
stage: scanner
only:
- master
- merge_requests
tags:
- sonar-docker
script:
- sonar-scanner-4.4.0 -Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.projectKey=$CI_PROJECT_NAME -Dsonar.branch.name=${CI_COMMIT_REF_NAME} -Dsonar.host.url=http://isonar.test.com -Dsonar.sourceEncoding=UTF-8
example-develop-sonar:
stage: scanner
only:
- develop
tags:
- sonar-docker
script:
- sonar-scanner-4.4.0 -Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.projectKey=$CI_PROJECT_NAME -Dsonar.branch.name=${CI_COMMIT_REF_NAME} -Dsonar.language=nodejs -Dsonar.host.url=http://isonar.test.com
example-feature-sonar:
stage: scanner
only:
- /^feature-.*$/
tags:
- sonar-docker
script:
- sonar-scanner-4.4.0 -Dsonar.projectName=$CI_PROJECT_NAME -Dsonar.projectKey=$CI_PROJECT_NAME -Dsonar.branch.name=${CI_COMMIT_REF_NAME} -Dsonar.host.url=http://isonar.test.com -Dsonar.sourceEncoding=UTF-8
2)打包docker build images .gitlab/docker/DefaultDockerBuild.yml
docker-build:
image: $BASE_IMAGE
stage: build
tags:
- kube-runner
script:
- echo "$project:$CI_COMMIT_SHORT_SHA $CI_JOB_ID"
- docker build -t $project:$CI_COMMIT_SHORT_SHA --no-cache .
- docker tag $project:$CI_COMMIT_SHORT_SHA $project:$release
retry: 2
rules:
- exists:
- Dockerfile
3) 上传到harbor 中 .gitlab/docker/PushImage.yml
docker-build:
image: $BASE_IMAGE
stage: build
tags:
- 10.121.116.100
script:
- echo "$project:$CI_COMMIT_SHORT_SHA $CI_JOB_ID"
- docker build -t $project:$CI_COMMIT_SHORT_SHA --no-cache .
- docker tag $project:$CI_COMMIT_SHORT_SHA $project:$release
retry: 2
rules:
- exists:
- Dockerfile
4) 同步kubernetes deployment 中
deploy_dev:
image: $KUBECTL_TOOL
stage: sync_img
script:
- kubectl set image deployment $deployment_name *=$project:$CI_COMMIT_SHORT_SHA -n $namespace --kubeconfig=.gitlab/kube_env/10.121.12.120/admin.conf
tags:
- k8s-runner1
only:
- master
- merge_requests
gitlab 内置变量
$CI_COMMIT_SHORT_SHA commit_id_hash
$CI_JOB_ID job id
$CI_PROJECT_URL 项目的url
$GITLAB_USER_EMAIL 提交者的mail 地址
合集:
持续集成
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现