Compare commits
1 Commits
62e74a0fb7
...
sgx
| Author | SHA1 | Date | |
|---|---|---|---|
| d484aa963a |
@@ -271,11 +271,11 @@ function sidebarCompiling(): DefaultTheme.SidebarItem[] {
|
||||
link: '/src/compile/why-distributed-compiling'
|
||||
},
|
||||
{
|
||||
text: 'CloudBuild分布式编译',
|
||||
text: 'CloudBuild',
|
||||
link: '/src/compile/cloudbuild'
|
||||
},
|
||||
{
|
||||
text: 'ShareBuild共享编译',
|
||||
text: 'ShareBuild',
|
||||
link: '/src/compile/sharebuild'
|
||||
},
|
||||
]
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
# CloudBuild私有云分布式编译系统
|
||||
|
||||
## CloudBuild的适用场景
|
||||
|
||||
对于大型开发团队,CloudBuild私有云分布式编译系统不仅可以通过分布式编译加速项目编译过程,而且有大量编译任务是相同的,分布式编译缓存可以避免重复编译,从而节约算力消耗,并进一步缩短项目编译时间。
|
||||
|
||||
## CloudBuild QuickStart
|
||||
|
||||
todo
|
||||
# 分布式编译系统CloudBuild
|
||||

|
||||
## 为什么需要分布式编译?
|
||||
- 大型项目过长的编译耗时将会给开发、测试和调试都带来延迟,所以缩短大型项目的编译时间的分布式编译系统有重要意义
|
||||
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间
|
||||
- 在实际开发时,同一个团队大量的编译任务时相同的。CloudBuild提供的编译缓存可以避免重复上传和重复编译,从而进一步加快编译效率
|
||||
|
||||
## 总体架构
|
||||
### 系统总体架构
|
||||

|
||||
- Ninja:客户端,该机器上需要保存有完整的待编译项目源代码。
|
||||
|
||||
@@ -1,24 +1,80 @@
|
||||
# 编译加速
|
||||
|
||||
|
||||
## 分布式编译
|
||||
## 分布式编译技术
|
||||
|
||||

|
||||
|
||||
- [为什么需要分布式编译?](/src/compile/why-distributed-compiling)
|
||||
- [CloudBuild私有云分布式编译系统](/src/compile/cloudbuild)
|
||||
- [ShareBuild分布式共享编译工作站](/src/compile/sharebuild)
|
||||
- [以AOSP14项目为例ShareBuild分布式编译详细配置方法](/src/compile/sharebuild-aosp14.md)
|
||||
- 大型项目过长的编译耗时将会给开发、测试和调试都带来延迟,所以缩短大型项目的编译时间的分布式编译系统有重要意义
|
||||
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间
|
||||
- 在实际开发时,同一个团队大量的编译任务时相同的。CloudBuild提供的编译缓存可以避免重复上传和重复编译,从而进一步加快编译效率
|
||||
|
||||
### CloudBuild
|
||||

|
||||
- Ninja:客户端,该机器上需要保存有完整的待编译项目源代码。
|
||||
- Action Cache:服务端缓存,主要保存编译任务的执行结果。
|
||||
- CAS Cache:服务端缓存,主要保存客户端上传的依赖文件,编译结果文件。
|
||||
- Scheduler:任务调度器,将编译任务id分发到各个编译节点。
|
||||
- Redis:主要存储具体的编译任务供编译节点领取执行,也可存储Action Cache和 CAS Cache中的内容加速编译。
|
||||
- MySQL:主要存储编译过程中的任务统计信息。
|
||||
- Executor:各个编译节点
|
||||
|
||||
## AI编译器
|
||||
### ShareBuild
|
||||

|
||||
CloudBuild主程序分为三个部分:Client、Server、Executor。
|
||||
- Client:运行在客户端,和用户对接,用于生成待执行的远程编译任务, 同时也作为本地编译节点执行本地任务。
|
||||
- Server:运行在主服务器,主要用于连接各个编译节点,以及 将客户端上传的编译任务调度到与其连接的各个编译节点上。
|
||||
- Executor:运行在编译节点,负责接收并执行编译任务,是编译任务真正执行的地方。
|
||||
|
||||
todo
|
||||
### 系统分层结构
|
||||

