新增文档

This commit is contained in:
renjianbo
2026-01-05 10:31:24 +08:00
parent 56d100d628
commit 64672e303f
25 changed files with 4032 additions and 3478 deletions

View File

@@ -1,79 +1,79 @@
# Drone CI 使用指南
## 简介
Drone 是一个基于容器的持续集成/持续部署CI/CD平台。
## 访问地址
- **Web 界面**: http://101.43.95.130:3000 (需配置)
## 基本概念
### Pipeline
Pipeline 是 CI/CD 的执行流程,定义在 `.drone.yml` 文件中。
### Step
Step 是 Pipeline 中的一个步骤,每个 Step 在一个独立的容器中执行。
### Service
Service 是 Pipeline 中提供的服务,如数据库、缓存等。
## 配置文件示例
在项目根目录创建 `.drone.yml`:
```yaml
kind: pipeline
type: docker
name: default
steps:
- name: build
image: maven:3.8-openjdk-17
commands:
- mvn clean package
- name: test
image: maven:3.8-openjdk-17
commands:
- mvn test
- name: deploy
image: alpine
commands:
- echo "部署应用..."
```
## 常用操作
### 触发构建
- 推送到仓库会自动触发构建
- 在 Web 界面手动触发构建
### 查看构建日志
在 Web 界面查看构建日志,了解构建过程。
### 构建状态
- **Success**: 构建成功
- **Failure**: 构建失败
- **Running**: 构建中
- **Pending**: 等待执行
## 最佳实践
1. **缓存依赖**: 使用缓存加速构建
2. **并行执行**: 将独立的任务并行执行
3. **环境变量**: 使用密钥管理敏感信息
4. **通知机制**: 配置构建通知
## 相关链接
- [Drone 官方文档](https://docs.drone.io/)
# Drone CI 使用指南
## 简介
Drone 是一个基于容器的持续集成/持续部署CI/CD平台。
## 访问地址
- **Web 界面**: http://101.43.95.130:3000 (需配置)
## 基本概念
### Pipeline
Pipeline 是 CI/CD 的执行流程,定义在 `.drone.yml` 文件中。
### Step
Step 是 Pipeline 中的一个步骤,每个 Step 在一个独立的容器中执行。
### Service
Service 是 Pipeline 中提供的服务,如数据库、缓存等。
## 配置文件示例
在项目根目录创建 `.drone.yml`:
```yaml
kind: pipeline
type: docker
name: default
steps:
- name: build
image: maven:3.8-openjdk-17
commands:
- mvn clean package
- name: test
image: maven:3.8-openjdk-17
commands:
- mvn test
- name: deploy
image: alpine
commands:
- echo "部署应用..."
```
## 常用操作
### 触发构建
- 推送到仓库会自动触发构建
- 在 Web 界面手动触发构建
### 查看构建日志
在 Web 界面查看构建日志,了解构建过程。
### 构建状态
- **Success**: 构建成功
- **Failure**: 构建失败
- **Running**: 构建中
- **Pending**: 等待执行
## 最佳实践
1. **缓存依赖**: 使用缓存加速构建
2. **并行执行**: 将独立的任务并行执行
3. **环境变量**: 使用密钥管理敏感信息
4. **通知机制**: 配置构建通知
## 相关链接
- [Drone 官方文档](https://docs.drone.io/)

View File

@@ -1,63 +1,63 @@
# Gerrit 使用指南
## 简介
Gerrit 是一个基于 Git 的代码审查工具,用于团队协作和代码质量控制。
## 访问地址
- **Web 界面**: http://101.43.95.130:8082
- **SSH 端口**: 29418
## 基本使用
### 克隆项目
```bash
git clone ssh://admin@101.43.95.130:29418/项目名
```
### 提交代码审查
1. 创建分支并提交更改
2. 推送到 Gerrit 进行审查:
```bash
git push origin HEAD:refs/for/master
```
3. 在 Web 界面查看审查请求
### 审查流程
1. **创建变更**: 开发者推送代码
2. **代码审查**: 审查者查看代码并添加评论
3. **修改代码**: 根据反馈修改代码
4. **重新提交**: 推送新的补丁集
5. **通过审查**: 审查者批准代码
6. **合并代码**: 代码合并到主分支
## 常用命令
### 查看待审查的变更
```bash
ssh -p 29418 admin@101.43.95.130 gerrit query --format=JSON status:open
```
### 查看特定变更
```bash
ssh -p 29418 admin@101.43.95.130 gerrit query change:12345
```
## 最佳实践
1. **小步提交**: 每次提交只包含一个功能或修复
2. **清晰的提交信息**: 使用清晰的提交信息说明更改内容
3. **及时响应**: 及时响应审查者的反馈
4. **代码质量**: 确保代码通过所有测试和检查
## 相关链接
- [Gerrit 官方文档](https://gerrit-review.googlesource.com/Documentation/)
- [Gerrit 工作流程](https://gerrit-review.googlesource.com/Documentation/intro-user.html)
# Gerrit 使用指南
## 简介
Gerrit 是一个基于 Git 的代码审查工具,用于团队协作和代码质量控制。
## 访问地址
- **Web 界面**: http://101.43.95.130:8082
- **SSH 端口**: 29418
## 基本使用
### 克隆项目
```bash
git clone ssh://admin@101.43.95.130:29418/项目名
```
### 提交代码审查
1. 创建分支并提交更改
2. 推送到 Gerrit 进行审查:
```bash
git push origin HEAD:refs/for/master
```
3. 在 Web 界面查看审查请求
### 审查流程
1. **创建变更**: 开发者推送代码
2. **代码审查**: 审查者查看代码并添加评论
3. **修改代码**: 根据反馈修改代码
4. **重新提交**: 推送新的补丁集
5. **通过审查**: 审查者批准代码
6. **合并代码**: 代码合并到主分支
## 常用命令
### 查看待审查的变更
```bash
ssh -p 29418 admin@101.43.95.130 gerrit query --format=JSON status:open
```
### 查看特定变更
```bash
ssh -p 29418 admin@101.43.95.130 gerrit query change:12345
```
## 最佳实践
1. **小步提交**: 每次提交只包含一个功能或修复
2. **清晰的提交信息**: 使用清晰的提交信息说明更改内容
3. **及时响应**: 及时响应审查者的反馈
4. **代码质量**: 确保代码通过所有测试和检查
## 相关链接
- [Gerrit 官方文档](https://gerrit-review.googlesource.com/Documentation/)
- [Gerrit 工作流程](https://gerrit-review.googlesource.com/Documentation/intro-user.html)

View File

@@ -1,57 +1,57 @@
# Gitea 使用指南
## 简介
Gitea 是一个轻量级的 Git 服务,提供 Web 界面和 Git 仓库管理功能。
## 访问地址
- **Web 界面**: http://101.43.95.130:3000
- **SSH 端口**: 222
## 基本使用
### 创建仓库
1. 登录 Gitea
2. 点击右上角 "+" 按钮
3. 选择 "New Repository"
4. 填写仓库信息并创建
### 克隆仓库
```bash
# HTTPS
git clone http://101.43.95.130:3000/用户名/仓库名.git
# SSH
git clone ssh://git@101.43.95.130:222/用户名/仓库名.git
```
### 推送代码
```bash
git add .
git commit -m "提交信息"
git push origin main
```
## 功能特性
- **代码仓库**: Git 仓库管理
- **Issue 跟踪**: 问题跟踪和管理
- **Pull Request**: 代码合并请求
- **Wiki**: 项目文档
- **项目管理**: 看板和里程碑
## 最佳实践
1. **分支管理**: 使用分支进行功能开发
2. **提交规范**: 遵循提交信息规范
3. **代码审查**: 使用 Pull Request 进行代码审查
4. **文档维护**: 使用 Wiki 维护项目文档
## 相关链接
- [Gitea 官方文档](https://docs.gitea.io/)
# Gitea 使用指南
## 简介
Gitea 是一个轻量级的 Git 服务,提供 Web 界面和 Git 仓库管理功能。
## 访问地址
- **Web 界面**: http://101.43.95.130:3000
- **SSH 端口**: 222
## 基本使用
### 创建仓库
1. 登录 Gitea
2. 点击右上角 "+" 按钮
3. 选择 "New Repository"
4. 填写仓库信息并创建
### 克隆仓库
```bash
# HTTPS
git clone http://101.43.95.130:3000/用户名/仓库名.git
# SSH
git clone ssh://git@101.43.95.130:222/用户名/仓库名.git
```
### 推送代码
```bash
git add .
git commit -m "提交信息"
git push origin main
```
## 功能特性
- **代码仓库**: Git 仓库管理
- **Issue 跟踪**: 问题跟踪和管理
- **Pull Request**: 代码合并请求
- **Wiki**: 项目文档
- **项目管理**: 看板和里程碑
## 最佳实践
1. **分支管理**: 使用分支进行功能开发
2. **提交规范**: 遵循提交信息规范
3. **代码审查**: 使用 Pull Request 进行代码审查
4. **文档维护**: 使用 Wiki 维护项目文档
## 相关链接
- [Gitea 官方文档](https://docs.gitea.io/)

View File

@@ -1,87 +1,87 @@
# MinIO 使用指南
## 简介
MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API。
## 访问地址
- **API 地址**: http://101.43.95.130:9000
- **Console 地址**: http://101.43.95.130:9001
- **默认账号**: minioadmin / minioadmin123
## 基本使用
### 创建存储桶Bucket
1. 登录 MinIO Console
2. 点击 "Create Bucket"
3. 输入存储桶名称
4. 配置访问策略
### 上传文件
1. 选择存储桶
2. 点击 "Upload"
3. 选择文件上传
### 下载文件
1. 在存储桶中找到文件
2. 点击文件下载
## API 使用
### 使用 Python SDK
```python
from minio import Minio
from minio.error import S3Error
# 初始化客户端
client = Minio(
"101.43.95.130:9000",
access_key="minioadmin",
secret_key="minioadmin123",
secure=False
)
# 上传文件
client.fput_object("my-bucket", "object-name", "file-path")
```
### 使用 Java SDK
```java
MinioClient minioClient = MinioClient.builder()
.endpoint("http://101.43.95.130:9000")
.credentials("minioadmin", "minioadmin123")
.build();
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("my-bucket")
.object("object-name")
.filename("file-path")
.build()
);
```
## 使用场景
- **构建产物存储**: 存储 CI/CD 构建的产物
- **APK 仓库**: 存储 Android APK 文件
- **文件备份**: 备份重要文件
- **静态资源**: 存储网站静态资源
## 最佳实践
1. **访问控制**: 配置适当的访问策略
2. **数据备份**: 定期备份重要数据
3. **版本控制**: 启用对象版本控制
4. **监控告警**: 配置监控和告警
## 相关链接
- [MinIO 官方文档](https://min.io/docs/)
# MinIO 使用指南
## 简介
MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API。
## 访问地址
- **API 地址**: http://101.43.95.130:9000
- **Console 地址**: http://101.43.95.130:9001
- **默认账号**: minioadmin / minioadmin123
## 基本使用
### 创建存储桶Bucket
1. 登录 MinIO Console
2. 点击 "Create Bucket"
3. 输入存储桶名称
4. 配置访问策略
### 上传文件
1. 选择存储桶
2. 点击 "Upload"
3. 选择文件上传
### 下载文件
1. 在存储桶中找到文件
2. 点击文件下载
## API 使用
### 使用 Python SDK
```python
from minio import Minio
from minio.error import S3Error
# 初始化客户端
client = Minio(
"101.43.95.130:9000",
access_key="minioadmin",
secret_key="minioadmin123",
secure=False
)
# 上传文件
client.fput_object("my-bucket", "object-name", "file-path")
```
### 使用 Java SDK
```java
MinioClient minioClient = MinioClient.builder()
.endpoint("http://101.43.95.130:9000")
.credentials("minioadmin", "minioadmin123")
.build();
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("my-bucket")
.object("object-name")
.filename("file-path")
.build()
);
```
## 使用场景
- **构建产物存储**: 存储 CI/CD 构建的产物
- **APK 仓库**: 存储 Android APK 文件
- **文件备份**: 备份重要文件
- **静态资源**: 存储网站静态资源
## 最佳实践
1. **访问控制**: 配置适当的访问策略
2. **数据备份**: 定期备份重要数据
3. **版本控制**: 启用对象版本控制
4. **监控告警**: 配置监控和告警
## 相关链接
- [MinIO 官方文档](https://min.io/docs/)

View File

@@ -1,96 +1,96 @@
# Nexus 使用指南
## 简介
Nexus Repository Manager 是一个 Maven 仓库管理器,用于管理构建依赖和发布构件。
## 访问地址
- **Web 界面**: http://101.43.95.130:8081
- **默认账号**: admin (首次登录会提示修改密码)
## 基本使用
### 配置 Maven
`~/.m2/settings.xml` 中配置:
```xml
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://101.43.95.130:8081/repository/maven-public/</url>
</mirror>
</mirrors>
</settings>
```
### 发布构件
在项目的 `pom.xml` 中配置:
```xml
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://101.43.95.130:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://101.43.95.130:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
```
### 发布命令
```bash
mvn clean deploy
```
## 仓库类型
### Maven Central 代理
- **名称**: maven-central
- **类型**: Proxy
- **远程 URL**: https://repo1.maven.org/maven2/
### Maven Public 组
- **名称**: maven-public
- **类型**: Group
- **包含**: maven-central, maven-releases, maven-snapshots
### Maven Releases
- **名称**: maven-releases
- **类型**: Hosted
- **策略**: Release
### Maven Snapshots
- **名称**: maven-snapshots
- **类型**: Hosted
- **策略**: Snapshot
## 使用场景
- **依赖加速**: 加速 Gradle/Maven 依赖下载
- **私有仓库**: 存储私有构件
- **版本管理**: 管理发布版本和快照版本
- **安全扫描**: 扫描依赖漏洞
## 最佳实践
1. **定期清理**: 清理不需要的快照版本
2. **备份数据**: 定期备份仓库数据
3. **访问控制**: 配置适当的用户权限
4. **监控告警**: 监控仓库使用情况
## 相关链接
- [Nexus 官方文档](https://help.sonatype.com/repomanager3)
# Nexus 使用指南
## 简介
Nexus Repository Manager 是一个 Maven 仓库管理器,用于管理构建依赖和发布构件。
## 访问地址
- **Web 界面**: http://101.43.95.130:8081
- **默认账号**: admin (首次登录会提示修改密码)
## 基本使用
### 配置 Maven
`~/.m2/settings.xml` 中配置:
```xml
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://101.43.95.130:8081/repository/maven-public/</url>
</mirror>
</mirrors>
</settings>
```
### 发布构件
在项目的 `pom.xml` 中配置:
```xml
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://101.43.95.130:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://101.43.95.130:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
```
### 发布命令
```bash
mvn clean deploy
```
## 仓库类型
### Maven Central 代理
- **名称**: maven-central
- **类型**: Proxy
- **远程 URL**: https://repo1.maven.org/maven2/
### Maven Public 组
- **名称**: maven-public
- **类型**: Group
- **包含**: maven-central, maven-releases, maven-snapshots
### Maven Releases
- **名称**: maven-releases
- **类型**: Hosted
- **策略**: Release
### Maven Snapshots
- **名称**: maven-snapshots
- **类型**: Hosted
- **策略**: Snapshot
## 使用场景
- **依赖加速**: 加速 Gradle/Maven 依赖下载
- **私有仓库**: 存储私有构件
- **版本管理**: 管理发布版本和快照版本
- **安全扫描**: 扫描依赖漏洞
## 最佳实践
1. **定期清理**: 清理不需要的快照版本
2. **备份数据**: 定期备份仓库数据
3. **访问控制**: 配置适当的用户权限
4. **监控告警**: 监控仓库使用情况
## 相关链接
- [Nexus 官方文档](https://help.sonatype.com/repomanager3)

View File

@@ -1,66 +1,66 @@
# 欢迎来到个人知识库
这是一个基于 MkDocs Material 的个人技术文档和知识管理平台。
## 📚 功能特性
- 📝 **Markdown 支持**: 使用 Markdown 编写文档,简单易用
- 🎨 **Material 主题**: 美观现代的 Material Design 界面
- 🔍 **全文搜索**: 快速查找所需内容
- 📱 **响应式设计**: 支持各种设备访问
- 🌙 **深色模式**: 支持浅色/深色主题切换
- 📊 **代码高亮**: 支持多种编程语言的语法高亮
- 🔗 **导航系统**: 清晰的文档导航结构
## 🚀 快速开始
### 编辑文档
1.`docs/` 目录下创建或编辑 Markdown 文件
2.`mkdocs.yml` 中更新导航配置
3. 保存后MkDocs 会自动重新加载(开发模式)
### 添加新文档
1.`docs/` 目录下创建新的 `.md` 文件
2.`mkdocs.yml``nav` 部分添加导航项
3. 重启服务或等待自动重载
### 构建静态站点
```bash
# 进入容器执行构建
docker exec -it mkdocs mkdocs build
# 或使用 docker-compose
docker-compose exec mkdocs mkdocs build
```
## 📖 文档结构
```
docs/
├── index.md # 首页
├── 开发指南/ # 开发相关文档
├── DevOps平台/ # DevOps 工具使用指南
├── 技术文档/ # 技术架构和 API 文档
└── 学习笔记/ # 学习笔记和总结
```
## 🔗 相关链接
- [MkDocs 官方文档](https://www.mkdocs.org/)
- [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)
- [Markdown 语法指南](https://www.markdownguide.org/)
## 💡 使用技巧
1. **代码块**: 使用三个反引号包裹代码,并指定语言
2. **表格**: 使用 Markdown 表格语法
3. **图片**: 将图片放在 `docs/images/` 目录,使用相对路径引用
4. **数学公式**: 支持 LaTeX 数学公式(需要启用相应插件)
5. **流程图**: 支持 Mermaid 流程图(已配置)
---
**开始编写你的文档吧!** 📝
# 欢迎来到个人知识库
这是一个基于 MkDocs Material 的个人技术文档和知识管理平台。
## 📚 功能特性
- 📝 **Markdown 支持**: 使用 Markdown 编写文档,简单易用
- 🎨 **Material 主题**: 美观现代的 Material Design 界面
- 🔍 **全文搜索**: 快速查找所需内容
- 📱 **响应式设计**: 支持各种设备访问
- 🌙 **深色模式**: 支持浅色/深色主题切换
- 📊 **代码高亮**: 支持多种编程语言的语法高亮
- 🔗 **导航系统**: 清晰的文档导航结构
## 🚀 快速开始
### 编辑文档
1.`docs/` 目录下创建或编辑 Markdown 文件
2.`mkdocs.yml` 中更新导航配置
3. 保存后MkDocs 会自动重新加载(开发模式)
### 添加新文档
1.`docs/` 目录下创建新的 `.md` 文件
2.`mkdocs.yml``nav` 部分添加导航项
3. 重启服务或等待自动重载
### 构建静态站点
```bash
# 进入容器执行构建
docker exec -it mkdocs mkdocs build
# 或使用 docker-compose
docker-compose exec mkdocs mkdocs build
```
## 📖 文档结构
```
docs/
├── index.md # 首页
├── 开发指南/ # 开发相关文档
├── DevOps平台/ # DevOps 工具使用指南
├── 技术文档/ # 技术架构和 API 文档
└── 学习笔记/ # 学习笔记和总结
```
## 🔗 相关链接
- [MkDocs 官方文档](https://www.mkdocs.org/)
- [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)
- [Markdown 语法指南](https://www.markdownguide.org/)
## 💡 使用技巧
1. **代码块**: 使用三个反引号包裹代码,并指定语言
2. **表格**: 使用 Markdown 表格语法
3. **图片**: 将图片放在 `docs/images/` 目录,使用相对路径引用
4. **数学公式**: 支持 LaTeX 数学公式(需要启用相应插件)
5. **流程图**: 支持 Mermaid 流程图(已配置)
---
**开始编写你的文档吧!** 📝

View File

@@ -1,68 +1,68 @@
# DevOps 学习笔记
## 概念
### CI/CD
- **CI (Continuous Integration)**: 持续集成
- 自动构建
- 自动测试
- 代码质量检查
- **CD (Continuous Deployment)**: 持续部署
- 自动部署
- 环境管理
- 回滚机制
## 工具链
### 版本控制
- **Git**: 分布式版本控制系统
- **Gerrit**: 代码审查工具
- **Gitea**: Git 服务
### CI/CD
- **Drone**: 基于容器的 CI/CD 平台
- **Jenkins**: 流行的 CI/CD 工具
- **GitLab CI**: GitLab 内置 CI/CD
### 容器化
- **Docker**: 容器化平台
- **Docker Compose**: 多容器编排
- **Kubernetes**: 容器编排平台
### 监控和日志
- **Grafana**: 监控可视化
- **Loki**: 日志聚合
- **Prometheus**: 监控和告警
## 最佳实践
### 代码管理
1. 使用分支策略Git Flow
2. 代码审查Code Review
3. 提交信息规范Conventional Commits
### 自动化
1. 自动化测试
2. 自动化构建
3. 自动化部署
### 监控
1. 应用监控
2. 日志收集
3. 告警机制
## 学习资源
- [DevOps 实践指南](https://www.devops-handbook.com/)
- [Docker 官方文档](https://docs.docker.com/)
- [Kubernetes 官方文档](https://kubernetes.io/docs/)
# DevOps 学习笔记
## 概念
### CI/CD
- **CI (Continuous Integration)**: 持续集成
- 自动构建
- 自动测试
- 代码质量检查
- **CD (Continuous Deployment)**: 持续部署
- 自动部署
- 环境管理
- 回滚机制
## 工具链
### 版本控制
- **Git**: 分布式版本控制系统
- **Gerrit**: 代码审查工具
- **Gitea**: Git 服务
### CI/CD
- **Drone**: 基于容器的 CI/CD 平台
- **Jenkins**: 流行的 CI/CD 工具
- **GitLab CI**: GitLab 内置 CI/CD
### 容器化
- **Docker**: 容器化平台
- **Docker Compose**: 多容器编排
- **Kubernetes**: 容器编排平台
### 监控和日志
- **Grafana**: 监控可视化
- **Loki**: 日志聚合
- **Prometheus**: 监控和告警
## 最佳实践
### 代码管理
1. 使用分支策略Git Flow
2. 代码审查Code Review
3. 提交信息规范Conventional Commits
### 自动化
1. 自动化测试
2. 自动化构建
3. 自动化部署
### 监控
1. 应用监控
2. 日志收集
3. 告警机制
## 学习资源
- [DevOps 实践指南](https://www.devops-handbook.com/)
- [Docker 官方文档](https://docs.docker.com/)
- [Kubernetes 官方文档](https://kubernetes.io/docs/)

View File

@@ -1,85 +1,85 @@
# Java 学习笔记
## 基础语法
### 变量和数据类型
```java
// 基本数据类型
int age = 25;
double price = 99.99;
boolean isActive = true;
String name = "Java";
```
### 控制结构
```java
// if-else
if (age >= 18) {
System.out.println("成年人");
} else {
System.out.println("未成年人");
}
// for 循环
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
```
## 面向对象
### 类和对象
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("我是 " + name + ",今年 " + age + "");
}
}
```
## 集合框架
### List
```java
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Go");
```
### Map
```java
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
```
## 常用工具类
### String 操作
```java
String str = "Hello World";
str.length(); // 长度
str.substring(0, 5); // 子串
str.split(" "); // 分割
```
## 学习资源
- [Oracle Java 教程](https://docs.oracle.com/javase/tutorial/)
- [Java 官方文档](https://docs.oracle.com/en/java/)
# Java 学习笔记
## 基础语法
### 变量和数据类型
```java
// 基本数据类型
int age = 25;
double price = 99.99;
boolean isActive = true;
String name = "Java";
```
### 控制结构
```java
// if-else
if (age >= 18) {
System.out.println("成年人");
} else {
System.out.println("未成年人");
}
// for 循环
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
```
## 面向对象
### 类和对象
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("我是 " + name + ",今年 " + age + "");
}
}
```
## 集合框架
### List
```java
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
list.add("Go");
```
### Map
```java
Map<String, Integer> map = new HashMap<>();
map.put("Java", 1);
map.put("Python", 2);
```
## 常用工具类
### String 操作
```java
String str = "Hello World";
str.length(); // 长度
str.substring(0, 5); // 子串
str.split(" "); // 分割
```
## 学习资源
- [Oracle Java 教程](https://docs.oracle.com/javase/tutorial/)
- [Java 官方文档](https://docs.oracle.com/en/java/)

File diff suppressed because it is too large Load Diff

View File

@@ -1,424 +1,424 @@
# gerrit上传代码详细指南
# **Gerrit 代码上传详细指南**
## **一、Gerrit 工作流程概述**
```
开发者 → 本地开发 → 推送代码审查 → Gerrit 评审 → 评审通过 → 合并代码
↑ ↓
└─────────────── 需要修改 ← 评审不通过 ←───────────────┘
```
## **二、环境准备**
### **1. 安装必要的工具**
```bash
# 安装 Git
sudo apt-get install git # Ubuntu/Debian
brew install git # macOS
# 安装 commit-msg 钩子(关键步骤)
curl -Lo .git/hooks/commit-msg http://YOUR_GERRIT:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
```
### **2. 配置 Git 用户信息**
```bash
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@company.com"
git config --global core.autocrlf input # Windows 用户重要!
git config --global core.safecrlf warn
```
### **3. 配置 SSH 密钥**
```bash
# 生成 SSH 密钥
ssh-keygen -t ed25519 -C "your_email@company.com"
# 查看公钥
cat ~/.ssh/id_ed25519.pub
# 将公钥添加到 Gerrit: Settings → SSH Keys
```
## **三、日常开发流程**
### **1. 克隆项目**
```bash
# 方式1通过 SSH推荐
git clone ssh://username@gerrit-server:29418/project-name
# 方式2通过 HTTP
git clone http://gerrit-server:8080/project-name
```
### **2. 创建开发分支**
```bash
# 从 master 创建功能分支
git checkout master
git pull origin master
git checkout -b feature/your-feature-name
# 或者从特定版本创建
git checkout -b feature/xxx release-1.0
```
### **3. 进行开发**
```bash
# 修改文件
git add .
git status # 查看状态
# 提交代码commit-msg 钩子会自动添加 Change-Id
git commit -m "功能描述
详细描述:
1. 做了什么修改
2. 为什么修改
3. 测试情况
Bug: BUG-12345 # 如果有 Bug 编号
Feature: FEAT-6789 # 如果有需求编号
Change-Id: I自动生成"
```
### **4. 推送代码审查**
```bash
# 标准推送方式(创建/更新代码审查)
git push origin HEAD:refs/for/目标分支
# 示例:
git push origin HEAD:refs/for/master # 推送到 master 评审
git push origin HEAD:refs/for/release-1.0 # 推送到 release 分支评审
git push origin HEAD:refs/for/feature/xxx # 推送到功能分支评审
```
## **四、推送参数详解**
### **1. 普通推送**
```bash
# 创建新的代码审查
git push origin HEAD:refs/for/master
# 创建草稿代码审查
git push origin HEAD:refs/drafts/master
```
### **2. 推送并设置评审人**
```bash
# 推送并添加 Reviewer
git push origin HEAD:refs/for/master%r=reviewer1@company.com,r=reviewer2@company.com
# 推送并添加 CC
git push origin HEAD:refs/for/master%cc=manager@company.com
# 推送并设置 Topic
git push origin HEAD:refs/for/master%topic=feature/login
```
### **3. 推送选项组合**
```bash
# 完整示例
git push origin HEAD:refs/for/master%\
r=alice@company.com,\
r=bob@company.com,\
cc=manager@company.com,\
topic=feature/login,\
l=Code-Review+2,\
l=Verified+1
```
## **五、更新已有的代码审查**
### **1. 修改后更新**
```bash
# 修改代码后
git add .
git commit --amend # 重要:必须使用 --amend 保留 Change-Id
# 重新推送(会自动更新原有代码审查)
git push origin HEAD:refs/for/master
```
### **2. 基于评审意见修改**
```bash
# 查看评审意见后修改
git fetch origin refs/changes/XX/YYYY/Z && git checkout FETCH_HEAD
# 或者
git review -d 12345 # 如果安装了 git-review
# 修改代码
git add .
git commit --amend
# 重新推送
git push origin HEAD:refs/for/master
```
### **3. 创建新的 Patch Set**
```bash
# 每次 git commit --amend 后推送都会创建新的 Patch Set
git log --oneline -1 # 确认 Change-Id 存在
git push origin HEAD:refs/for/master
```
## **六、解决常见问题**
### **问题1缺少 Change-Id**
```bash
# 安装 commit-msg 钩子
curl -Lo .git/hooks/commit-msg http://gerrit:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
# 为现有提交添加 Change-Id
git commit --amend --no-edit # 重新提交,钩子会自动添加
# 或者手动添加
git commit --amend -m "原提交信息
Change-Id: I旧的ChangeId" # 从 Gerrit 界面复制
```
### **问题2权限拒绝**
```bash
# 检查 SSH 配置
ssh -p 29418 username@gerrit-server
# 检查公钥是否添加
cat ~/.ssh/id_ed25519.pub
# 检查项目权限
# 联系管理员或查看 Gerrit Web 界面
```
### **问题3冲突无法推送**
```bash
# 拉取最新代码
git fetch origin
git rebase origin/master # 或者 git merge origin/master
# 解决冲突
git mergetool # 或手动解决
git add .
git rebase --continue # 如果使用 rebase
# 重新推送
git push origin HEAD:refs/for/master
```
### **问题4错误的分支目标**
```bash
# 查看当前分支
git branch -a
# 查看远程分支
git branch -r
# 推送到正确的分支
git push origin HEAD:refs/for/正确的分支名
```
## **七、高级操作**
### **1. 提交多个相关修改**
```bash
# 创建多个提交
git add file1
git commit -m "修改1: 功能A"
git add file2
git commit -m "修改2: 功能B"
# 推送到同一个 Topic
git push origin HEAD~2:refs/for/master%topic=feature/xxx
```
### **2. 依赖链提交**
```bash
# 第一个提交
git commit -m "基础修改"
# 第二个提交依赖第一个
git commit -m "依赖修改"
# 推送到 Gerrit 时保持依赖关系
git push origin HEAD~1:refs/for/master
git push origin HEAD:refs/for/master%depends=第一个提交的Change-Id
```
### **3. 使用 git-review 工具**
```bash
# 安装
pip install git-review
# 初始化
git review -s
# 提交代码审查
git review
# 下载代码审查
git review -d 12345 # Change-Number
```
## **八、Gerrit Web 界面操作**
### **1. 查看代码审查**
- 访问:`http://gerrit:8080`
- 登录 → Dashboard → 查看你的代码审查
- 点击 Change-Number 进入详情
### **2. 评审操作**
- **+1 / -1**:代码风格、建议性意见
- **+2 / -2**:代码评审通过/拒绝(需要权限)
- **Submit**:合并代码(需要权限)
- **Abandon**:放弃代码审查
- **Rebase**:重新基于最新代码
- **Cherry Pick**:应用到其他分支
### **3. 查看差异**
- **Side-by-Side**:并排对比
- **Unified Diff**:统一差异
- **Patch Set**:切换不同版本
## **九、最佳实践**
### **1. 提交信息规范**
```
一句话摘要50字以内
详细描述:
• 做了什么修改
• 为什么修改
• 如何测试
• 可能的影响
Bug: BUG-12345
Feature: FEAT-6789
Test: 通过单元测试/集成测试
Change-Id: I自动生成
```
### **2. 代码审查前自查**
```bash
# 1. 运行代码检查
git diff --check # 检查空白字符
# 2. 运行测试
npm test # 或 mvn test, pytest 等
# 3. 检查提交信息
git log --oneline -1
# 4. 确保 Change-Id 存在
git log -1 | grep Change-Id
```
### **3. 每日工作流程**
```bash
# 早上
git fetch origin
git rebase origin/master # 更新本地代码
# 开发中
git add .
git commit -m "..."
# 推送前
git pull --rebase origin master # 再次更新
解决冲突(如果有)
git push origin HEAD:refs/for/master
# 查看 Gerrit 反馈
# 根据评审意见修改
```
## **十、常用命令速查**
```bash
# 初始化
git clone ssh://user@gerrit:29418/project
scp -p -P 29418 user@gerrit:hooks/commit-msg .git/hooks/
# 日常开发
git checkout -b feature/xxx
git add .
git commit -m "..."
git push origin HEAD:refs/for/master
# 更新
git commit --amend
git push origin HEAD:refs/for/master
# 查看
git log --oneline -5
git status
git diff
# 解决冲突
git fetch origin
git rebase origin/master
解决冲突 → git add → git rebase --continue
```
## **十一、故障排除**
| 问题 | 解决方案 |
| ------------- | ----------------- |
| 403 Forbidden | 检查 SSH 密钥/HTTP 密码 |
| 缺少 Change-Id | 安装 commit-msg 钩子 |
| 分支不存在 | 先创建分支或确认分支名 |
| 冲突无法推送 | rebase 解决冲突 |
| 权限不足 | 联系管理员添加权限 |
| 推送被拒绝 | 检查目标分支是否正确 |
## **十二、快速参考卡片**
```
✅ 正确流程:
1. git clone
2. 安装 commit-msg 钩子
3. git checkout -b feature/xxx
4. 开发并提交
5. git push origin HEAD:refs/for/目标分支
✅ 更新流程:
1. git commit --amend # 必须!
2. git push origin HEAD:refs/for/目标分支
✅ 关键要点:
• 每次提交都必须有 Change-Id
• 更新必须用 --amend
• 只能推送到 refs/for/
• 在 Gerrit Web 界面查看结果
```
需要我详细解释哪个部分吗?
# gerrit上传代码详细指南
# **Gerrit 代码上传详细指南**
## **一、Gerrit 工作流程概述**
```
开发者 → 本地开发 → 推送代码审查 → Gerrit 评审 → 评审通过 → 合并代码
↑ ↓
└─────────────── 需要修改 ← 评审不通过 ←───────────────┘
```
## **二、环境准备**
### **1. 安装必要的工具**
```bash
# 安装 Git
sudo apt-get install git # Ubuntu/Debian
brew install git # macOS
# 安装 commit-msg 钩子(关键步骤)
curl -Lo .git/hooks/commit-msg http://YOUR_GERRIT:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
```
### **2. 配置 Git 用户信息**
```bash
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱@company.com"
git config --global core.autocrlf input # Windows 用户重要!
git config --global core.safecrlf warn
```
### **3. 配置 SSH 密钥**
```bash
# 生成 SSH 密钥
ssh-keygen -t ed25519 -C "your_email@company.com"
# 查看公钥
cat ~/.ssh/id_ed25519.pub
# 将公钥添加到 Gerrit: Settings → SSH Keys
```
## **三、日常开发流程**
### **1. 克隆项目**
```bash
# 方式1通过 SSH推荐
git clone ssh://username@gerrit-server:29418/project-name
# 方式2通过 HTTP
git clone http://gerrit-server:8080/project-name
```
### **2. 创建开发分支**
```bash
# 从 master 创建功能分支
git checkout master
git pull origin master
git checkout -b feature/your-feature-name
# 或者从特定版本创建
git checkout -b feature/xxx release-1.0
```
### **3. 进行开发**
```bash
# 修改文件
git add .
git status # 查看状态
# 提交代码commit-msg 钩子会自动添加 Change-Id
git commit -m "功能描述
详细描述:
1. 做了什么修改
2. 为什么修改
3. 测试情况
Bug: BUG-12345 # 如果有 Bug 编号
Feature: FEAT-6789 # 如果有需求编号
Change-Id: I自动生成"
```
### **4. 推送代码审查**
```bash
# 标准推送方式(创建/更新代码审查)
git push origin HEAD:refs/for/目标分支
# 示例:
git push origin HEAD:refs/for/master # 推送到 master 评审
git push origin HEAD:refs/for/release-1.0 # 推送到 release 分支评审
git push origin HEAD:refs/for/feature/xxx # 推送到功能分支评审
```
## **四、推送参数详解**
### **1. 普通推送**
```bash
# 创建新的代码审查
git push origin HEAD:refs/for/master
# 创建草稿代码审查
git push origin HEAD:refs/drafts/master
```
### **2. 推送并设置评审人**
```bash
# 推送并添加 Reviewer
git push origin HEAD:refs/for/master%r=reviewer1@company.com,r=reviewer2@company.com
# 推送并添加 CC
git push origin HEAD:refs/for/master%cc=manager@company.com
# 推送并设置 Topic
git push origin HEAD:refs/for/master%topic=feature/login
```
### **3. 推送选项组合**
```bash
# 完整示例
git push origin HEAD:refs/for/master%\
r=alice@company.com,\
r=bob@company.com,\
cc=manager@company.com,\
topic=feature/login,\
l=Code-Review+2,\
l=Verified+1
```
## **五、更新已有的代码审查**
### **1. 修改后更新**
```bash
# 修改代码后
git add .
git commit --amend # 重要:必须使用 --amend 保留 Change-Id
# 重新推送(会自动更新原有代码审查)
git push origin HEAD:refs/for/master
```
### **2. 基于评审意见修改**
```bash
# 查看评审意见后修改
git fetch origin refs/changes/XX/YYYY/Z && git checkout FETCH_HEAD
# 或者
git review -d 12345 # 如果安装了 git-review
# 修改代码
git add .
git commit --amend
# 重新推送
git push origin HEAD:refs/for/master
```
### **3. 创建新的 Patch Set**
```bash
# 每次 git commit --amend 后推送都会创建新的 Patch Set
git log --oneline -1 # 确认 Change-Id 存在
git push origin HEAD:refs/for/master
```
## **六、解决常见问题**
### **问题1缺少 Change-Id**
```bash
# 安装 commit-msg 钩子
curl -Lo .git/hooks/commit-msg http://gerrit:8080/tools/hooks/commit-msg
chmod +x .git/hooks/commit-msg
# 为现有提交添加 Change-Id
git commit --amend --no-edit # 重新提交,钩子会自动添加
# 或者手动添加
git commit --amend -m "原提交信息
Change-Id: I旧的ChangeId" # 从 Gerrit 界面复制
```
### **问题2权限拒绝**
```bash
# 检查 SSH 配置
ssh -p 29418 username@gerrit-server
# 检查公钥是否添加
cat ~/.ssh/id_ed25519.pub
# 检查项目权限
# 联系管理员或查看 Gerrit Web 界面
```
### **问题3冲突无法推送**
```bash
# 拉取最新代码
git fetch origin
git rebase origin/master # 或者 git merge origin/master
# 解决冲突
git mergetool # 或手动解决
git add .
git rebase --continue # 如果使用 rebase
# 重新推送
git push origin HEAD:refs/for/master
```
### **问题4错误的分支目标**
```bash
# 查看当前分支
git branch -a
# 查看远程分支
git branch -r
# 推送到正确的分支
git push origin HEAD:refs/for/正确的分支名
```
## **七、高级操作**
### **1. 提交多个相关修改**
```bash
# 创建多个提交
git add file1
git commit -m "修改1: 功能A"
git add file2
git commit -m "修改2: 功能B"
# 推送到同一个 Topic
git push origin HEAD~2:refs/for/master%topic=feature/xxx
```
### **2. 依赖链提交**
```bash
# 第一个提交
git commit -m "基础修改"
# 第二个提交依赖第一个
git commit -m "依赖修改"
# 推送到 Gerrit 时保持依赖关系
git push origin HEAD~1:refs/for/master
git push origin HEAD:refs/for/master%depends=第一个提交的Change-Id
```
### **3. 使用 git-review 工具**
```bash
# 安装
pip install git-review
# 初始化
git review -s
# 提交代码审查
git review
# 下载代码审查
git review -d 12345 # Change-Number
```
## **八、Gerrit Web 界面操作**
### **1. 查看代码审查**
- 访问:`http://gerrit:8080`
- 登录 → Dashboard → 查看你的代码审查
- 点击 Change-Number 进入详情
### **2. 评审操作**
- **+1 / -1**:代码风格、建议性意见
- **+2 / -2**:代码评审通过/拒绝(需要权限)
- **Submit**:合并代码(需要权限)
- **Abandon**:放弃代码审查
- **Rebase**:重新基于最新代码
- **Cherry Pick**:应用到其他分支
### **3. 查看差异**
- **Side-by-Side**:并排对比
- **Unified Diff**:统一差异
- **Patch Set**:切换不同版本
## **九、最佳实践**
### **1. 提交信息规范**
```
一句话摘要50字以内
详细描述:
• 做了什么修改
• 为什么修改
• 如何测试
• 可能的影响
Bug: BUG-12345
Feature: FEAT-6789
Test: 通过单元测试/集成测试
Change-Id: I自动生成
```
### **2. 代码审查前自查**
```bash
# 1. 运行代码检查
git diff --check # 检查空白字符
# 2. 运行测试
npm test # 或 mvn test, pytest 等
# 3. 检查提交信息
git log --oneline -1
# 4. 确保 Change-Id 存在
git log -1 | grep Change-Id
```
### **3. 每日工作流程**
```bash
# 早上
git fetch origin
git rebase origin/master # 更新本地代码
# 开发中
git add .
git commit -m "..."
# 推送前
git pull --rebase origin master # 再次更新
解决冲突(如果有)
git push origin HEAD:refs/for/master
# 查看 Gerrit 反馈
# 根据评审意见修改
```
## **十、常用命令速查**
```bash
# 初始化
git clone ssh://user@gerrit:29418/project
scp -p -P 29418 user@gerrit:hooks/commit-msg .git/hooks/
# 日常开发
git checkout -b feature/xxx
git add .
git commit -m "..."
git push origin HEAD:refs/for/master
# 更新
git commit --amend
git push origin HEAD:refs/for/master
# 查看
git log --oneline -5
git status
git diff
# 解决冲突
git fetch origin
git rebase origin/master
解决冲突 → git add → git rebase --continue
```
## **十一、故障排除**
| 问题 | 解决方案 |
| ------------- | ----------------- |
| 403 Forbidden | 检查 SSH 密钥/HTTP 密码 |
| 缺少 Change-Id | 安装 commit-msg 钩子 |
| 分支不存在 | 先创建分支或确认分支名 |
| 冲突无法推送 | rebase 解决冲突 |
| 权限不足 | 联系管理员添加权限 |
| 推送被拒绝 | 检查目标分支是否正确 |
## **十二、快速参考卡片**
```
✅ 正确流程:
1. git clone
2. 安装 commit-msg 钩子
3. git checkout -b feature/xxx
4. 开发并提交
5. git push origin HEAD:refs/for/目标分支
✅ 更新流程:
1. git commit --amend # 必须!
2. git push origin HEAD:refs/for/目标分支
✅ 关键要点:
• 每次提交都必须有 Change-Id
• 更新必须用 --amend
• 只能推送到 refs/for/
• 在 Gerrit Web 界面查看结果
```
需要我详细解释哪个部分吗?

View File

@@ -0,0 +1,128 @@
推荐标准分支模型: master/main主干分支 永远保持可编译、可运行 release-* 发布分支 只合并经过验证的Change hotfix-* 紧急修复
您总结的Gerrit分支创建流程非常准确和实用以下是对您提供内容的梳理和补充使其更加清晰系统化。
## Gerrit 分支管理全流程
### 一、权限说明(重要前提)
- **Owner/Maintainer**:有权限创建新分支
- **Developer**:默认只能推送提交到现有分支,不能创建新分支
- **权限配置路径**Project → Access → Reference: refs/heads/*
### 二、分支创建详细步骤
#### 1. master/main分支主干分支
```bash
# 如果仓库为空需要初始化master分支
git clone ssh://user@gerrit-ip:29418/project-name
cd project-name
git checkout -b master
# 首次推送master分支不走Review流程
git push origin master
```
#### 2. release-*分支(发布分支)
```bash
# 1. 更新master分支
git checkout master
git pull
# 2. 创建本地release分支
git checkout -b release-1.0
# 3. 推送到Gerrit创建远程分支
git push origin release-1.0
# 注意这里直接push不是refs/for/
```
#### 3. hotfix-*分支(紧急修复分支)
```bash
# 从release分支创建
git checkout release-1.0
git pull
git checkout -b hotfix-crash-123
git push origin hotfix-crash-123
# 从master分支创建如果未建立release分支
git checkout master
git pull
git checkout -b hotfix-issue-456
git push origin hotfix-issue-456
```
### 三、不同分支的提交方式差异
| 分支类型 | 推送命令 | 是否走Review | 说明 |
|---------|---------|-------------|------|
| 创建新分支 | `git push origin 分支名` | ❌ 否 | 直接创建分支 |
| master分支提交 | `git push origin HEAD:refs/for/master` | ✅ 是 | 常规开发流程 |
| release分支提交 | `git push origin HEAD:refs/for/release-1.0` | ✅ 是 | 修复bug流程 |
| hotfix分支提交 | `git push origin HEAD:refs/for/hotfix-*` | ✅ 是 | 紧急修复流程 |
### 四、分支合并策略
#### hotfix修复后的合并流程
```bash
# 1. 修复完成后合并到release分支
git checkout release-1.0
git merge --no-ff hotfix-crash-123
git push origin HEAD:refs/for/release-1.0
# 2. cherry-pick到master
git checkout master
git cherry-pick <hotfix-commit-id>
git push origin HEAD:refs/for/master
```
### 五、最佳实践建议
1. **分支命名规范**
- feature/xxx功能分支从master创建
- release/x.y.z发布分支
- hotfix/xxx紧急修复
- bugfix/xxx普通bug修复
2. **权限管理**
```bash
# 为开发者授予特定分支创建权限Gerrit Web界面
# Access → Reference: refs/heads/feature/*
# 添加 Push + Create Reference 权限给特定用户组
```
3. **CI/CD集成**
- release-* 分支:触发正式环境构建
- hotfix-* 分支:紧急修复通道,快速验证
- master分支每日/持续集成
4. **分支保护**
- 保护master分支必须通过Code Review
- 保护release分支限制直接push需通过Review
- 定期清理过期分支
### 六、常见问题排查
1. **权限拒绝错误**
```
! [remote rejected] release-1.0 -> release-1.0 (prohibited by Gerrit)
```
解决方法联系Owner/Maintainer授予分支创建权限
2. **分支已存在错误**
```bash
# 先拉取远程分支列表
git fetch origin
git branch -r # 查看远程分支
```
3. **使用Gerrit插件创建分支**(可选):
```bash
# 安装git-review插件
pip install git-review
# 创建分支并推送到Gerrit
git review -c -b release-1.0
```
您的总结已经非常全面,这些补充主要是为了让操作流程更加清晰,便于团队协作和标准化操作。

View File

@@ -0,0 +1,276 @@
非常全面的同步远程分支指南!我来帮你整理几个最实用的方案,并提供更清晰的分类:
## 📋 **最常用的分支同步方案**
### **方案一:基础同步(最常用)**
```bash
# 1. 获取所有远程更新并清理已删除分支
git fetch --all --prune
# 2. 查看所有分支
git branch -a
# 3. 切换到特定分支并同步
git checkout 分支名
git pull origin 分支名
```
### **方案二:一键同步所有分支到本地**
```bash
# 推荐的安全版本
git fetch --all --prune
for branch in $(git branch -r | grep -v '\->' | grep -v 'HEAD'); do
local_branch=${branch#origin/}
if ! git show-ref --quiet refs/heads/"$local_branch"; then
echo "📦 创建分支: $local_branch"
git branch --track "$local_branch" "$branch"
fi
done
```
## 🔧 **实用脚本整理**
### **脚本1智能同步脚本 (sync-branches.sh)**
```bash
#!/bin/bash
# 智能同步所有远程分支
echo "🔄 开始同步分支..."
# 1. 获取所有远程更新
git fetch --all --prune
# 2. 同步主要分支
main_branch=""
if git show-ref --verify --quiet refs/remotes/origin/main; then
main_branch="main"
elif git show-ref --verify --quiet refs/remotes/origin/master; then
main_branch="master"
fi
if [ -n "$main_branch" ]; then
echo "📌 更新主分支: $main_branch"
git checkout $main_branch 2>/dev/null || git checkout -b $main_branch origin/$main_branch
git pull origin $main_branch
fi
# 3. 创建本地不存在的远程分支
echo "📦 同步其他分支..."
git branch -r | grep -v '\->' | grep -v 'HEAD' | while read remote; do
local_branch=${remote#origin/}
# 跳过已经存在的分支
if git show-ref --verify --quiet refs/heads/"$local_branch"; then
echo " ✓ 已存在: $local_branch"
continue
fi
# 创建跟踪分支
echo " 创建: $local_branch"
git branch --track "$local_branch" "$remote" 2>/dev/null
done
# 4. 检查是否需要更新现有分支
echo "🔄 检查本地分支更新..."
current_branch=$(git branch --show-current)
git branch --format='%(refname:short)' | while read branch; do
if [ "$branch" != "$current_branch" ]; then
git checkout "$branch" >/dev/null 2>&1
if [ $? -eq 0 ]; then
git pull origin "$branch" --ff-only >/dev/null 2>&1
echo " ⬆️ 已更新: $branch"
fi
fi
done
# 5. 返回原分支
git checkout "$current_branch" >/dev/null 2>&1
echo "✅ 同步完成!"
echo "📊 分支统计:"
git branch -a | grep -c "remotes/origin" | xargs echo "远程分支数: "
git branch | wc -l | xargs echo "本地分支数: "
```
### **脚本2快速切换和同步 (git-sync)**
```bash
#!/bin/bash
# 快速切换到指定分支并同步
if [ $# -eq 0 ]; then
echo "用法: git-sync 分支名"
exit 1
fi
BRANCH=$1
echo "🔄 切换到分支: $BRANCH"
# 检查分支是否存在
if git show-ref --verify --quiet refs/heads/"$BRANCH"; then
# 本地分支存在
git checkout "$BRANCH"
git pull origin "$BRANCH"
elif git show-ref --verify --quiet refs/remotes/origin/"$BRANCH"; then
# 远程分支存在,创建本地跟踪分支
git checkout -b "$BRANCH" origin/"$BRANCH"
else
echo "❌ 错误: 分支 $BRANCH 不存在"
echo "可用的远程分支:"
git branch -r | grep -v '\->' | sed 's/origin\///' | sort | uniq
exit 1
fi
echo "✅ 完成!当前分支: $(git branch --show-current)"
```
## ⚙️ **Git 配置别名(推荐)**
添加到 `~/.gitconfig``[alias]` 部分:
```ini
[alias]
# 同步所有分支
sync-all = "!f() { \
echo '🔄 获取远程更新...'; \
git fetch --all --prune; \
echo '📦 创建本地分支...'; \
git branch -r | grep -v '\\->' | grep -v 'HEAD' | while read remote; do \
local=${remote#origin/}; \
if ! git show-ref --quiet refs/heads/\"$local\"; then \
echo \" $local\"; \
git branch --track \"$local\" \"$remote\" 2>/dev/null; \
fi; \
done; \
echo '✅ 同步完成!'; \
}; f"
# 更新当前仓库所有分支
update-all = "!f() { \
current=$(git branch --show-current); \
for branch in $(git branch --format='%(refname:short)'); do \
if [ \"$branch\" != \"$current\" ]; then \
git checkout \"$branch\" 2>/dev/null && git pull origin \"$branch\" 2>/dev/null; \
fi; \
done; \
git checkout \"$current\"; \
echo '✅ 所有分支已更新!'; \
}; f"
# 查看分支树状图
tree = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
# 清理已合并的分支
clean-branches = "!f() { \
git fetch --all --prune; \
git branch --merged main | grep -v '^\\* main$' | xargs -n 1 git branch -d; \
echo '🧹 已清理合并到main的分支'; \
}; f"
```
使用别名:
```bash
git sync-all # 同步所有远程分支到本地
git update-all # 更新所有本地分支
git tree # 查看分支树状图
git clean-branches # 清理已合并的分支
```
## 🎯 **针对不同场景的推荐方案**
### **场景1新电脑初次同步**
```bash
# 1. 克隆仓库
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
# 2. 进入目录并同步所有分支
cd zhini_im
git sync-all # 使用上面配置的别名
```
### **场景2日常更新**
```bash
# 推荐的工作流程
git status # 1. 查看状态
git stash # 2. 暂存未提交的修改(可选)
git fetch --all --prune # 3. 获取最新状态
git checkout main # 4. 切换到主分支
git pull --rebase origin main # 5. 更新主分支
git checkout 你的分支 # 6. 切回你的分支
git rebase main # 7. 基于最新main重定基
git stash pop # 8. 恢复暂存的修改
```
### **场景3清理分支**
```bash
# 查看哪些分支已经合并到main
git branch --merged main
# 删除已合并的分支除了当前分支和main
git branch --merged main | grep -v "main" | xargs git branch -d
# 强制删除未合并的分支
git branch -D 分支名
# 删除远程分支(谨慎操作)
git push origin --delete 分支名
```
## 📊 **分支管理最佳实践**
### **分支命名规范**
```
feature/ # 新功能
bugfix/ # 修复bug
hotfix/ # 紧急修复
release/ # 发布分支
```
### **常用命令速查**
```bash
# 查看分支关系
git log --graph --oneline --all
# 查看远程分支的最后提交
git for-each-ref --sort=-committerdate refs/remotes/origin/ --format='%(refname:short) - %(committerdate:short)'
# 查看分支差异
git diff main..你的分支 # 比较差异
git log main..你的分支 # 查看提交记录差异
# 重命名分支
git branch -m 旧名字 新名字 # 本地重命名
git push origin :旧名字 # 删除远程旧分支
git push origin 新名字 # 推送新分支
git push origin -u 新名字 # 设置上游分支
```
## 🚨 **注意事项**
1. **备份重要修改**:同步前先提交或暂存工作
2. **小心 force push**:避免使用 `--force`,用 `--force-with-lease` 更安全
3. **定期清理**:删除已合并的本地分支,保持仓库整洁
4. **沟通协调**:多人协作时,删除远程分支前要确认
## 🎪 **一个命令完成所有同步**
终极简化版:
```bash
# 创建 ~/bin/git-full-sync 文件
#!/bin/bash
cd /path/to/your/project
git stash
git fetch --all --prune
git checkout main && git pull origin main
git sync-all # 使用别名
git stash pop
echo "✅ 全量同步完成!"
# 添加执行权限
chmod +x ~/bin/git-full-sync
# 使用
cd 你的项目
git-full-sync
```
这些方案覆盖了大部分使用场景,根据你的具体需求选择合适的方法即可。最常用的是方案一的基础同步,配合别名可以极大提高效率。

View File

@@ -0,0 +1,14 @@
配置用户名和邮箱(如果还没配置)
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
查看用户名
git config user.name
查看邮箱
git config user.email
查看远程仓库地址
git config remote.origin.url
设置远程仓库地址
git remote set-url origin ssh://renjianbo@101.43.95.130:29419/zhini_im_android

View File

@@ -1,119 +1,119 @@
# 前端学习笔记
## HTML
### 基本结构
```html
<!DOCTYPE html>
<html>
<head>
<title>页面标题</title>
</head>
<body>
<h1>标题</h1>
<p>段落内容</p>
</body>
</html>
```
## CSS
### 样式定义
```css
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.button {
background-color: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
```
## JavaScript
### 基础语法
```javascript
// 变量
let name = "JavaScript";
const age = 25;
// 函数
function greet(name) {
return `Hello, ${name}!`;
}
// 箭头函数
const greet = (name) => `Hello, ${name}!`;
// 异步函数
async function fetchData() {
const response = await fetch('/api/data');
const data = await response.json();
return data;
}
```
## 框架和库
### React
```jsx
import React, { useState } from 'react';
function App() {
const [count, setCount] = useState(0);
return (
<div>
<p>计数: {count}</p>
<button onClick={() => setCount(count + 1)}>
增加
</button>
</div>
);
}
```
### Vue
```vue
<template>
<div>
<p>计数: {{ count }}</p>
<button @click="increment">增加</button>
</div>
</template>
<script>
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
};
</script>
```
## 学习资源
- [MDN Web 文档](https://developer.mozilla.org/)
- [React 官方文档](https://react.dev/)
- [Vue 官方文档](https://cn.vuejs.org/)
# 前端学习笔记
## HTML
### 基本结构
```html
<!DOCTYPE html>
<html>
<head>
<title>页面标题</title>
</head>
<body>
<h1>标题</h1>
<p>段落内容</p>
</body>
</html>
```
## CSS
### 样式定义
```css
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 20px;
}
.button {
background-color: #007bff;
color: white;
padding: 10px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
}
```
## JavaScript
### 基础语法
```javascript
// 变量
let name = "JavaScript";
const age = 25;
// 函数
function greet(name) {
return `Hello, ${name}!`;
}
// 箭头函数
const greet = (name) => `Hello, ${name}!`;
// 异步函数
async function fetchData() {
const response = await fetch('/api/data');
const data = await response.json();
return data;
}
```
## 框架和库
### React
```jsx
import React, { useState } from 'react';
function App() {
const [count, setCount] = useState(0);
return (
<div>
<p>计数: {count}</p>
<button onClick={() => setCount(count + 1)}>
增加
</button>
</div>
);
}
```
### Vue
```vue
<template>
<div>
<p>计数: {{ count }}</p>
<button @click="increment">增加</button>
</div>
</template>
<script>
export default {
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
};
</script>
```
## 学习资源
- [MDN Web 文档](https://developer.mozilla.org/)
- [React 官方文档](https://react.dev/)
- [Vue 官方文档](https://cn.vuejs.org/)

View File

@@ -0,0 +1,133 @@
你的操作指南非常详细和准确!我帮你重新整理了一个更清晰的流程,并修复了流程图的语法:
## 完整操作流程
### **第一步生成SSH密钥在新电脑上**
```bash
# 1. 生成SSH密钥使用ed25519算法更安全
ssh-keygen -t ed25519 -C "renjianbo@example.com"
# 按提示操作:
# - 直接回车使用默认路径 (~/.ssh/id_ed25519)
# - 可以设置密码(可选)
# - 再次确认密码
# 2. 查看公钥并复制
cat ~/.ssh/id_ed25519.pub
```
**输出示例:**
```
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJL...你的公钥内容... renjianbo@example.com
```
### **第二步添加公钥到Gerrit账户**
1. 登录 Gerrit`http://101.43.95.130:8080/`
2. 点击右上角 **renjianbo****Settings****SSH Keys**
3. 点击 **Add Key** 按钮
4. 粘贴复制的公钥内容,保存
### **第三步:克隆项目**
#### **方式ASSH协议推荐**
```bash
# 使用你的用户名 renjianbo
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
```
#### **方式BHTTP协议备用**
```bash
git clone http://101.43.95.130:8080/zhini_im
# 可能需要输入用户名密码
```
### **第四步:验证和配置**
```bash
# 1. 进入项目目录
cd zhini_im
# 2. 查看远程仓库地址
git remote -v
# 应该显示类似origin ssh://renjianbo@101.43.95.130:29418/zhini_im
# 3. 配置用户信息(重要!)
git config user.name "renjianbo"
git config user.email "renjianbo@example.com" # 使用你的Gerrit注册邮箱
# 4. 可选验证SSH连接
ssh -p 29418 renjianbo@101.43.95.130
# 如果看到 Gerrit 欢迎信息,说明连接成功
```
## **操作流程图**
```mermaid
flowchart TD
Start[开始] --> GenKey[生成SSH密钥<br>ssh-keygen]
GenKey --> CopyKey[复制公钥<br>cat ~/.ssh/id_ed25519.pub]
CopyKey --> LoginGerrit[登录Gerrit网页]
LoginGerrit --> AddKey[添加公钥到SSH Keys]
AddKey --> ChooseMethod{选择克隆方式}
ChooseMethod --> SSH[SSH协议<br>git clone ssh://renjianbo@...]
ChooseMethod --> HTTP[HTTP协议<br>git clone http://...]
SSH --> Verify[进入目录验证]
HTTP --> Verify
Verify --> Config[配置用户信息]
Config --> Done[完成]
```
## **常见问题解决**
### **1. SSH连接被拒绝**
```bash
# 测试SSH连接
ssh -p 29418 -T renjianbo@101.43.95.130
# 如果提示"Permission denied",检查:
# - 公钥是否正确添加到Gerrit
# - 用户名是否正确不是admin是renjianbo
# - 是否有仓库访问权限
```
### **2. 首次连接需要确认主机**
```
The authenticity of host '[101.43.95.130]:29418' can't be established.
ECDSA key fingerprint is SHA256:xxx...
Are you sure you want to continue connecting (yes/no/[fingerprint])?
```
**输入:** `yes`
### **3. 端口被阻挡**
- 检查防火墙是否允许29418端口
- 在公司网络可能需要配置代理
### **4. 克隆速度慢**
```bash
# 可以尝试浅克隆(只获取最新版本)
git clone --depth 1 ssh://renjianbo@101.43.95.130:29418/zhini_im
```
## **快捷脚本**
创建一键克隆脚本 `clone_zhini_im.sh`
```bash
#!/bin/bash
# 克隆智拟IM项目
echo "正在克隆智拟IM项目..."
git clone ssh://renjianbo@101.43.95.130:29418/zhini_im
cd zhini_im
git config user.name "renjianbo"
git config user.email "renjianbo@example.com"
echo "克隆完成!"
```
执行:
```bash
chmod +x clone_zhini_im.sh
./clone_zhini_im.sh
```
按照这个流程操作,你应该能成功将项目拉到新电脑。如果遇到具体错误,可以把错误信息发给我,我会帮你诊断解决。

View File

@@ -1,104 +1,104 @@
# 开发规范
## Markdown 编写规范
### 标题层级
- 使用 `#` 作为文档主标题H1
- 使用 `##` 作为章节标题H2
- 使用 `###` 作为小节标题H3
- 避免跳过标题层级
### 代码块
使用三个反引号包裹代码,并指定语言:
```markdown
```python
def hello():
print("Hello, World!")
```
```
### 链接
- 内部链接:使用相对路径
- 外部链接:使用完整 URL
```markdown
[内部文档](../其他文档.md)
[外部链接](https://example.com)
```
### 图片
将图片放在 `docs/images/` 目录,使用相对路径:
```markdown
![图片描述](images/example.png)
```
### 表格
使用 Markdown 表格语法:
```markdown
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 值1 | 值2 | 值3 |
```
## 文档结构规范
### 文档头部
每个文档应包含:
- 标题H1
- 简要描述
- 目录(可选,用于长文档)
### 章节组织
- 使用清晰的章节标题
- 保持逻辑顺序
- 使用列表和表格增强可读性
## 命名规范
### 文件名
- 使用小写字母和连字符
- 避免使用空格和特殊字符
- 示例:`快速开始.md``api-文档.md`
### 目录名
- 使用中文或英文
- 保持简洁明了
- 示例:`开发指南/``dev-guide/`
## 内容规范
### 语言风格
- 使用简洁明了的语言
- 避免冗长的句子
- 使用列表和表格组织信息
### 代码示例
- 提供完整可运行的代码示例
- 添加必要的注释
- 说明代码的用途和注意事项
### 更新记录
重要文档建议添加更新记录:
```markdown
## 更新记录
- 2024-01-01: 初始版本
- 2024-01-15: 添加新功能说明
```
# 开发规范
## Markdown 编写规范
### 标题层级
- 使用 `#` 作为文档主标题H1
- 使用 `##` 作为章节标题H2
- 使用 `###` 作为小节标题H3
- 避免跳过标题层级
### 代码块
使用三个反引号包裹代码,并指定语言:
```markdown
```python
def hello():
print("Hello, World!")
```
```
### 链接
- 内部链接:使用相对路径
- 外部链接:使用完整 URL
```markdown
[内部文档](../其他文档.md)
[外部链接](https://example.com)
```
### 图片
将图片放在 `docs/images/` 目录,使用相对路径:
```markdown
![图片描述](images/example.png)
```
### 表格
使用 Markdown 表格语法:
```markdown
| 列1 | 列2 | 列3 |
|-----|-----|-----|
| 值1 | 值2 | 值3 |
```
## 文档结构规范
### 文档头部
每个文档应包含:
- 标题H1
- 简要描述
- 目录(可选,用于长文档)
### 章节组织
- 使用清晰的章节标题
- 保持逻辑顺序
- 使用列表和表格增强可读性
## 命名规范
### 文件名
- 使用小写字母和连字符
- 避免使用空格和特殊字符
- 示例:`快速开始.md``api-文档.md`
### 目录名
- 使用中文或英文
- 保持简洁明了
- 示例:`开发指南/``dev-guide/`
## 内容规范
### 语言风格
- 使用简洁明了的语言
- 避免冗长的句子
- 使用列表和表格组织信息
### 代码示例
- 提供完整可运行的代码示例
- 添加必要的注释
- 说明代码的用途和注意事项
### 更新记录
重要文档建议添加更新记录:
```markdown
## 更新记录
- 2024-01-01: 初始版本
- 2024-01-15: 添加新功能说明
```

View File

@@ -1,56 +1,56 @@
# 快速开始
## 环境要求
- Docker
- Docker Compose
## 启动服务
```bash
cd /home/renjianbo/devops/mkdocs
docker-compose up -d
```
## 访问地址
- **本地访问**: http://localhost:8000
- **服务器访问**: http://101.43.95.130:8000
## 编辑文档
1. 编辑 `docs/` 目录下的 Markdown 文件
2. 保存后,页面会自动刷新(开发模式)
3.`mkdocs.yml` 中配置导航结构
## 常用命令
### 启动服务
```bash
docker-compose up -d
```
### 停止服务
```bash
docker-compose down
```
### 查看日志
```bash
docker-compose logs -f
```
### 构建静态站点
```bash
docker-compose exec mkdocs mkdocs build
```
### 进入容器
```bash
docker exec -it mkdocs sh
```
# 快速开始
## 环境要求
- Docker
- Docker Compose
## 启动服务
```bash
cd /home/renjianbo/devops/mkdocs
docker-compose up -d
```
## 访问地址
- **本地访问**: http://localhost:8000
- **服务器访问**: http://101.43.95.130:8000
## 编辑文档
1. 编辑 `docs/` 目录下的 Markdown 文件
2. 保存后,页面会自动刷新(开发模式)
3.`mkdocs.yml` 中配置导航结构
## 常用命令
### 启动服务
```bash
docker-compose up -d
```
### 停止服务
```bash
docker-compose down
```
### 查看日志
```bash
docker-compose logs -f
```
### 构建静态站点
```bash
docker-compose exec mkdocs mkdocs build
```
### 进入容器
```bash
docker exec -it mkdocs sh
```

View File

@@ -1,45 +1,45 @@
# 项目结构
## 目录说明
```
mkdocs/
├── docker-compose.yml # Docker Compose 配置文件
├── mkdocs.yml # MkDocs 配置文件
├── docs/ # 文档源文件目录
│ ├── index.md # 首页
│ ├── 开发指南/ # 开发相关文档
│ ├── DevOps平台/ # DevOps 工具文档
│ ├── 技术文档/ # 技术文档
│ └── 学习笔记/ # 学习笔记
└── site/ # 构建后的静态站点(可选)
```
## 配置文件说明
### mkdocs.yml
MkDocs 的主配置文件,包含:
- 站点信息(名称、描述、作者等)
- 主题配置
- 插件配置
- 导航结构
- Markdown 扩展
### docker-compose.yml
Docker Compose 配置文件,定义:
- 使用的镜像
- 端口映射
- 数据卷挂载
- 环境变量
- 健康检查
## 文档组织建议
1. **按主题分类**: 将相关文档放在同一目录下
2. **命名规范**: 使用有意义的文件名
3. **导航清晰**: 在 `mkdocs.yml` 中维护清晰的导航结构
4. **版本控制**: 建议使用 Git 管理文档
# 项目结构
## 目录说明
```
mkdocs/
├── docker-compose.yml # Docker Compose 配置文件
├── mkdocs.yml # MkDocs 配置文件
├── docs/ # 文档源文件目录
│ ├── index.md # 首页
│ ├── 开发指南/ # 开发相关文档
│ ├── DevOps平台/ # DevOps 工具文档
│ ├── 技术文档/ # 技术文档
│ └── 学习笔记/ # 学习笔记
└── site/ # 构建后的静态站点(可选)
```
## 配置文件说明
### mkdocs.yml
MkDocs 的主配置文件,包含:
- 站点信息(名称、描述、作者等)
- 主题配置
- 插件配置
- 导航结构
- Markdown 扩展
### docker-compose.yml
Docker Compose 配置文件,定义:
- 使用的镜像
- 端口映射
- 数据卷挂载
- 环境变量
- 健康检查
## 文档组织建议
1. **按主题分类**: 将相关文档放在同一目录下
2. **命名规范**: 使用有意义的文件名
3. **导航清晰**: 在 `mkdocs.yml` 中维护清晰的导航结构
4. **版本控制**: 建议使用 Git 管理文档

View File

@@ -1,78 +1,78 @@
# API 文档
## Gerrit API
### REST API
Gerrit 提供 REST API 用于程序化访问。
**基础 URL**: `http://101.43.95.130:8082/a/`
### 获取变更信息
```bash
curl http://101.43.95.130:8082/a/changes/12345
```
### 获取项目列表
```bash
curl http://101.43.95.130:8082/a/projects/
```
## Gitea API
### REST API
Gitea 提供完整的 REST API。
**基础 URL**: `http://101.43.95.130:3000/api/v1/`
### 获取用户信息
```bash
curl -H "Authorization: token YOUR_TOKEN" \
http://101.43.95.130:3000/api/v1/user
```
### 创建仓库
```bash
curl -X POST \
-H "Authorization: token YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"my-repo"}' \
http://101.43.95.130:3000/api/v1/user/repos
```
## MinIO API
### S3 兼容 API
MinIO 完全兼容 Amazon S3 API。
**端点**: `http://101.43.95.130:9000`
### 使用 AWS CLI
```bash
aws --endpoint-url http://101.43.95.130:9000 \
s3 ls s3://my-bucket
```
## Drone API
### REST API
Drone 提供 REST API 用于管理构建和仓库。
**基础 URL**: `http://101.43.95.130:3000/api/`
### 触发构建
```bash
curl -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
http://101.43.95.130:3000/api/repos/owner/name/builds
```
# API 文档
## Gerrit API
### REST API
Gerrit 提供 REST API 用于程序化访问。
**基础 URL**: `http://101.43.95.130:8082/a/`
### 获取变更信息
```bash
curl http://101.43.95.130:8082/a/changes/12345
```
### 获取项目列表
```bash
curl http://101.43.95.130:8082/a/projects/
```
## Gitea API
### REST API
Gitea 提供完整的 REST API。
**基础 URL**: `http://101.43.95.130:3000/api/v1/`
### 获取用户信息
```bash
curl -H "Authorization: token YOUR_TOKEN" \
http://101.43.95.130:3000/api/v1/user
```
### 创建仓库
```bash
curl -X POST \
-H "Authorization: token YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"my-repo"}' \
http://101.43.95.130:3000/api/v1/user/repos
```
## MinIO API
### S3 兼容 API
MinIO 完全兼容 Amazon S3 API。
**端点**: `http://101.43.95.130:9000`
### 使用 AWS CLI
```bash
aws --endpoint-url http://101.43.95.130:9000 \
s3 ls s3://my-bucket
```
## Drone API
### REST API
Drone 提供 REST API 用于管理构建和仓库。
**基础 URL**: `http://101.43.95.130:3000/api/`
### 触发构建
```bash
curl -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
http://101.43.95.130:3000/api/repos/owner/name/builds
```

View File

@@ -1,58 +1,58 @@
# 架构设计
## 系统架构
### 整体架构
```
┌─────────────┐
│ 用户 │
└──────┬──────┘
┌─────────────────────────────────────┐
│ DevOps 平台 │
├─────────────────────────────────────┤
│ Gerrit │ Gitea │ Drone CI │
│ (代码审查)│ (Git仓库)│ (CI/CD) │
├─────────────────────────────────────┤
│ MinIO │ Nexus │ MkDocs │
│ (对象存储)│ (Maven) │ (知识库) │
└─────────────────────────────────────┘
```
## 服务说明
### 代码管理
- **Gerrit**: 代码审查和协作
- **Gitea**: Git 仓库管理
### CI/CD
- **Drone CI**: 持续集成和部署
### 存储服务
- **MinIO**: 对象存储,用于构建产物和文件
- **Nexus**: Maven 仓库,用于依赖管理
### 文档服务
- **MkDocs**: 个人知识库和文档管理
## 技术栈
- **容器化**: Docker + Docker Compose
- **版本控制**: Git
- **CI/CD**: Drone
- **存储**: MinIO
- **文档**: MkDocs Material
## 部署架构
所有服务使用 Docker Compose 部署,便于管理和维护。
## 数据持久化
所有服务的数据都存储在 Docker 卷中,确保数据持久化。
# 架构设计
## 系统架构
### 整体架构
```
┌─────────────┐
│ 用户 │
└──────┬──────┘
┌─────────────────────────────────────┐
│ DevOps 平台 │
├─────────────────────────────────────┤
│ Gerrit │ Gitea │ Drone CI │
│ (代码审查)│ (Git仓库)│ (CI/CD) │
├─────────────────────────────────────┤
│ MinIO │ Nexus │ MkDocs │
│ (对象存储)│ (Maven) │ (知识库) │
└─────────────────────────────────────┘
```
## 服务说明
### 代码管理
- **Gerrit**: 代码审查和协作
- **Gitea**: Git 仓库管理
### CI/CD
- **Drone CI**: 持续集成和部署
### 存储服务
- **MinIO**: 对象存储,用于构建产物和文件
- **Nexus**: Maven 仓库,用于依赖管理
### 文档服务
- **MkDocs**: 个人知识库和文档管理
## 技术栈
- **容器化**: Docker + Docker Compose
- **版本控制**: Git
- **CI/CD**: Drone
- **存储**: MinIO
- **文档**: MkDocs Material
## 部署架构
所有服务使用 Docker Compose 部署,便于管理和维护。
## 数据持久化
所有服务的数据都存储在 Docker 卷中,确保数据持久化。

View File

@@ -1,160 +1,160 @@
# 部署文档
## 环境要求
- **操作系统**: Linux (CentOS 7+)
- **Docker**: 20.10+
- **Docker Compose**: 1.29+
- **内存**: 建议 4GB+
- **磁盘**: 建议 50GB+
## 部署步骤
### 1. 安装 Docker 和 Docker Compose
```bash
# 安装 Docker
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
### 2. 克隆或创建项目目录
```bash
mkdir -p /home/renjianbo/devops
cd /home/renjianbo/devops
```
### 3. 启动各个服务
#### Gerrit
```bash
cd gerrit
docker-compose up -d
```
#### Gitea
```bash
cd gitea
docker-compose up -d
```
#### MinIO
```bash
cd minio
docker-compose up -d
```
#### Nexus
```bash
cd nexus
docker-compose up -d
```
#### Drone CI
```bash
cd drone-ci
docker-compose up -d
```
#### MkDocs
```bash
cd mkdocs
docker-compose up -d
```
### 4. 验证部署
```bash
# 检查所有容器状态
docker ps
# 检查端口监听
netstat -tlnp | grep -E "8000|8082|3000|9000|8081"
```
## 配置说明
### 端口映射
- **Gerrit**: 8082 (HTTP), 29418 (SSH)
- **Gitea**: 3000 (HTTP), 222 (SSH)
- **MinIO**: 9000 (API), 9001 (Console)
- **Nexus**: 8081 (HTTP)
- **Drone CI**: 3000 (HTTP)
- **MkDocs**: 8000 (HTTP)
### 数据持久化
所有服务的数据存储在 Docker 卷中,确保数据持久化。
## 备份和恢复
### 备份
```bash
# 备份所有数据
cd /home/renjianbo/devops
./scripts/backup.sh
```
### 恢复
```bash
# 恢复数据
cd /home/renjianbo/devops
./scripts/restore.sh
```
## 监控和维护
### 查看日志
```bash
# 查看特定服务日志
cd /home/renjianbo/devops/<服务名>
docker-compose logs -f
```
### 更新服务
```bash
# 拉取最新镜像
docker-compose pull
# 重启服务
docker-compose up -d
```
## 故障排查
### 端口冲突
如果端口被占用,修改 `docker-compose.yml` 中的端口映射。
### 权限问题
确保数据目录有正确的权限:
```bash
sudo chown -R $USER:$USER /home/renjianbo/devops/*/data
```
### 容器无法启动
查看容器日志:
```bash
docker logs <容器名>
```
# 部署文档
## 环境要求
- **操作系统**: Linux (CentOS 7+)
- **Docker**: 20.10+
- **Docker Compose**: 1.29+
- **内存**: 建议 4GB+
- **磁盘**: 建议 50GB+
## 部署步骤
### 1. 安装 Docker 和 Docker Compose
```bash
# 安装 Docker
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
```
### 2. 克隆或创建项目目录
```bash
mkdir -p /home/renjianbo/devops
cd /home/renjianbo/devops
```
### 3. 启动各个服务
#### Gerrit
```bash
cd gerrit
docker-compose up -d
```
#### Gitea
```bash
cd gitea
docker-compose up -d
```
#### MinIO
```bash
cd minio
docker-compose up -d
```
#### Nexus
```bash
cd nexus
docker-compose up -d
```
#### Drone CI
```bash
cd drone-ci
docker-compose up -d
```
#### MkDocs
```bash
cd mkdocs
docker-compose up -d
```
### 4. 验证部署
```bash
# 检查所有容器状态
docker ps
# 检查端口监听
netstat -tlnp | grep -E "8000|8082|3000|9000|8081"
```
## 配置说明
### 端口映射
- **Gerrit**: 8082 (HTTP), 29418 (SSH)
- **Gitea**: 3000 (HTTP), 222 (SSH)
- **MinIO**: 9000 (API), 9001 (Console)
- **Nexus**: 8081 (HTTP)
- **Drone CI**: 3000 (HTTP)
- **MkDocs**: 8000 (HTTP)
### 数据持久化
所有服务的数据存储在 Docker 卷中,确保数据持久化。
## 备份和恢复
### 备份
```bash
# 备份所有数据
cd /home/renjianbo/devops
./scripts/backup.sh
```
### 恢复
```bash
# 恢复数据
cd /home/renjianbo/devops
./scripts/restore.sh
```
## 监控和维护
### 查看日志
```bash
# 查看特定服务日志
cd /home/renjianbo/devops/<服务名>
docker-compose logs -f
```
### 更新服务
```bash
# 拉取最新镜像
docker-compose pull
# 重启服务
docker-compose up -d
```
## 故障排查
### 端口冲突
如果端口被占用,修改 `docker-compose.yml` 中的端口映射。
### 权限问题
确保数据目录有正确的权限:
```bash
sudo chown -R $USER:$USER /home/renjianbo/devops/*/data
```
### 容器无法启动
查看容器日志:
```bash
docker logs <容器名>
```