企业网站建设的开发方式有,网站域名验证,做网站十大公司哪家好,重庆市建立网站的网络公司长话短说#xff0c;本文全景呈现我司项目组gitlab flow devopsGit Flow定义了一个项目发布的分支模型#xff0c;为管理具有预定发布周期的大型项目提供了一个健壮的框架。DevOps 强调的是团队通过自动化的工具协作和高效地沟通来完成软件的生命周期管理#xf… 长话短说本文全景呈现我司项目组gitlab flow devopsGit Flow定义了一个项目发布的分支模型为管理具有预定发布周期的大型项目提供了一个健壮的框架。DevOps 强调的是团队通过自动化的工具协作和高效地沟通来完成软件的生命周期管理从而更快、更频繁地交付更稳定的软件。开发关注代码运维关注部署效率和质量都能得到提升。项目组10人小团队也在实践敏捷开发;每个sprint周期一般包含2-3个功能;采用前后端开发生产均使用k8s部署;每个sprint上线周期均经历 intergate Test---alpha---prod。现代Devops技术基于容器技术、自动化脚本实现了依赖环境的打包、版本管理、敏捷部署。我司操作为在迭代便利性、部署严谨性上取得平衡项目组(其实是我~。。~啦)设计了如下Gitlab flow DevOps流程。一个完整的迭代上线周期第①阶段开发阶段开发人员从develop切出feature分支项目经理梳理本sprint需要上线的feature分支自测完成后合并到develop此时会打出ImageTag:develop的镜像自动部署到集成测试环境理论上还属于代码躁动的阶段开发人员应该关注集成测试环境QA人员可酌情参与。第②阶段测试阶段集成测试环境验证之后 可从develop切出release-1.0.0预发布分支此处会打出ImageTag:release-1.0.0的镜像自动部署到alpha环境此处QA会重点花时间在这个环境上测试 发现问题开发人员迅速响应从release-1.0.0分支上切出bugfix分支修复完后迅速合并回release-1.0.0 分支同样会自动部署到alphaQA快速验证.....这个阶段我们保持趋近一个稳定的release-1.0.0的分支。第③阶段部署阶段从稳定的release-1.0.0分支打出对应的git tags: v1.0.0 此处会打出ImageTag:v1.0.0的镜像需要手动部署到prodQA线上测试出现修复不的问题迅速使用之前的ImageTag回滚上线之后若发现不能回退的bug此时需要hotfix还是从release-1.0.0切出hoxfix分支修复完合并回release-1.0.0alpha环境测试通过打出git tagsv1.0.0-hotfix1 重新部署到prod.....确认上线成功将release-1.0.0分支合并回develop、master分支这里为什么保留master分支 是因为理论上当feature分支合并回develop分支develop已经被污染了这里保留master只为兜底。后续就是开始新的sprint周期了git release分支名/tag标签名跟随迭代。Gitlab Flow小结整个过程贯彻了git flow 预发布分支release,hotfix的核心用法 同时在部署方式上也有一定的改进。alpha上使用git预发布分支名release-1.0.0作为镜像Tag切出release分支即形成同tag名镜像自动部署prod上要求从release分支上打出git标签同时要求手动点击部署多步骤操作确保部署是受控可预期并且可回滚作业小抄集成测试采用docker-compose部署alpha,prod是采用k8s部署从上面的Gitlab flow 知道Git develop分支、release-分支、tag标签、master分支会打出容器镜像,Git develop分支代码(ImageTag:develop)(只)会自动部署集成测试环境Git release- 分支(ImageTag:release-1.0.0)(只)会自动部署到alpha,Git tag标签(ImageTag:v1.0.0) 手动点击部署到prodstages:- build- build_image- deployvariables:deploy_path: /home/eap/websitebuild:stage: buildscript: - pwd- for d in $(ls app/src);do echo $d;pro$(pwd)/app/src/$d/$d.csproj; dotnet build $pro; donetags:- my-tagbuild_image:EAPWebsite:stage: build_imagescript:- 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_NAMEtags: - my-tagonly: - tags- develop- master- /^release-.*$/ideploy:intergate-test:stage: deployscript:- ssh -t testUser10.202.42.252 cd /home/eap/website export TAG$CI_COMMIT_REF_NAME docker-compose pull website docker-compose -f docker-compose.yml up -dtags:- my-tagonly:- develop # 开发阶段intergate Test环境只会部署ImageTagdevelop镜像deploy:alpha:stage: deployscript:- ssh -t testUser10.201.82.170 sudo kubectl set image deployment/eap-website eap-websiterepository.****.com:8443/eap/website:${CI_COMMIT_REF_NAME} sudo kubectl rollout status deployment/eap-websitetags:- my-tagonly:- /^release-.*$/i # alpha环境只部署以ImageTag:release-开头镜像deploy:prod:stage: deployscript:- ssh -t testUser10.202.42.20 sudo kubectl set image deployment/eap-website eap-websiterepository.****.com:8443/eap/website:${CI_COMMIT_REF_NAME} sudo kubectl rollout status deployment/eap-website tags:- my-tagonly:- tags- masterwhen: manual # prod环境人工点击部署
使用ssh远程部署请参阅基于docker-compose完成的Gitlab-ci请参阅在kubernetes环境我是使用kubectl set image ...命令改变镜像如果本文对你有帮助不妨来个分享、点赞、在看三连