gitlab--基础--06--CICD--案例

gitlab–基础–06–CICD–案例


代码地址

https://gitee.com/DanShenGuiZu/learnDemo/tree/master/gitlab-learn/demo1

1、公共操作

git--基础--04--安装
https://blog.csdn.net/zhou920786312/article/details/126442919


maven--基础--01--安装
https://blog.csdn.net/zhou920786312/article/details/125832759

2、案例1

  1. 代码提交后,自动打包,发布为镜像
  2. 自动部署

2.1、构建项目

在这里插入图片描述

2.2、代码结构

在这里插入图片描述

2.3、cicd代码

#image: registry.cn-hangzhou.aliyuncs.com/choerodon-tools/cibase:0.7.0
# 变量说明
# CI_PROJECT_NAME 项目名称,auth-center
# CI_PROJECT_ID  GitLab CI在内部使用的当前项目的唯一ID
# CI_COMMIT_REF_NAME 分支名称
# CI_COMMIT_SHA  commit的版本号
# DOCKER_USER docker账号
# DOCKER_PWD  docker密码
# DOCKER_REGISTRY 仓库
# image_version 镜像版本,提交时间错

# 注意
# 每一个job都会有自己的项目目录
before_script:
  - id
  - pwd

# 定义变量
variables:

  # docker 服务名称
  docker_name: "demo1"
  
  # 缓存文件目录
  cache_dir: "/home/gitlab-runner/cache/${CI_PROJECT_NAME}-${CI_PROJECT_ID}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}"
  cache_dir_docker: "/home/gitlab-runner/cache/${CI_PROJECT_NAME}-${CI_PROJECT_ID}-${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA}/docker"


stages:
  - build_package
  - docker-build-images
  - server-stop
  - server-start
  - clean-cache
# 打包
build_package:
  stage: build_package
  script:
    # 构建临时目录
    - mvn clean
    - mvn package
    # 构建临时目录
    - mkdir -p ${cache_dir_docker}
    - mkdir -p ${cache_dir_docker}/server/
    # 移动生成的jar包文件 到临时docker目录的server目录,并修改名称为server.jar
    - mv  ./target/*.jar  ${cache_dir_docker}/server/server.jar
  # 只有哪些分支才有效
  only:
    - tags
    - develop
    - main


# 构建镜像和启动服务
docker-build-images:
  stage: docker-build-images
  script:
    # 拷贝项目中的docker目录到临时文件中
    - cp -fr ./docker/* ${cache_dir_docker}
    # 镜像标签
    - image_version=${DOCKER_REGISTRY}/${CI_PROJECT_NAME}:$(date +%Y%m%d-%H-%M-%S)
    # 镜像版本说明文件
    - echo $image_version >> ${cache_dir}/image_version
    # 修改权限
    - chmod +x ${cache_dir_docker}/docker-entrypoint.sh
    # 登陆docker私有仓库
    - echo docker login -u ${DOCKER_USER} -p ${DOCKER_PWD} ${DOCKER_REGISTRY}
    # 通过Dockerfile构建镜像
    - echo docker build -f ${cache_dir_docker}/Dockerfile  -t $image_version ${cache_dir_docker}
    # 推送镜像
    - echo docker push image_version
    # 登陆docker私有仓库
    - docker login -u ${DOCKER_USER} -p ${DOCKER_PWD} ${DOCKER_REGISTRY}
    # 通过Dockerfile构建镜像
    - docker build -f ${cache_dir_docker}/Dockerfile  -t $image_version ${cache_dir_docker}
    # 推送镜像
    #- docker push ${image_version}
  only:
    - tags
    - develop
    - main

# 停止服务
server-stop:
  stage: server-stop
  script:
    - docker stop  $docker_name
    - docker rm -f $docker_name
  # 手动执行
  when: manual

# 启动服务
server-start:
  stage: server-start
  script:
    - image_version=`cat ${cache_dir}/image_version`
    - docker run -d -p 8899:8080  --name $docker_name  $image_version
  # 手动执行
  when: manual

# 清空缓存
clean-cache:
  stage: clean-cache
  script:
    - rm -rf ${cache_dir_docker}/
  when: always 

2.4、测试

2.4.1、查看镜像和服务

docker images | grep demo1 
docker ps | grep demo1

在这里插入图片描述

2.4.2、查看CICD

在这里插入图片描述

在这里插入图片描述

2.4.2、请求服务

http://192.168.187.171:8899/demo1/hello

在这里插入图片描述

3、案例2


variables:
  COVERAGE_WEBHOOK_URL: $COVERAGE_WEBHOOK_URI?branch=$CI_COMMIT_REF_NAME&gitlabPipelineId=$CI_PIPELINE_ID&gitlabProjectId=$CI_PROJECT_ID
  IMAGE_WEBHOOK_URL: $CI_SERVICE_URL/webhook/gitlabProjects/$CI_PROJECT_ID/pipelines/$CI_PIPELINE_ID/images
  imageTag: $CI_PROJECT_NAME-$DEPLOY_TIME_TAG-$CI_PIPELINE_ID
  DOCKER_TLS_CERTDIR: ''

stages:
  - code_check
  - push_images
  - deploy

code_check:
  stage: code_check
  image: 111.111.111.111:8080/ums/maven:3.6.0-jdk-8
  tags:
    - devops
  script:
    - mvn clean package -DskipTests
  artifacts:
    expire_in: 3 hrs
    paths:
      - ./ib-provider/target/*.jar


push_images:
  stage: push_images
  image: 111.111.111.111:8080/library/docker:19.03.14
  tags:
  - devops
  services:
  - 111.111.111.111:8080/library/docker:19.03.14-dind
  before_script:
  - mkdir -p $HOME/.docker
  - echo $DOCKER_AUTH_CONFIG > $HOME/.docker/config.json
  - docker info
  script:
  - docker build -t ${CI_REGISTRY_IMAGE_DIR}:${imageTag} . 
  - docker push ${CI_REGISTRY_IMAGE_DIR}:${imageTag}
  - wget --post-data "imageTag=$imageTag" $IMAGE_WEBHOOK_URL


deploy:
  stage: deploy
  image: harbor.feizhou.cn/devops-ci/mvn:1.0.1
  tags:
    - devops
  script:
    - echo $imageTag
    - wget --no-check-certificate --header="Authorization:$AUTH_TOKEN" --post-data="pipelineId=$CI_PIPELINE_ID&ref=$CI_COMMIT_REF_NAME&imageName=$imageName&tag=$imageTag&deployVersion=$deployVersion&description=$description&deployParams=$deployParams&envName=$envName&deployType=$deployType" $DEPLOY_WEBHOOK_URL
  only:
    variables:
      - $IS_DEPLOY == "1"
  dependencies:
    - push_images



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值