gitlab-ci 自动化部署实战

github地址:
https://github.com/ops-mayi/gitlab-ci

1、目录结构

.
├── deployment.yaml
├── Dockerfile
├── .gitlab-ci.yml
├── .kubeconfig
│   ├── dev-kubeconfig.yaml
│   ├── pro-kubeconfig.yaml
│   ├── test-kubeconfig.yaml
│   └── uat-kubeconfig.yaml
├── pom.xml
├── README.md
├── setting.xml
└── src
    └── main
        ├── java
        │   └── club
        │       └── mydlq
        │           └── springboothelloword
        │               ├── Application.java
        │               └── HelloController.java
        └── resources
            └── application.yaml

二、gitlab-ci.yml

# ******************************************************
# Author       : mayiops
# Last modified: 2022-03-14
# Description  : runner需安装docker、maven、kubectl工具
# 权限管理: 需要对项目授权master权限,才有手动触发的权限。 
# ******************************************************
variables:
  #定义全局变量
  REGISTRY_SERVER: 192.168.10.45                                       # 仓库地址
  REGISTRY_PASSWORD: ******                                  # 仓库密码 
  PROJECT: helloworld      # 项目名称
  APP_NAME: spingboot-helloworld                                       # APP名称
  TAG: 0.0.1               # TAG版本
  MAVEN_OPTS: "-Dmaven.test.skip=true -s .m2/settings.xml"             # maven 打包命令
  k8s_ns: mayiops          # K8S 命名空间   before_script:
  # 如果runner有登录过仓库,可以省略
  - echo "登录docker仓库"
  - docker login -u admin -p $REGISTRY_PASSWORD $IMAGE_SERVER#构建过程
stages:
  - build
  - package
  - deploymaven-build:
  stage: build
  tags:    #指定runner
    - java
  script:
    - echo "maven打包中"
    - mvn clean install $MAVEN_OPTS
  artifacts:
    paths:
      - target/*.jardocker-build:
  stage: package
  tags:
    - java
  variables:
    APP_IMAGE_NAME: $REGISTRY_SERVER/$PROJECT/$APP_NAME:$TAG
  script:
    - echo "docker镜像打包中"
    - docker build -t $APP_IMAGE_NAME .
    - docker push $APP_IMAGE_NAME
  when: on_success .kubernetes-deploy:
  stage: deploy
  tags:
    - java
  before_script:
    - sed -i 's/app_image_name/'"$APP_IMAGE_NAME"'/' deployment.yamlkubernetes-deploy-dev:
  extends: .kubernetes-deploy
  only:
    refs:
      - dev
  script:
    - echo "部署开发环境"
    - sed -i "s#apollo_url#http://192.168.10.100:8010#" deployment.yaml
    - kubectl apply -f deployment.yaml -n $k8s_ns --kubeconfig=$HOME/.kubeconfig/dev-config.ymlkubernetes-deploy-test:
  extends: .kubernetes-deploy
  only:
    refs:
      - test
  script:
    - echo "部署测试环境"
    - sed -i "s#apollo_url#http://192.168.10.100:8020#" deployment.yaml
    - kubectl apply -f deployment.yaml -n $k8s_ns --kubeconfig=$HOME/.kubeconfig/test-config.ymlkubernetes-deploy-uat:
  extends: .kubernetes-deploy
  only:
    refs:
      - uat
  script:
    - echo "部署灰度环境"
    - sed -i "s#apollo_url#http://192.168.10.100:8030#" deployment.yaml
    - kubectl apply -f deployment.ayml -n $k8s_ns --kubeconfig=$HOME/.kubeconfig/uat-config.yml
  when: manual                    #通过web界面手动触发kubernetes-deploy-prod:
  extends: .kubernetes-deploy
  only:
    refs:
      - master
  script:
    - echo "部署灰度环境"
    - sed -i "s#apollo_url#http://192.168.10.100:8040#" deployment.yaml
    - kubectl apply -f deployment.ayml -n $k8s_ns --kubeconfig=$HOME/.kubeconfig/pro-config.yml
  when: manual                   #通过web界面手动触发

声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

(0)
上一篇 2022年3月8日
下一篇 2022年3月8日

相关推荐