1. dev环境部署
(1) 修改 .gitlab-ci.yml
//.gitlab-ci.yml
variables:REGISTRY: $CI_REGISTRY/edu-java-demo/edu-java-springMAVEN_OPTS: "-Dmaven.repo.local=.m2"stages:- test- build- package- reviewtest:stage: testimage: harbor.xiodi.cn/tools/openjdk:11.0.6tags:- docker- host20133-dockerscript:- chmod +x ./mvnw && ./mvnw testcache:key: maven-repo-cachepaths:- .m2build:stage: buildimage: harbor.xiodi.cn/tools/openjdk:11.0.6tags:- docker- host20133-dockerscript:- chmod +x ./mvnw && ./mvnw packagecache:key: maven-repo-cachepaths:- .m2artifacts:paths:- target/*.jarexpire_in: 1 weekdocker-package:stage: packageimage: harbor.xiodi.cn/tools/docker:18.09.9services:- docker:18.09-dindtags:- docker- host20133-dockervariables:REGISTRY_VERSION: $CI_COMMIT_SHORT_SHAscript:- export- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY- docker build -t $REGISTRY:$CI_COMMIT_SHORT_SHA -f Dockerfile .- docker push $REGISTRY:$CI_COMMIT_SHORT_SHAdeploy_review:stage: reviewimage: harbor.xiodi.cn/tools/kubectl:1.14.8variables:INGRESS_HOST: ${CI_COMMIT_REF_SLUG}.xiodi.cnREGISTRY_VERSION: $CI_COMMIT_SHORT_SHAtags:- docker- host20133-dockerenvironment:name: review/$CI_COMMIT_REF_NAMEurl: http://${CI_COMMIT_REF_SLUG}.xiodi.cn/helloon_stop: stop_reviewauto_stop_in: 7 dayscript:- kubectl delete --ignore-not-found=true secret regcred- kubectl create secret docker-registry regcred --docker-server=$CI_REGISTRY --docker-username=$GITLAB_DEPLOY_USER --docker-password=$GITLAB_DEPLOY_PW- cat Deploy/kubernetes/deployment-edu-java-spring.yml | envsubst | kubectl apply -f -- cat Deploy/kubernetes/service-edu-java-spring.yml | envsubst | kubectl apply -f -- cat Deploy/kubernetes/ingress-edu-java-spring.yml | envsubst | kubectl apply -f -only:- branchesexcept:- devstop_review:stage: reviewimage: harbor.xiodi.cn/tools/kubectl:1.14.8variables:GIT_STRATEGY: nonetags:- docker- host20133-dockerenvironment:name: review/$CI_COMMIT_REF_NAMEaction: stopscript:- kubectl delete --ignore-not-found=true secret regcred- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/ingress-edu-java-spring.yml- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/service-edu-java-spring.yml- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/deployment-edu-java-spring.ymlwhen: manualdeploy_dev:stage: integration-testimage: harbor.xiodi.cn/tools/kubectl:1.14.8variables:INGRESS_HOST: dev.xiodi.cnREGISTRY_VERSION: $CI_COMMIT_SHORT_SHAtags:- docker- host20133-dockerenvironment:name: devurl: http://dev.xiodi.cn/helloon_stop: stop_devauto_stop_in: 7 dayscript:- kubectl delete --ignore-not-found=true secret regcred- kubectl create secret docker-registry regcred --docker-server=$CI_REGISTRY --docker-username=$GITLAB_DEPLOY_USER --docker-password=$GITLAB_DEPLOY_PW- cat Deploy/kubernetes/deployment-edu-java-spring.yml | envsubst | kubectl apply -f -- cat Deploy/kubernetes/service-edu-java-spring.yml | envsubst | kubectl apply -f -- cat Deploy/kubernetes/ingress-edu-java-spring.yml | envsubst | kubectl apply -f -only:- devstop_dev:stage: integration-testimage: harbor.xiodi.cn/tools/kubectl:1.14.8variables:GIT_STRATEGY: nonetags:- docker- host20133-dockerenvironment:name: devaction: stopscript:- kubectl delete --ignore-not-found=true secret regcred- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/ingress-edu-java-spring.yml- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/service-edu-java-spring.yml- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/deployment-edu-java-spring.ymlwhen: manual
(2) 创建合并请求
feature-1 -> dev
合并完成后,此时,会自动触发 .gitlab-ci.yml 文件执行,进行 dev 环境部署
2. stage 环境部署
预生产环境(stage),我们打算以 release 来创建。
//修改 .gitlab-ci.yml
...stages:- test- build- package- review- integration-test- stage-test...docker-package:stage: packageimage: harbor.xiodi.cn/tools/docker:18.09.9services:- docker:18.09-dindtags:- docker- host20133-dockervariables:REGISTRY_VERSION: $CI_COMMIT_SHORT_SHAscript:- export- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY- docker build -t $REGISTRY:$CI_COMMIT_SHORT_SHA -f Dockerfile .- test ! -z "${CI_COMMIT_TAG}" && docker tag $REGISTRY:$CI_COMMIT_SHORT_SHA $REGISTRY:${CI_COMMIT_TAG} && docker push $REGISTRY:${CI_COMMIT_TAG}- docker push $REGISTRY:$CI_COMMIT_SHORT_SHA...deploy_stage:stage: stage-testimage: harbor.xiodi.cn/tools/kubectl:1.14.8variables:INGRESS_HOST: stage.xiodi.cnREGISTRY_VERSION: $CI_COMMIT_TAGtags:- docker- host20133-dockerenvironment:name: stageurl: http://stage.xiodi.cn/helloon_stop: stop_stageauto_stop_in: 7 dayscript:- export- kubectl delete --ignore-not-found=true secret regcred- kubectl create secret docker-registry regcred --docker-server=$CI_REGISTRY --docker-username=$GITLAB_DEPLOY_USER --docker-password=$GITLAB_DEPLOY_PW- cat Deploy/kubernetes/deployment-edu-java-spring.yml | envsubst | kubectl apply -f -- cat Deploy/kubernetes/service-edu-java-spring.yml | envsubst | kubectl apply -f -- cat Deploy/kubernetes/ingress-edu-java-spring.yml | envsubst | kubectl apply -f -only:variables:- $CI_COMMIT_TAG =~ /^release.*/stop_stage:stage: stage-testimage: harbor.xiodi.cn/tools/kubectl:1.14.8variables:GIT_STRATEGY: nonetags:- docker- host20133-dockerenvironment:name: stageaction: stopscript:- kubectl delete --ignore-not-found=true secret regcred- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/ingress-edu-java-spring.yml- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/service-edu-java-spring.yml- kubectl delete --ignore-not-found=true -f Deploy/kubernetes/deployment-edu-java-spring.ymlwhen: manualonly:variables:- $CI_COMMIT_TAG =~ /^release.*/
创建 release-1.0 tag。
