mirror of
https://hubproxy.babadafafafafa.cn/https://github.com/yunionio/cloudpods.git
synced 2026-09-20 08:03:53 +08:00
chore: replace issues-helper with gh CLI and refresh README (#25687)
Migrate issue label/close workflows to native gh scripts with explicit permissions, and update README cloud/AI coverage plus typo fixes.
This commit is contained in:
42
.github/workflows/issue-check-inactive.yml
vendored
42
.github/workflows/issue-check-inactive.yml
vendored
@@ -4,14 +4,42 @@ on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
issue-check-inactive:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: check-inactive
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'check-inactive'
|
||||
inactive-label: 'stale'
|
||||
inactive-day: 30
|
||||
exclude-labels: 'announcement'
|
||||
- name: Label inactive issues as stale
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
INACTIVE_DAY: "30"
|
||||
INACTIVE_LABEL: "stale"
|
||||
EXCLUDE_LABEL: "announcement"
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cutoff="$(date -u -d "${INACTIVE_DAY} days ago" +%Y-%m-%dT%H:%M:%SZ)"
|
||||
|
||||
gh issue list \
|
||||
--repo "${{ github.repository }}" \
|
||||
--state open \
|
||||
--limit 1000 \
|
||||
--json number,labels,updatedAt \
|
||||
| jq -c \
|
||||
--arg cutoff "$cutoff" \
|
||||
--arg inactive "$INACTIVE_LABEL" \
|
||||
--arg exclude "$EXCLUDE_LABEL" \
|
||||
'
|
||||
.[]
|
||||
| select(.updatedAt < $cutoff)
|
||||
| select([.labels[].name] | index($exclude) | not)
|
||||
| select([.labels[].name] | index($inactive) | not)
|
||||
' \
|
||||
| while IFS= read -r issue; do
|
||||
number="$(echo "$issue" | jq -r .number)"
|
||||
echo "Marking issue #${number} as ${INACTIVE_LABEL}"
|
||||
gh issue edit "$number" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--add-label "$INACTIVE_LABEL"
|
||||
done
|
||||
|
||||
38
.github/workflows/issue-close-require.yml
vendored
38
.github/workflows/issue-close-require.yml
vendored
@@ -4,17 +4,41 @@ on:
|
||||
schedule:
|
||||
- cron: "0 1 * * *"
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
issue-close-require:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: need reproduce
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'close-issues'
|
||||
labels: 'stale,state/awaiting user feedback'
|
||||
inactive-day: 7
|
||||
body: |
|
||||
- name: Close inactive issues awaiting user feedback
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
INACTIVE_DAY: "7"
|
||||
run: |
|
||||
set -euo pipefail
|
||||
cutoff="$(date -u -d "${INACTIVE_DAY} days ago" +%Y-%m-%dT%H:%M:%SZ)"
|
||||
body="$(cat <<'EOF'
|
||||
If you do not provide feedback for more than 37 days, we will close the issue and you can either reopen it or submit a new issue.
|
||||
|
||||
您超过 37 天未反馈信息,我们将关闭该 issue,如有需求您可以重新打开或者提交新的 issue。
|
||||
EOF
|
||||
)"
|
||||
# Trim leading indentation from heredoc lines for a cleaner comment.
|
||||
body="$(printf '%s\n' "$body" | sed 's/^[[:space:]]*//')"
|
||||
|
||||
gh issue list \
|
||||
--repo "${{ github.repository }}" \
|
||||
--state open \
|
||||
--label "stale" \
|
||||
--label "state/awaiting user feedback" \
|
||||
--limit 1000 \
|
||||
--json number,updatedAt \
|
||||
| jq -c --arg cutoff "$cutoff" '.[] | select(.updatedAt < $cutoff)' \
|
||||
| while IFS= read -r issue; do
|
||||
number="$(echo "$issue" | jq -r .number)"
|
||||
echo "Closing issue #${number}"
|
||||
gh issue close "$number" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--comment "$body"
|
||||
done
|
||||
|
||||
16
.github/workflows/issue-close.yml
vendored
16
.github/workflows/issue-close.yml
vendored
@@ -4,13 +4,19 @@ on:
|
||||
issues:
|
||||
types: [closed]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
issue-closed-remove-labels:
|
||||
runs-on: ubuntu-latest
|
||||
if: "!contains(github.event.issue.labels.*.name, 'stale')"
|
||||
steps:
|
||||
- name: Remove statle labels when issue that hasn't stale label is closed
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'remove-labels'
|
||||
labels: 'state/awaiting processing,state/awaiting user feedback'
|
||||
- name: Remove state labels when issue that hasn't stale label is closed
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--remove-label "state/awaiting processing" \
|
||||
--remove-label "state/awaiting user feedback" || true
|
||||
|
||||
47
.github/workflows/issue-comment.yml
vendored
47
.github/workflows/issue-comment.yml
vendored
@@ -4,35 +4,48 @@ on:
|
||||
|
||||
name: Add issues workflow labels
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
add-label-if-is-author:
|
||||
runs-on: ubuntu-latest
|
||||
if: (github.event.issue.user.id == github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open')
|
||||
steps:
|
||||
- name: Add require handle label
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'add-labels'
|
||||
labels: 'state/awaiting processing'
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--add-label "state/awaiting processing"
|
||||
|
||||
- name: Remove require reply label
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'remove-labels'
|
||||
labels: 'state/awaiting user feedback,stale'
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--remove-label "state/awaiting user feedback" \
|
||||
--remove-label "stale" || true
|
||||
|
||||
add-label-if-not-author:
|
||||
runs-on: ubuntu-latest
|
||||
if: (github.event.issue.user.id != github.event.comment.user.id) && !github.event.issue.pull_request && (github.event.issue.state == 'open') && (!contains(github.event.comment.body, '/keep-state'))
|
||||
steps:
|
||||
- name: Add require replay label
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'add-labels'
|
||||
labels: 'state/awaiting user feedback'
|
||||
- name: Add require reply label
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--add-label "state/awaiting user feedback"
|
||||
|
||||
- name: Remove require handle label
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'remove-labels'
|
||||
labels: 'state/awaiting processing,stale'
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--remove-label "state/awaiting processing" \
|
||||
--remove-label "stale" || true
|
||||
|
||||
26
.github/workflows/issue-open.yml
vendored
26
.github/workflows/issue-open.yml
vendored
@@ -4,22 +4,30 @@ on:
|
||||
issues:
|
||||
types: [opened, reopened]
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
|
||||
jobs:
|
||||
issue-open-add-labels:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ !github.event.issue.pull_request }}
|
||||
steps:
|
||||
- name: Add labels
|
||||
uses: actions-cool/issues-helper@v2
|
||||
if: ${{ !github.event.comment.pull_request.pull_request }}
|
||||
with:
|
||||
actions: 'add-labels'
|
||||
labels: 'state/awaiting processing'
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--add-label "state/awaiting processing"
|
||||
|
||||
- name: Remove require reply label
|
||||
uses: actions-cool/issues-helper@v2
|
||||
with:
|
||||
actions: 'remove-labels'
|
||||
labels: 'state/awaiting user feedback,stale'
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh issue edit "${{ github.event.issue.number }}" \
|
||||
--repo "${{ github.repository }}" \
|
||||
--remove-label "state/awaiting user feedback" \
|
||||
--remove-label "stale" || true
|
||||
|
||||
notify-author-comment:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
43
README-CN.md
43
README-CN.md
@@ -20,7 +20,7 @@ Cloudpods还提供了 **AI 云**,一个面向大语言模型(LLM)推理与
|
||||
* 将VMware vSphere虚拟化集群转换为一个可以自服务的私有云平台
|
||||
* 在混合云的场景,能够在一个界面访问私有云和公有云
|
||||
* 通过一个集中的入口访问分布在多个公有云平台上的多个账号
|
||||
* 当前只使用一个云公有云账号但希望将来使用多云的用户
|
||||
* 当前只使用一个公有云账号但希望将来使用多云的用户
|
||||
* 需要部署和管理 LLM 推理服务及 AI 容器应用,并需要 GPU 调度支持的用户
|
||||
|
||||
## 功能
|
||||
@@ -29,15 +29,15 @@ Cloudpods还提供了 **AI 云**,一个面向大语言模型(LLM)推理与
|
||||
|
||||
### AI 云
|
||||
|
||||
* **AI 推理服务**:部署和管理 LLM 推理实例,支持 GPU 调度、模型挂载与推理服务地址分配。
|
||||
* **AI 推理服务**:部署和管理 LLM 推理实例(支持 Ollama、vLLM、SGLang 等),支持 GPU 调度、模型挂载与推理服务地址分配。
|
||||
* **AI 应用管理**:一站式部署 LLM 应用编排、智能体助手、图像生成等 AI 容器应用。
|
||||
* **模型库**:统一管理模型来源、版本与缓存,支持多实例复用、离线分发,避免重复下载。
|
||||
* **模板与镜像**:通过模板定义 CPU/内存/GPU 等资源规格,通过镜像管理容器运行环境,实现标准化交付。
|
||||
* **GPU 运维**:GPU 设备自动探测与注册,支持 NVIDIA/CUDA 环境的统一配置与管理。
|
||||
|
||||
支持的 AI 应用:
|
||||
* AI 推理:Ollama
|
||||
* AI 应用:OpenClaw、Dify、ComfyUI
|
||||
支持的 AI 工作负载:
|
||||
* AI 推理:Ollama、vLLM、SGLang
|
||||
* AI 应用:OpenClaw、Dify、ComfyUI、Hermes Agent
|
||||
|
||||
### 支持的云平台
|
||||
|
||||
@@ -52,29 +52,38 @@ Cloudpods还提供了 **AI 云**,一个面向大语言模型(LLM)推理与
|
||||
* 天翼云
|
||||
* 移动云
|
||||
* 京东云
|
||||
* 火山引擎
|
||||
* 百度云
|
||||
* 金山云
|
||||
* 青云
|
||||
* Oracle Cloud
|
||||
* 联通云
|
||||
* 私有云:
|
||||
* OpenStack
|
||||
* ZStack
|
||||
* Alibaba Cloud Aspara (阿里飞天)
|
||||
* Alibaba Cloud Apsara (阿里飞天)
|
||||
* Huawei HCSO (华为HCSO)
|
||||
* Nutanix
|
||||
* BingoCloud
|
||||
* OceanBase
|
||||
* 本地基础设施资源:
|
||||
* 基于 KVM 实现的轻量级私有云
|
||||
* VMWare vSphere vCenter/ESXi
|
||||
* Baremetals (IPMI, Redfish API)
|
||||
* Object storages (Minio, Ceph, XSky)
|
||||
* VMware vSphere vCenter/ESXi
|
||||
* Proxmox VE
|
||||
* 裸金属 (IPMI, Redfish API)
|
||||
* 对象存储 (Minio, Ceph, XSky)
|
||||
* NAS (Ceph)
|
||||
|
||||
### 支持的云资源
|
||||
|
||||
* Servers: instances, disks, network interfaces, networks, vpcs, storages, hosts, wires, snapshots, snapshot policies, security groups, elastic IPs, SSH keypairs, images
|
||||
* Load Balancers: instances, listeners, backend groups, backends, TLS certificates, ACLs
|
||||
* Object Storage: buckets, objects
|
||||
* NAS: file_systems, access_groups, mount_targets
|
||||
* RDS: instances, accounts, backups, databases, parameters, privileges
|
||||
* Elastic Cache: instances, accounts, backups, parameters
|
||||
* DNS: DNS zones, DNS records
|
||||
* VPC: VPCs, VPC peering, inter-VPC network, NAT gateway, DNAT/SNAT rules, route tables, route entries
|
||||
* 服务器:实例、磁盘、网卡、网络、VPC、存储、宿主机、二层网络、快照、快照策略、安全组、弹性 IP、SSH 密钥对、镜像
|
||||
* 负载均衡:实例、监听、后端服务器组、后端服务器、TLS 证书、访问控制
|
||||
* 对象存储:存储桶、对象
|
||||
* NAS:文件系统、权限组、挂载点
|
||||
* RDS:实例、账号、备份、数据库、参数、权限
|
||||
* 弹性缓存:实例、账号、备份、参数
|
||||
* DNS:DNS 区域、DNS 记录
|
||||
* VPC:VPC、VPC 对等连接、跨 VPC 网络、NAT 网关、DNAT/SNAT 规则、路由表、路由条目
|
||||
|
||||
## 安装部署
|
||||
|
||||
|
||||
26
README.md
26
README.md
@@ -19,7 +19,7 @@ Cloudpods also provides **AI Cloud**, a unified management platform for large la
|
||||
* Those who need a compact and fully automatic baremetal lift-cycle management solution
|
||||
* Those who want to turn a VMware vSphere virtualization cluster into a private cloud
|
||||
* Those who need a cohesive view of both public and private cloud in a hybrid cloud setup
|
||||
* Those who need a centric portal to access multiple acccounts from multiple public clouds
|
||||
* Those who need a centric portal to access multiple accounts from multiple public clouds
|
||||
* Those who is currently using a single cloud account, but will not lose the possibility to adopt multicloud strategy
|
||||
* Those who need to deploy and manage LLM inference services and AI container applications with GPU support
|
||||
|
||||
@@ -29,15 +29,15 @@ See [Introduction](https://www.cloudpods.org/docs/introduction/) for details.
|
||||
|
||||
### AI Cloud
|
||||
|
||||
* **AI Inference Services**: Deploy and manage LLM inference instances with GPU scheduling, model mounting, and inference service address allocation.
|
||||
* **AI Inference Services**: Deploy and manage LLM inference instances (Ollama, vLLM, SGLang, and more) with GPU scheduling, model mounting, and inference service address allocation.
|
||||
* **AI Application Management**: One-stop deployment of LLM application orchestration, agent assistants, image generation, and other AI container applications.
|
||||
* **Model Library**: Unified management of model sources, versions, and caches, supporting multi-instance reuse and offline distribution.
|
||||
* **Templates and Images**: Define resource specifications (CPU/memory/GPU) through templates, manage container runtime environments through images.
|
||||
* **GPU Operations**: Automatic GPU device detection and registration, unified NVIDIA/CUDA environment configuration and management.
|
||||
|
||||
Supported AI applications:
|
||||
* AI Inference: Ollama
|
||||
* AI Applications: OpenClaw, Dify, ComfyUI
|
||||
Supported AI workloads:
|
||||
* AI Inference: Ollama, vLLM, SGLang
|
||||
* AI Applications: OpenClaw, Dify, ComfyUI, Hermes Agent
|
||||
|
||||
### Supported cloud providers
|
||||
|
||||
@@ -52,15 +52,24 @@ Supported AI applications:
|
||||
* Ctyun (China Telecom)
|
||||
* ECloud (China Mobile)
|
||||
* JDCloud
|
||||
* Volcengine
|
||||
* Baidu Cloud
|
||||
* Kingsoft Cloud
|
||||
* QingCloud
|
||||
* Oracle Cloud
|
||||
* China Unicom Cloud
|
||||
* Private Clouds:
|
||||
* OpenStack
|
||||
* ZStack
|
||||
* Alibaba Cloud Aspara
|
||||
* Alibaba Cloud Apsara
|
||||
* Huawei HCSO
|
||||
* Nutanix
|
||||
* BingoCloud
|
||||
* OceanBase
|
||||
* On-premise resources:
|
||||
* Lightweight private cloud built on KVM
|
||||
* VMWare vSphere vCenter/ESXi
|
||||
* VMware vSphere vCenter/ESXi
|
||||
* Proxmox VE
|
||||
* Baremetals (IPMI, Redfish API)
|
||||
* Object storages (Minio, Ceph, XSky)
|
||||
* NAS (Ceph)
|
||||
@@ -99,7 +108,7 @@ Please check this [issue](https://github.com/yunionio/cloudpods/issues/11427) fo
|
||||
|
||||
## Changelog
|
||||
|
||||
See [Relase Notes](https://www.cloudpods.org/en/docs/release-notes/) and [Changelog](https://www.cloudpods.org/en/docs/development/changelog/) for details.
|
||||
See [Release Notes](https://www.cloudpods.org/en/docs/release-notes/) and [Changelog](https://www.cloudpods.org/en/docs/development/changelog/) for details.
|
||||
|
||||
## Contribution
|
||||
|
||||
@@ -112,4 +121,3 @@ Apache License 2.0. See [LICENSE](./LICENSE).
|
||||
## AI-generated doc
|
||||
|
||||
[DeepWiki](https://deepwiki.com/yunionio/cloudpods) provides an amazing AI-generated doc of this project, you may refer to it for more detailed and comprehensive understanding of codes.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user