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 地址
posted @   扛把子修BUG  阅读(447)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示