{"id":19504805,"url":"https://github.com/yuxingxin/devops","last_synced_at":"2025-04-26T00:33:41.174Z","repository":{"id":95867947,"uuid":"103509321","full_name":"yuxingxin/DevOps","owner":"yuxingxin","description":"DevOps实践总结","archived":false,"fork":false,"pushed_at":"2022-08-04T11:26:41.000Z","size":856,"stargazers_count":15,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-04T05:51:09.081Z","etag":null,"topics":["devops","git","gitflow","gitlab","gitlab-ci","gitlab-runner"],"latest_commit_sha":null,"homepage":"https://devops.yuxingxin.com/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuxingxin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-14T08:49:08.000Z","updated_at":"2023-11-21T16:01:02.000Z","dependencies_parsed_at":null,"dependency_job_id":"a53581c2-5664-4674-8a7c-225fcab88cc2","html_url":"https://github.com/yuxingxin/DevOps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuxingxin%2FDevOps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuxingxin%2FDevOps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuxingxin%2FDevOps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuxingxin%2FDevOps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuxingxin","download_url":"https://codeload.github.com/yuxingxin/DevOps/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250917283,"owners_count":21507561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","git","gitflow","gitlab","gitlab-ci","gitlab-runner"],"created_at":"2024-11-10T22:27:17.782Z","updated_at":"2025-04-26T00:33:41.167Z","avatar_url":"https://github.com/yuxingxin.png","language":null,"readme":"# DevOps实践总结\n\n* **版本控制\u0026协作开发**：Git命令操作、Gitlab、GitFlow工作流\n\n* **自动化构建和测试**：Maven、Gradle、Node、Cocoapods\n\n* **持续集成\u0026交付**：Gitlab-CI，后期可以拓展到**Jenkins**\n\n* **容器平台**：Docker、Ubuntu、CenterOS、Debian\n\n  后续要做的计划：\n\n* 监控、警告\u0026分析：zabbix\n\n* 日志管理：syslog —\u0026gt; LogStash\n\n* 配置管理等![](https://ws3.sinaimg.cn/large/006tNc79ly1fjj3mmpqhvj31kw0zkatq.jpg)\n\n* 1.代码仓库\n\n  * 以Git工具实现的团队内部代码共享仓库\n\n  * 分支保护和权限控制,可轻松地管理和审查成员代码;\n\n  * 详细的数据统计,清晰了解团队成员的贡献和提交情况;\n\n* 2.编译构建\n\n  * 提供的通用构建环境将源代码打包成产品\n\n  * 通过脚本命令完成代码编译，生成最终产品\n\n  * 无论docker镜像、APK、Jar包都会有被永久保存到服务器，提供随时下载\n\n  * 提交代码即可自动完成构建，实现快速迭代\n\n* 3.产品版本\n\n  * 构建后的产品将依据项目类型而储存在不同的仓库中\n\n  * 不限量存放产品历史版本,无视服务器环境之间的差异一键部署;\n\n* 4.部署管理\n\n  * 推荐Docker技术，自动将应用部署到服务器\n\n  * 原来需要几个小时才能部署一次，现在只需要几分钟进行简单配置即可完成一次部署;\n\n  * 只需要提交代码，稍等几分钟即可完成一次版本迭代;\n\n* 5.集群管理\n\n  * 基于Kubernetes集群技术轻松管理数千台服务器\n\n  * 部署环境安全隔离，可在同一集群部署多个应用；\n\n  * 同时管理多台服务器，同时监控每一台服务器；\n\n  * 分布式处理、负载均衡、服务器状态、应用状态数据集中在一起，轻松查看和管理每一台服务器；\n\n### Workflow\\(工作流\\)\n\n\n1. master分支只用来做合并，合并来自develop分支的内容，测试通过会把develop分支内容合并到master分支上\n\n2. 运维每次从master分支取出来最新版本做部署\n\n3.  开发人员每次都从develop分支检出feature**(功能)**分支做开发，开发完成以后提交MR(Merge Request 相当于Github的Pull Request)，开发组长review code之后合并入develop分支，开发人员删除该feature分支，当有新的功能需求时，重复做上述工作:\n\n   \u003e 新功能需求到来——\u003e检出feature分支 ——\u003e 开发——\u003e完成后提交MR——\u003e组长review code——\u003e合并入develop分支——\u003e 开发人员删除feature分支\n\n4. 开发组长push到develop分支后开始由自动化任务做构建，(单元)测试等工作，这一过程一直循坏持续，直到功能开发完成，也称为**持续集成(Continuous Integration)**：它强调开发人员提交了新代码之后，立刻进行构建、（单元）测试。根据测试结果，我们可以确定新代码和原有代码能否正确地集成在一起。\n\n   ![](https://ws3.sinaimg.cn/large/006tNc79ly1fjnpyome2kj30go07cdgf.jpg)\n\n5. 发布测试版本：根据产品人员那边进度来安排测试版本发布，发布工作由各开发组长执行，打tag标签\n\n   ```\n   git tag v1.0.1  如有必要可加上构建次数,如:v1.0.0.1  其中最后一位作为构建版本，递增\n   ```\n\n   \u003e 版本的五个阶段(Base、Alpha、Beta、RC、Release)：\n   \u003e\n   \u003e **Base**：此版本表示该软件仅仅是一个假页面链接，通常包括所有的功能和页面布局，但是页面中的功能都没有做完整的实现，只是做为整体网站的一个基础架构。\n   \u003e\n   \u003e **Alpha** ：软件的初级版本，表示该软件在此阶段以实现软件功能为主，通常只在软件开发者内部交流，一般而言，该版本软件的Bug较多，需要继续修改，是测试版本。测试    人员提交Bug经开发人员修改确认之后，发布到测试网址让测试人员测试，此时可将软件版本标注为alpha版。\n   \u003e\n   \u003e **Beta** ：该版本相对于Alpha 版已经有了很大的进步，消除了严重错误，但还需要经过多次    测试来进一步消除，此版本主要的修改对象是软件的UI。修改的的Bug 经测试人    员测试确认后可发布到外网上，此时可将软件版本标注为 beta版。\n   \u003e\n   \u003e **RC** ：该版本已经相当成熟了，基本上不存在导致错误的Bug，与即将发行的正式版本相差无几。\n   \u003e\n   \u003e **Release**：该版本意味“最终版本”，在前面版本的一系列测试版之后，终归会有一个正式的版本，是最终交付用户使用的一个版本。该版本有时也称标准版。\n\n6. 部署测试服务器也由自动化任务来做，触发这一动作的指令，即为我们的打版本命令，这个过程一直循环迭代直到测试完成，也称为**持续交付(Continuous Delivery)**：它是在持续集成的基础上，将集成后的代码部署到更贴近真实运行环境的「类生产环境」（*production-like environments*）中或者说是测试环境中去。\n\n   ![](https://ws4.sinaimg.cn/large/006tNc79ly1fjnpzejypuj30go0ccmyh.jpg)\n\n7. 测试完成后，即进入版本的Beta阶段，发布外网，针对开发组长要做的工作就是，把版本合并入master分支，由运维人员从master分支上取出该版本部署，这过程一直持续下去，即为版本迭代；如果我们将整个运维发布 过程也交由自动化任务来做，那就是**持续部署(Continuous Deployment)**：它是在持续交付的基础上，把产品部署到生产环境的过程自动化。\n\n   ![](https://ws4.sinaimg.cn/large/006tNc79ly1fjnpzn1o6hj30go0ccq48.jpg)\n\n8. 后续的工作就是我们一直不断的修复，迭代版本，将版本阶段从**RC阶段**过渡到**Release阶段**的过程。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuxingxin%2Fdevops","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuxingxin%2Fdevops","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuxingxin%2Fdevops/lists"}