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界面手动触发
声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!