|
||||
|
||||
## PGO/LTO编译性能优化
|
||||
|
||||
todo
|
||||
## 运行原理与流程
|
||||
|
||||
### 分布式编译原理
|
||||

|
||||
|
||||
### CloudBuild客户端
|
||||
CloudBuild客户端基于Ninja改造,有下面这些优势
|
||||
- 兼容使用Ninja编译的项目
|
||||
- 使用远程执行的方式提高编译时并发度
|
||||
- 使用编译缓存减少需要编译的任务数量
|
||||
|
||||
### CloudBuild服务端
|
||||
- 使用远程执行的方法提高编译时并发度,实现了任务分发至远程节点同步执行
|
||||
- 使用分布式任务调度提高任务调度效率和计算节点资源利用率,避免集中式调度的任务阻塞问题
|
||||
- 使用编译缓存结合内容寻址存储技术减少网络传输量、避免重复上传与重复编译
|
||||
|
||||
### CloudBuild优势
|
||||
- 低成本:组成executor的机器不需要使用专门的高性能计算型机器,可使用多个平价的空闲机器
|
||||
- 高效:CloudBuild实现分布式编译的功能,相比单机大大提升并发度
|
||||
- 兼容Ninja:CloudBuild客户端基于Ninja改造,对于使用Ninja构建和可以转换为Ninja构建的项目不用额外修改构建清单
|
||||
|
||||
### CloudBuild执行流程
|
||||
- 客户端: 生成远程任务->生成任务依赖->发送任务与依赖
|
||||
- 服务端:检查任务缓存->检查依赖完整性->调度任务
|
||||
- 编译结点:还原文件目录->还原文件目录->返回编译结果
|
||||
|
||||
## AOSP和LLVM上的应用
|
||||
### LLVM上的应用效果
|
||||

|
||||
### AOSP上的应用效果
|
||||

|
||||
### CloudBuild硬件资源利用率
|
||||
4核CPU利用率:
|
||||

|
||||
8核CPU利用率:
|
||||

|
||||
16核CPU利用率:
|
||||

|
||||
|
||||
## CloudBuild使用方法
|
||||
### CloudBuild安装
|
||||

|
||||
CloudBuild项目地址:https://gitee.com/cloudbuild888/cloudbuild.git
|
||||
### CloudBuild分布式编译
|
||||

