整个过程贯彻了git flow 预发布分支release,hotfix的核心用法, 同时在部署方式上也有一定的改进。
kubectl set image …;
kubectl roloout restart deploy …
对develop release分支形成的镜像tag上可尝试带上CI_COMMIT_SHORT_SHA 来规避这种骚操作。
prod上要求从release分支上打出git标签,同时要求手动点击部署,多步骤操作确保部署是受控可预期,并且可回滚
集成测试采用docker-compose部署; alpha,prod是采用k8s部署; 从上面的Gitlab flow 知道:
stages:- build- build_image- deployvariables: deploy_path: "/home/eap/website"build: stage: build script: - pwd- "for d in $(ls app/src);do echo $d;pro=$(pwd)/app/src/$d/$d.csproj; dotnet build $pro; done" tags:- my-tagbuild_image:EAPWebsite: stage: build_image script:- dotnet publish app/src/EAP.Web/EAP.Web.csproj -c release -o container/app/publish/- docker build -t $DOCKER_REGISTRY_HOST/eap/website:$CI_COMMIT_REF_NAME container/app - docker login $DOCKER_REGISTRY_HOST -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD- docker push $DOCKER_REGISTRY_HOST/eap/website:$CI_COMMIT_REF_NAME tags: - my-tag only: - tags- develop- master- /^release-.*$/ideploy:intergate-test: stage: deploy script:- ssh -t testUser@10.202.42.252 "cd /home/eap/website && export TAG=$CI_COMMIT_REF_NAME && docker-compose pull website && docker-compose -f docker-compose.yml up -d" tags:- my-tag only:- develop # 开发阶段,intergate Test环境只会部署ImageTag:develop镜像deploy:alpha: stage: deploy script:- ssh -t testUser@10.201.82.170 "sudo kubectl set image deployment/eap-website eap-website=repository.****.com:8443/eap/website:${CI_COMMIT_REF_NAME} && sudo kubectl rollout status deployment/eap-website" tags:- my-tag only:- /^release-.*$/i # alpha环境只部署以ImageTag:release-开头镜像deploy:prod: stage: deploy script:- ssh -t testUser@10.202.42.20 "sudo kubectl set image deployment/eap-website eap-website=repository.****.com:8443/eap/website:${CI_COMMIT_REF_NAME} && sudo kubectl rollout restart deployment/eap-website" tags:- my-tag only:- tags- masterwhen: manual # prod环境,人工点击部署原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。