# hdabp-docs **Repository Path**: abpmodule/hdabp-docs ## Basic Information - **Project Name**: hdabp-docs - **Description**: No description available - **Primary Language**: C# - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-03-24 - **Last Updated**: 2024-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # hdabp-docs #### Git管理 * 永远不要在主分支上开发 * 分支命名规范: 1. feature/xxx 开发某一个功能 2. fix/Vx.y.z/xxx 修复bug,x.y.z 表示版本号,xxx表示问题描述 3. issue-xxx 对某一个issue开发,xxx表示issue的编号 * 分支开发完成后必须提交pr,合并主分支 * 新分支只能从主分支或者某一个tag分发出来 * 每次发布版本必须先打tag,再根据tag创建发行版本(这样可以确定每次版本的提交内容) * `feature/xxx` 分支开发完成后,必须合并到`dev`分支,然后删除`feature/xxx`分支 * 发布版本之前必须先打tag * 每次发布版本必须生成修改内容 * 发行版本必须基于`release`分支 * 分支情况: 1. `release` 只允许从`dev`分支合并,并作为最终发行版本 2. `dev` 允许直接从其他分支合并,并最终合并到 `release` 3. `hotfix` 允许从 `release` 分支直接合并,并最终合并到 `release` 4. `feature` 允许从 `dev` 分支分出,并最终合并到 `dev` 5. `issue` 允许从 `dev` 分支分出,并最终合并到 `dev` #### 版本控制规则 * 默认一个月一个大版本 * 版本由 `3` 位数字组成,如 `X`.`Y`.`Z` * 如果一次版本发布只包含了 Bug Fix 和 Enhancement, 则三位小版本号 `Z` + `1` * 如果一次版本发布包含了重大功能或重要代码重构,则二位小版本号 `Y` + `1` * 如果针对某次版本做 `Hotfix` 来修复重要 bug, 则定义四位版本号,比如 `2`.`3`.`0`.`1` 是基于 `2`.`3`.`0` 版本的第一个 `Hotfix` Release * 对于一位大版本 `X` 的更新,理论上需要包括技术实现原理的重大变更,如运行时变更,如依赖库重大变更等等,需要讨论决定是否变更 * 镜像版本规则:所有版本都加上前缀`beta`,所有预发版本都加上后缀-preN,其中`N`是一个累加数字 ### 技术人员掌握知识点整理 #### 容器化技术 1. 容器化基本概念 容器化是一种虚拟化技术,可以将应用程序及其依赖项打包成一个独立的单元,使得应用程序可以在不同的环境中运行,而不需要进行任何修改。容器化技术使用Linux内核的命名空间和文件系统功能来实现隔离和可移植性,使得容器具有轻量级、快速和可移植的优点。 2. 容器化技术分类 容器化技术主要分为两类:基于LXC的容器化和基于Docker的容器化。LXC是一种轻量级的虚拟化技术,它允许用户空间软件实例在内核中运行,而Docker是一种更为流行的容器化技术,它提供了一种更为高级的方式来创建、部署和管理容器。 3. 容器化技术原理 容器化技术的核心原理是使用了Linux内核的命名空间(namespace)功能。命名空间允许用户空间进程只能看到其所在的命名空间中的资源,而不能看到其他命名空间中的资源。因此,容器化技术通过创建不同的命名空间,将应用程序及其依赖项隔离在不同的命名空间中,从而实现了容器的隔离效果。 4. 容器化技术优势 容器化技术具有以下优势: - 轻量级:容器化不需要像虚拟机一样模拟整个操作系统环境,因此容器比虚拟机更加轻量级,启动速度更快。 - 隔离性:容器化技术通过创建不同的命名空间将应用程序及其依赖项隔离在不同的环境中,实现了更好的隔离效果。 - 可移植性:容器化技术使得应用程序及其依赖项可以在不同的环境中运行,而不需要进行任何修改。这使得应用程序更容易被移植到不同的平台或云环境中。 - 自动化部署:容器化技术可以自动化应用程序的部署和管理过程,使得应用程序的部署和管理更加简单和高效。 5. 容器化技术劣势 虽然容器化技术有很多优势,但也存在一些劣势: - 安全性问题:虽然容器化技术可以提供一定的隔离效果,但它们仍然运行在同一内核上,因此可能会存在一些安全风险。 - 资源占用:虽然容器比虚拟机更加轻量级,但是它们仍然会占用一定的系统资源。 - 调试困难:在调试应用程序时,如果应用程序在容器内部运行,则调试可能会变得更加困难。 6. Docker技术 Docker是一种流行的容器化技术,它提供了一种简单、轻量级和可移植的方式来创建、部署和管理容器。Docker使用Linux内核的命名空间功能来实现容器的隔离效果,并使用联合文件系统(unionFS)来实现容器的可写层和只读层的分离。使用Docker可以快速创建、部署和管理应用程序的容器,并且可以轻松地将应用程序及其依赖项移植到不同的平台或云环境中。 7. Kubernetes技术概念 Kubernetes是一种流行的容器编排系统,它提供了自动化部署、扩展和管理容器化的应用程序。Kubernetes基于Docker和Linux容器技术,提供了一种可扩展的、可伸缩的容器编排系统,可以在大规模集群环境中运行多个容器化的应用程序。Kubernetes可以帮助用户自动化应用程序的部署、扩展和管理过程,并提供了许多高级功能,如负载均衡、服务发现、自动回滚等。 #### docker安装 [参考](https://zhuanlan.zhihu.com/p/143156163#:~:text=Docker%20%E5%9C%A8%E6%A0%87%E5%87%86%E7%9A%84%20Ubuntu%2020.04%20%E8%BD%AF%E4%BB%B6%E6%BA%90%E4%B8%AD%E5%8F%AF%E7%94%A8%EF%BC%8C%E4%BD%86%E6%98%AF%E5%8F%AF%E8%83%BD%E4%B8%8D%E6%98%AF%E6%9C%80%E6%96%B0%E7%9A%84%E7%89%88%E6%9C%AC%E3%80%82%20%E6%88%91%E4%BB%AC%E5%B0%86%E4%BC%9A%E4%BB%8E%20Docker%20%E7%9A%84%E5%AE%98%E6%96%B9%E8%BD%AF%E4%BB%B6%E6%BA%90%E4%B8%AD%E5%AE%89%E8%A3%85%E6%9C%80%E6%96%B0%E7%9A%84,sudo%20apt%20install%20apt-transport-https%20ca-certificates%20curl%20gnupg-agent%20software-properties-common) #### 按照docker-compose [参考](https://developer.aliyun.com/article/763018#:~:text=%E5%A6%82%E4%BD%95%E5%9C%A8%20Ubuntu%2020.04%20%E4%B8%8A%E5%AE%89%E8%A3%85%E5%92%8C%E4%BD%BF%E7%94%A8%20Docker%20Compose%201%20%E4%B8%80%E3%80%81%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6,Docker%20Compose%20%E3%80%82%20%E4%BD%BF%E7%94%A8%20Docker%20Compose%20%E5%8F%AF%E4%BB%A5%E6%98%8E%E6%98%BE%E6%94%B9%E5%96%84%E4%BD%A0%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B%EF%BC%8C%E6%8F%90%E9%AB%98%E4%BD%A0%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%95%88%E7%8E%87%E3%80%82%20) ___注意:按照docker-compose时将版本号改为最新版本号___ #### 后端开发 [点击跳转](./docs/backend/readme.md) #### 前端开发 [点击跳转](./docs/frontend/readme.md) #### APP开发 [点击跳转](./docs/app/readme.md)