|
||||
LLVM项目地址:https://gitee.com/mirrors/LLVM.git
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,125 +0,0 @@
|
||||
# 以AOSP14项目为例ShareBuild分布式编译详细配置方法
|
||||
|
||||
## 编译环境准备
|
||||
|
||||
### 安装 Sharebuild
|
||||
|
||||
* 参与编译的同一个局域网内的A、B、C等所有节点上安装ninja2和sharebuild:
|
||||
```
|
||||
wget -c https://raw.githubusercontent.com/ninja-cloudbuild/ninja2/refs/heads/main/install.sh && chmod +x install.sh && sudo ./install.sh
|
||||
```
|
||||
|
||||
* 确保所有节点上均安装配置好了项目的编译环境,即所有节点上均能采用ninja成功单机编译项目。
|
||||
|
||||
### 安装AOSP项目编译环境
|
||||
|
||||
* 参与编译的同一个局域网内的A、B、C等所有节点上安装编译环境依赖:
|
||||
|
||||
```bash
|
||||
# 安装核心开发工具和库
|
||||
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
|
||||
|
||||
# 安装Android 14所需的Java环境
|
||||
sudo apt-get install openjdk-17-jdk
|
||||
|
||||
# 确保Python 3环境正确安装
|
||||
sudo apt-get install python3 python3-pip
|
||||
```
|
||||
|
||||
### 下载 AOSP 源码并执行单机编译
|
||||
|
||||
* 选择任一节点作为客户端节点,下载AOSP14源码:
|
||||
|
||||
```bash
|
||||
mkdir ~/bin && curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo && chmod a+x ~/bin/repo
|
||||
export PATH=~/bin:$PATH
|
||||
|
||||
repo init --depth=1 --partial-clone -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-14.0.0_r2
|
||||
repo sync -j16
|
||||
|
||||
cd android-14.0.0_r2
|
||||
source build/envsetup.sh # 初始化环境
|
||||
lunch aosp_arm-eng # 选择目标配置
|
||||
make # 执行单机编译,编译成功后可以看到:
|
||||
|
||||
```
|
||||
```
|
||||
[19:20:05.430], pending/wanted: 4, ready: 1, running: 0
|
||||
|
||||
|
||||
#### build completed successfully (02:26:51 (hh:mm:ss)) ####
|
||||
|
||||
|
||||
real 146m51.385s
|
||||
user 1327m35.812s
|
||||
sys 78m2.153s
|
||||
root@lab1:/home/lab1/android-14.0.0_r2#
|
||||
```
|
||||
|
||||
|
||||
|
||||
### 配置AOSP项目开启ShareBuild模式
|
||||
|
||||
* 将.sharebuild.yml 复制到 AOSP 根目录
|
||||
```
|
||||
cd android-14.0.0_r2
|
||||
cp /etc/ninja2/aosp14/.sharebuild.yml ./
|
||||
```
|
||||
|
||||
* 进入AOSP14项目根目录,替换 AOSP 内部 ninja 为 android_ninja
|
||||
```
|
||||
cp /usr/bin/android_ninja prebuilts/build-tools/linux-x86/bin/ninja
|
||||
```
|
||||
|
||||
* 开启ShareBuild模式,然后进行分布式编译。
|
||||
项目根目录下创建ninja2.conf 文件如下即可开启ShareBuild模式:
|
||||
```
|
||||
sharebuid:true
|
||||
```
|
||||
|
||||
* 在项目根目录下执行分布式编译
|
||||
|
||||
```bash
|
||||
su # 切换到 root 关闭沙箱
|
||||
source build/envsetup.sh # 初始化环境
|
||||
lunch aosp_arm-eng # 选择目标配置
|
||||
make # 执行分布式编译,编译成功后可以看到:
|
||||
```
|
||||
* 客户端节点:
|
||||
```
|
||||
[ShareBuild] Command will be executed REMOTELY
|
||||
[ShareBuild] ----------------------------------------
|
||||
[100% 130093/130093] Target vbmeta image: out/target/product/generic/vbmeta.img
|
||||
stdout: , stderr:
|
||||
|
||||
[16:34:34.063], pending/wanted: 5, ready: 2, running: 0
|
||||
|
||||
|
||||
#### build completed successfully (01:42:17 (hh:mm:ss)) ####
|
||||
|
||||
|
||||
real 102m16.362s
|
||||
user 1074m56.673s
|
||||
sys 64m22.863s
|
||||
root@lab1:/home/lab1/android-14.0.0_r2#
|
||||
```
|
||||
* 服务端节点sharebuild部分日志:
|
||||
```
|
||||
{"severity":"INFO","timestamp":"2025-11-24T16:34:38.988708686+08:00","caller":"service/sharebuild_proxy.go:448","message":"Successfully cl
|
||||
eared environment on executor","component":"proxy","executor":"id:\"12D3KoowBsw2Lrs7FwKkmgrmRt3MYQgNzLa82vjK8tve8gQ95KTk\"ip:\"192.168.1.
|
||||
12\" port:39077 "}
|
||||
{"severity":"INFO","timestamp":"2025-11-24T16:34:38.99059505+08:00","caller":"runner/project_runner.go:463","message":"ProjectRunner free.
|
||||
.. ","component":"runner", "ReceivedtaskCount":0,"PreemptedTaskCount":33291}
|
||||
[worker-17]Stopping worker
|
||||
[worker-24]Stopping worker
|
||||
```
|
||||
|
||||
```
|
||||
make clean # 清除编译目标文件
|
||||
rm -r out # 清除编译产物
|
||||
```
|
||||
## 版权声明
|
||||
|
||||
Copyright @ Mengning Software
|
||||
|
||||
梦宁软件(江苏)有限公司 版权所有
|
||||
@@ -1,74 +1,79 @@
|
||||
# ShareBuild分布式共享编译工作站
|
||||
|
||||
## ShareBuild的适用场景
|
||||
|
||||
在同一局域网内工作的小型团队,ShareBuild以P2P共享架构将空闲算力贡献给团队其他成员,从而为每个团队成员提供编译加速效果。
|
||||
|
||||
## ShareBuild QuickStart
|
||||
|
||||
* 同一个局域网内的A、B、C等所有节点上安装ninja2:
|
||||
|
||||
```
|
||||
wget -c https://raw.githubusercontent.com/ninja-cloudbuild/ninja2/refs/heads/main/install.sh && chmod +x install.sh && sudo ./install.sh
|
||||
```
|
||||
|
||||
* 启用ShareBuild的前置要求
|
||||
|
||||
1. 所有节点上均安装配置好了项目的编译环境,即所有节点上均能采用ninja成功单机编译项目。
|
||||
<!--
|
||||
|
||||
2. 选择任一节点上作为项目开发环境,项目中使用.devcontainer/devcontainer.json 配置了image镜像(示例如下),依次镜像创建的开发容器中能采用ninja成功单机编译项目。
|
||||
|
||||
```
|
||||
{
|
||||
"name": "DevContainer",
|
||||
"image": "devstar.cn/devstar/DevContainer:latest" # 仅作示例,务必使用您已安装配置好项目编译环境的容器镜像!
|
||||
}
|
||||
```
|
||||
> 注意:以上两种方式二选一即可,第2种方式省掉了在其他节点上安装配置项目编译环境,但是首次ShareBuild模式分布式编译时其他节点会自动下载项目编译环境的容器镜像。
|
||||
-->
|
||||
|
||||
* 选择任一节点上作为项目开发环境,开启ShareBuild模式,然后进行分布式编译。
|
||||
|
||||
项目根目录下创建ninja2.conf 文件如下即可开启ShareBuild模式:
|
||||
```
|
||||
sharebuid:true
|
||||
```
|
||||
这时使用ninja编译将自动进入ShareBuild模式分布式编译项目。
|
||||
|
||||
> 如果直接使用ninja命令编译项目,也可以加上-s参数表示启用ShareBuild模式,示例如下:
|
||||
```
|
||||
ninja -s -r `realpath ../` #启动分布式编译,注意-r 指定项目根目录
|
||||
ninja -t clean #清除编译产物
|
||||
````
|
||||
|
||||
* 对一些特殊项目的补充说明
|
||||
|
||||
除以上常规的ShareBuild配置外,对于一些特殊项目需要做一些额外的配置,补充说明如下:
|
||||
|
||||
## 使用ShareBuild编译Android开源项目(AOSP)
|
||||
|
||||
除按照以上方法准备好编译环境和开启ShareBuild模式外,以AOSP14项目为例([详细的配置方法](/src/compile/sharebuild-aosp14.md)),还需要替换ninja和准备.sharebuild.yml来过滤掉一些无法远程编译的命令,具体操作如下:
|
||||
|
||||
```
|
||||
cp /usr/bin/android_ninja prebuilts/build-tools/linux-x86/bin/ninja
|
||||
cp /etc/ninja2/aosp14/.sharebuild.yml ./
|
||||
```
|
||||
|
||||
然后就可以单机编译一样使用make命令来分布式编译Android开源项目(AOSP)。
|
||||
|
||||
<!--
|
||||
## 使用ShareBuild编译鸿蒙开源项目(OpenHarmony)
|
||||
|
||||
todo
|
||||
-->
|
||||
|
||||
## 参考链接
|
||||
|
||||
* [以AOSP14项目为例ShareBuild分布式编译详细配置方法](/src/compile/sharebuild-aosp14.md)
|
||||
|
||||
## 版权声明
|
||||
|
||||
Copyright @ Mengning Software
|
||||
|
||||
梦宁软件(江苏)有限公司 版权所有
|
||||
# 分布式编译系统ShareBuild
|
||||

|
||||
## 为什么需要分布式编译?
|
||||
- 大型项目过长的编译耗时将会给开发、测试和调试都带来延迟,所以缩短大型项目的编译时间的分布式编译系统有重要意义
|
||||
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间
|
||||
- 在实际开发时,同一个团队大量的编译任务时相同的。CloudBuild提供的编译缓存可以避免重复上传和重复编译,从而进一步加快编译效率
|
||||
|
||||
## 总体架构
|
||||
### 系统总体架构
|
||||

|
||||
- Ninja:客户端,该机器上需要保存有完整的待编译项目源代码。
|
||||
- Action Cache:服务端缓存,主要保存编译任务的执行结果。
|
||||
- CAS Cache:服务端缓存,主要保存客户端上传的依赖文件,编译结果文件。
|
||||
- Scheduler:任务调度器,将编译任务id分发到各个编译节点。
|
||||
- Redis:主要存储具体的编译任务供编译节点领取执行,也可存储Action Cache和 CAS Cache中的内容加速编译。
|
||||
- MySQL:主要存储编译过程中的任务统计信息。
|
||||
- Executor:各个编译节点
|
||||
|
||||
### 部署示意图
|
||||

|
||||
CloudBuild主程序分为三个部分:Client、Server、Executor。
|
||||
- Client:运行在客户端,和用户对接,用于生成待执行的远程编译任务, 同时也作为本地编译节点执行本地任务。
|
||||
- Server:运行在主服务器,主要用于连接各个编译节点,以及 将客户端上传的编译任务调度到与其连接的各个编译节点上。
|
||||
- Executor:运行在编译节点,负责接收并执行编译任务,是编译任务真正执行的地方。
|
||||
|
||||
### 系统分层结构
|
||||

|
||||
|
||||
## 运行原理与流程
|
||||
|
||||
### 分布式编译原理
|
||||

|
||||
|
||||
### CloudBuild客户端
|
||||
CloudBuild客户端基于Ninja改造,有下面这些优势
|
||||
- 兼容使用Ninja编译的项目
|
||||
- 使用远程执行的方式提高编译时并发度
|
||||
- 使用编译缓存减少需要编译的任务数量
|
||||
|
||||
### CloudBuild服务端
|
||||
- 使用远程执行的方法提高编译时并发度,实现了任务分发至远程节点同步执行
|
||||
- 使用分布式任务调度提高任务调度效率和计算节点资源利用率,避免集中式调度的任务阻塞问题
|
||||
- 使用编译缓存结合内容寻址存储技术减少网络传输量、避免重复上传与重复编译
|
||||
|
||||
### CloudBuild优势
|
||||
- 低成本:组成executor的机器不需要使用专门的高性能计算型机器,可使用多个平价的空闲机器
|
||||
- 高效:CloudBuild实现分布式编译的功能,相比单机大大提升并发度
|
||||
- 兼容Ninja:CloudBuild客户端基于Ninja改造,对于使用Ninja构建和可以转换为Ninja构建的项目不用额外修改构建清单
|
||||
|
||||
### CloudBuild执行流程
|
||||
- 客户端: 生成远程任务->生成任务依赖->发送任务与依赖
|
||||
- 服务端:检查任务缓存->检查依赖完整性->调度任务
|
||||
- 编译结点:还原文件目录->还原文件目录->返回编译结果
|
||||
|
||||
## AOSP和LLVM上的应用
|
||||
### LLVM上的应用效果
|
||||

|
||||
### AOSP上的应用效果
|
||||

|
||||
### CloudBuild硬件资源利用率
|
||||
4核CPU利用率:
|
||||

|
||||
8核CPU利用率:
|
||||

|
||||
16核CPU利用率:
|
||||

|
||||
|
||||
## CloudBuild使用方法
|
||||
### CloudBuild安装
|
||||

|
||||
CloudBuild项目地址:https://gitee.com/cloudbuild888/cloudbuild.git
|
||||
### CloudBuild分布式编译
|
||||

|
||||
LLVM项目地址:https://gitee.com/mirrors/LLVM.git
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,76 @@
|
||||
# 为什么需要分布式编译?
|
||||
|
||||
大型项目过长的编译耗时给开发、调试、测试和CI/CD都带来延迟,缩短大型项目的编译时间是分布式编译系统的主要目标。
|
||||
- 大型项目过长的编译耗时将会给开发、测试和调试都带来延迟,所以缩短大型项目的编译时间的分布式编译系统有重要意义
|
||||
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间
|
||||
- 在实际开发时,同一个团队大量的编译任务时相同的。CloudBuild提供的编译缓存可以避免重复上传和重复编译,从而进一步加快编译效率
|
||||
|
||||
- 使用分布式编译系统编译项目可以利用计算机集群提高编译效率,缩短项目编译时间。
|
||||
- 在实际开发时,同一个团队有大量编译任务是相同的,分布式编译缓存可以避免重复编译,从而节约算力消耗并进一步缩短项目编译时间。
|
||||
## 总体架构
|
||||
### 系统总体架构
|
||||

|
||||
- Ninja:客户端,该机器上需要保存有完整的待编译项目源代码。
|
||||
- Action Cache:服务端缓存,主要保存编译任务的执行结果。
|
||||
- CAS Cache:服务端缓存,主要保存客户端上传的依赖文件,编译结果文件。
|
||||
- Scheduler:任务调度器,将编译任务id分发到各个编译节点。
|
||||
- Redis:主要存储具体的编译任务供编译节点领取执行,也可存储Action Cache和 CAS Cache中的内容加速编译。
|
||||
- MySQL:主要存储编译过程中的任务统计信息。
|
||||
- Executor:各个编译节点
|
||||
|
||||

|
||||
### 部署示意图
|
||||

|
||||
CloudBuild主程序分为三个部分:Client、Server、Executor。
|
||||
- Client:运行在客户端,和用户对接,用于生成待执行的远程编译任务, 同时也作为本地编译节点执行本地任务。
|
||||
- Server:运行在主服务器,主要用于连接各个编译节点,以及 将客户端上传的编译任务调度到与其连接的各个编译节点上。
|
||||
- Executor:运行在编译节点,负责接收并执行编译任务,是编译任务真正执行的地方。
|
||||
|
||||
### 系统分层结构
|
||||

|
||||
|
||||
## 运行原理与流程
|
||||
|
||||
### 分布式编译原理
|
||||

|
||||
|
||||
### CloudBuild客户端
|
||||
CloudBuild客户端基于Ninja改造,有下面这些优势
|
||||
- 兼容使用Ninja编译的项目
|
||||
- 使用远程执行的方式提高编译时并发度
|
||||
- 使用编译缓存减少需要编译的任务数量
|
||||
|
||||
### CloudBuild服务端
|
||||
- 使用远程执行的方法提高编译时并发度,实现了任务分发至远程节点同步执行
|
||||
- 使用分布式任务调度提高任务调度效率和计算节点资源利用率,避免集中式调度的任务阻塞问题
|
||||
- 使用编译缓存结合内容寻址存储技术减少网络传输量、避免重复上传与重复编译
|
||||
|
||||
### CloudBuild优势
|
||||
- 低成本:组成executor的机器不需要使用专门的高性能计算型机器,可使用多个平价的空闲机器
|
||||
- 高效:CloudBuild实现分布式编译的功能,相比单机大大提升并发度
|
||||
- 兼容Ninja:CloudBuild客户端基于Ninja改造,对于使用Ninja构建和可以转换为Ninja构建的项目不用额外修改构建清单
|
||||
|
||||
### CloudBuild执行流程
|
||||
- 客户端: 生成远程任务->生成任务依赖->发送任务与依赖
|
||||
- 服务端:检查任务缓存->检查依赖完整性->调度任务
|
||||
- 编译结点:还原文件目录->还原文件目录->返回编译结果
|
||||
|
||||
## AOSP和LLVM上的应用
|
||||
### LLVM上的应用效果
|
||||

|
||||
### AOSP上的应用效果
|
||||

|
||||
### CloudBuild硬件资源利用率
|
||||
4核CPU利用率:
|
||||

|
||||
8核CPU利用率:
|
||||

|
||||
16核CPU利用率:
|
||||

|
||||
|
||||
## CloudBuild使用方法
|
||||
### CloudBuild安装
|
||||

|
||||
CloudBuild项目地址:https://gitee.com/cloudbuild888/cloudbuild.git
|
||||
### CloudBuild分布式编译
|
||||

|
||||
LLVM项目地址:https://gitee.com/mirrors/LLVM.git
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
|
||||
|
||||
# DevStar AI+ DevOps
|
||||
|
||||
DevStar AI+ DevOps 是一个完整的AI驱动研发平台解决方案,通过集成 DevStar平台、代码大语言模型、Gitea MCP Server和 AI Code Tools(Cursor、Claude Code、iFlow等),为开发者提供智能化研发支撑体系。
|
||||
@@ -17,8 +19,7 @@ sudo devstar start
|
||||
|
||||
### 二、Ollama私有部署代码大模型
|
||||
|
||||
> 如您使用第三方大模型开放API可以跳过这一部分。
|
||||
> 比如从[智谱AI开放平台](https://bigmodel.cn/usercenter/proj-mgmt/apikeys) 上注册申请并添加新的API Key,以Claude Code为例URL使用https://open.bigmodel.cn/api/anthropic
|
||||
> 如您使用第三方API及Token,比如从http://xxx 注册申请,可以跳过这一部分。
|
||||
|
||||
Ubuntu-20.04下完成安装:
|
||||
```
|
||||
@@ -95,7 +96,6 @@ DevStar代码托管平台中项目设置、用户设置和后台管理中都可
|
||||
|
||||
```
|
||||
{
|
||||
"mcp": {
|
||||
"inputs": [
|
||||
{
|
||||
"type": "promptString",
|
||||
@@ -118,20 +118,26 @@ DevStar代码托管平台中项目设置、用户设置和后台管理中都可
|
||||
"docker.gitea.com/gitea-mcp-server"
|
||||
],
|
||||
"env": {
|
||||
"GITEA_HOST": "--host http://172.16.94.26",
|
||||
"GITEA_HOST": "http://172.16.94.26",
|
||||
"GITEA_ACCESS_TOKEN": "${input:gitea_token}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### 配置AI IDE/CLI使用私有大模型及MCP Server
|
||||
|
||||
* Copilot,简要文字描述,不要上太多图,可以提供官方配置链接
|
||||
* Cursor
|
||||
* Continue
|
||||
* Copilot,点击提示框里的“管理模型”,选择ollama;将mcp配置添加到 .vscode/mcp.json下
|
||||
|
||||
* Cursor,不支持私有模型,需要本地部署后做代理;点击Cursor Settings -> Tools & MCP
|
||||
|
||||
-> New MCP Server 将mcp配置添加到mcp.json中
|
||||
|
||||
* Continue,点击Add Chat model,Provider选择ollama;设置->Tools->MCP Servers配置yaml文件
|
||||
|
||||
也可以将cursor的json文件放到.continue/mcpServers/mcp.json中
|
||||
|
||||
* ...
|
||||
|
||||
## 🚀 DevStar AI+ DevOps演示
|
||||
@@ -142,20 +148,33 @@ DevStar代码托管平台中项目设置、用户设置和后台管理中都可
|
||||
|
||||
使用ai-develops项目模板创建项目
|
||||
|
||||
todo
|
||||

|
||||
|
||||
配置mcp.json的GITEA_HOST和GITEA_ACCESS_TOKEN
|
||||
|
||||

|
||||
|
||||
### AI生成代码
|
||||
|
||||
todo
|
||||

|
||||
|
||||

|
||||
|
||||
### 提交PR
|
||||
|
||||
todo
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### AI Code Review
|
||||
|
||||
todo
|
||||
设置工作流相关变量
|
||||
|
||||
### 合并PR
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
todo
|
||||
BIN
src/devstar/code-review.png
Normal file
|
After Width: | Height: | Size: 65 KiB |
BIN
src/devstar/code.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
src/devstar/feature-2.png
Normal file
|
After Width: | Height: | Size: 121 KiB |
BIN
src/devstar/feature.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
src/devstar/issue.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
src/devstar/mcp.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
src/devstar/ollama-llm.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/devstar/port.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
src/devstar/pr.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
BIN
src/devstar/review.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
src/devstar/template.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
src/devstar/vars.png
Normal file
|
After Width: | Height: | Size: 65 KiB |