diff --git a/.github/workflows/docs-health.yml b/.github/workflows/docs-health.yml index 696be2af..53404b2b 100644 --- a/.github/workflows/docs-health.yml +++ b/.github/workflows/docs-health.yml @@ -33,12 +33,9 @@ jobs: run: npm run format:check - name: Build Site + env: + DOCUSAURUS_SITE_URL: http://127.0.0.1:3000 run: npm run build - name: Broken Internal Link Check - run: | - npx --yes linkinator ./build --recurse --skip "^https?://" --verbosity error 2>&1 | tee linkinator-output.txt - if grep -q "BROKEN" linkinator-output.txt; then - echo "::error::Broken internal links found" - exit 1 - fi + run: bash scripts/check-links.sh diff --git a/.gitignore b/.gitignore index 3790ae09..456cb3fb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ node_modules .hugo_build.lock .idea build +.worktrees/ .DS_Store changelog/source diff --git a/blog/hami-at-kubecon-eu-2026/index.md b/blog/hami-at-kubecon-eu-2026/index.md index b967d366..5e31b1fa 100644 --- a/blog/hami-at-kubecon-eu-2026/index.md +++ b/blog/hami-at-kubecon-eu-2026/index.md @@ -134,7 +134,7 @@ During the conference, the HAMi community will continue to curate and publish re Stay connected: - [HAMi GitHub Repository](https://github.com/Project-HAMi/HAMi) -- [HAMi Community Website](https://project-hami.io) +- [HAMi Community Website](/) If you'll be in Amsterdam, come find us at Project Pavilion. diff --git a/blog/hami-cncf-incubating/index.md b/blog/hami-cncf-incubating/index.md index 5a2821cc..fb2298fd 100644 --- a/blog/hami-cncf-incubating/index.md +++ b/blog/hami-cncf-incubating/index.md @@ -16,7 +16,7 @@ Our sincere thanks to CNCF TOC Chair [Karena Angell](https://www.linkedin.com/fe HAMi is a heterogeneous compute virtualization and scheduling middleware for Kubernetes. Through container-level hard isolation, it finely partitions GPU memory and compute so that multiple workloads can safely share a single accelerator. Founded by maintainers [Xiao Zhang](https://github.com/wawa0210) and [Mengxuan Li](https://github.com/archlitchi), it is built by developers worldwide under CNCF governance. -Today, HAMi is used by hundreds of organizations across a dozen-plus accelerators including NVIDIA, Ascend, Cambricon, Hygon, Moore Threads, Enflame, Kunlunxin, MetaX, AWS Neuron, and Vastai (see the [supported device list](https://project-hami.io/docs/userguide/device-supported)). [CNCF case studies](/case-studies) document production practices at China Merchants Bank, SNOW Corp., NIO, KE Holdings, DaoCloud, SF Technology, and PREP EDU, spanning finance, automotive, mobility, logistics, education, and cloud services. HAMi-core integrates with the Kubernetes default scheduler, [Volcano](https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_gpu_sharing.md), [Kueue](https://github.com/kubernetes-sigs/kueue), [Koordinator](https://koordinator.sh/docs/user-manuals/device-scheduling-gpu-share-with-hami), and the [KAI Scheduler](/blog/hami-core-adopted-by-nvidia-kai-scheduler). +Today, HAMi is used by hundreds of organizations across a dozen-plus accelerators including NVIDIA, Ascend, Cambricon, Hygon, Moore Threads, Enflame, Kunlunxin, MetaX, AWS Neuron, and Vastai (see the [supported device list](/docs/userguide/device-supported)). [CNCF case studies](/case-studies) document production practices at China Merchants Bank, SNOW Corp., NIO, KE Holdings, DaoCloud, SF Technology, and PREP EDU, spanning finance, automotive, mobility, logistics, education, and cloud services. HAMi-core integrates with the Kubernetes default scheduler, [Volcano](https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_gpu_sharing.md), [Kueue](https://github.com/kubernetes-sigs/kueue), [Koordinator](https://koordinator.sh/docs/user-manuals/device-scheduling-gpu-share-with-hami), and the [KAI Scheduler](/blog/hami-core-adopted-by-nvidia-kai-scheduler). This milestone was made possible by a global community of nearly 500 contributors from dozens of countries. [Dynamia](https://www.dynamia.ai), [DaoCloud](https://www.daocloud.io), [4Paradigm](https://www.4paradigm.com), [NVIDIA](https://www.nvidia.com), and [Huawei Cloud](https://www.huawei.com), together with many individual developers, user enterprises, and ecosystem partners, have each made irreplaceable contributions. diff --git a/blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md b/blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md index bef56129..c048fa8b 100644 --- a/blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md +++ b/blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md @@ -48,7 +48,7 @@ A simple way to understand HAMi's position: - **KAI Scheduler** decides "who uses which GPU, and when" (the scheduling layer). - **HAMi** ensures "once allocated, that is all you get, and you cannot take more" (the isolation layer). -Only by combining the two do you get true production-grade GPU sharing. HAMi supports NVIDIA GPUs, Huawei Ascend NPUs, Cambricon MLUs, Hygon DCUs, Kunlun XPUs, and many other heterogeneous accelerators, making it the open source solution with the broadest coverage in cloud-native GPU virtualization. For the full list of supported accelerators, see the [HAMi documentation](https://project-hami.io/docs/userguide/device-supported). +Only by combining the two do you get true production-grade GPU sharing. HAMi supports NVIDIA GPUs, Huawei Ascend NPUs, Cambricon MLUs, Hygon DCUs, Kunlun XPUs, and many other heterogeneous accelerators, making it the open source solution with the broadest coverage in cloud-native GPU virtualization. For the full list of supported accelerators, see the [HAMi documentation](/docs/userguide/device-supported). ## Integration architecture: how HAMi and KAI Scheduler work together diff --git a/blog/hami-meetup-beijing-2025/index.md b/blog/hami-meetup-beijing-2025/index.md index a979e6c2..9128169c 100644 --- a/blog/hami-meetup-beijing-2025/index.md +++ b/blog/hami-meetup-beijing-2025/index.md @@ -3,7 +3,7 @@ title: "HAMi Meetup Beijing 2025 Recap" date: "2025-12-27" description: "HAMi Meetup Beijing was held on December 27, 2025. This article is available in Chinese only." authors: [hami_community] -tags: ["Meetup"] +tags: ["HAMi", "Meetup", "Heterogeneous Compute", "GPU Virtualization", "Cloud Native"] unlisted: true --- diff --git a/blog/hami-meetup-shanghai-2025/index.md b/blog/hami-meetup-shanghai-2025/index.md index 731f3888..3538d347 100644 --- a/blog/hami-meetup-shanghai-2025/index.md +++ b/blog/hami-meetup-shanghai-2025/index.md @@ -3,7 +3,16 @@ title: "HAMi Meetup Shanghai 2025 Recap" date: "2025-11-30" description: "HAMi Meetup Shanghai was held on November 30, 2025. This article is available in Chinese only." authors: [hami_community] -tags: ["Meetup"] +tags: + [ + "Meetup", + "Shanghai", + "Heterogeneous Compute Scheduling", + "GPU Virtualization", + "Kubernetes", + "Domestic Compute", + "AI Training and Inference Optimization", + ] unlisted: true --- diff --git a/blog/hami-meetup-shenzhen-2026/index.md b/blog/hami-meetup-shenzhen-2026/index.md index afc786c2..45d2d537 100644 --- a/blog/hami-meetup-shenzhen-2026/index.md +++ b/blog/hami-meetup-shenzhen-2026/index.md @@ -3,7 +3,17 @@ title: "HAMi Meetup Shenzhen 2026 Recap" date: "2026-04-25" description: "HAMi Meetup Shenzhen was held on April 25, 2026. This article is available in Chinese only." authors: [hami_community] -tags: ["Meetup"] +tags: + [ + "HAMi", + "Meetup", + "Shenzhen", + "GPU Virtualization", + "Heterogeneous Compute Scheduling", + "DRA", + "Cloud Native", + "AI Infrastructure", + ] unlisted: true --- diff --git a/blog/hami-v2-9-0-release/index.md b/blog/hami-v2-9-0-release/index.md index b9655c84..4dcbbf2e 100644 --- a/blog/hami-v2-9-0-release/index.md +++ b/blog/hami-v2-9-0-release/index.md @@ -206,7 +206,7 @@ helm repo update helm upgrade hami hami-charts/hami -n kube-system ``` -For complete installation documentation, refer to: [https://project-hami.io/docs/installation/online-installation](https://project-hami.io/docs/installation/online-installation) +For complete installation documentation, refer to: [/docs/installation/online-installation](/docs/installation/online-installation) :::warning[Upgrade notes] @@ -239,7 +239,7 @@ Since the v2.8.0 release, the HAMi website and documentation have undergone the Thanks to [@mesutoezdil](https://github.com/mesutoezdil) for contributions to optimizing HAMi official documentation. -Website: [https://project-hami.io](https://project-hami.io) +Website: [/](/) Website repository: [https://github.com/Project-HAMi/website](https://github.com/Project-HAMi/website) @@ -266,6 +266,6 @@ We sincerely welcome more developers, users, and ecosystem partners to join the - GitHub Release: [https://github.com/Project-HAMi/HAMi/releases/tag/v2.9.0](https://github.com/Project-HAMi/HAMi/releases/tag/v2.9.0) - HAMi-DRA: [https://github.com/Project-HAMi/HAMi-DRA](https://github.com/Project-HAMi/HAMi-DRA) - Volcano vGPU Device Plugin: [https://github.com/Project-HAMi/volcano-vgpu-device-plugin](https://github.com/Project-HAMi/volcano-vgpu-device-plugin) -- Documentation: [https://project-hami.io](https://project-hami.io) +- Documentation: [/docs/](/docs/) - Community Discord (recommended): [https://discord.gg/Amhy7XmbNq](https://discord.gg/Amhy7XmbNq) - Community CNCF Slack: [https://cloud-native.slack.com/archives/C07T10BU4R2](https://cloud-native.slack.com/archives/C07T10BU4R2) diff --git a/blog/kubecon-india-2026-recap/index.md b/blog/kubecon-india-2026-recap/index.md index 281c7c4f..dc6caff7 100644 --- a/blog/kubecon-india-2026-recap/index.md +++ b/blog/kubecon-india-2026-recap/index.md @@ -44,7 +44,7 @@ The demo illustrated how HAMi and vCluster together support practical multi-tena Throughout the Project Pavilion, visitors experienced two hands-on demonstrations highlighting real-world AI inference on Kubernetes. -For readers who want to reproduce parts of the vLLM workflow, see the [HAMi vLLM lab](https://project-hami.io/tutorials/labs/hami-vllm). +For readers who want to reproduce parts of the vLLM workflow, see the [HAMi vLLM lab](/tutorials/labs/hami-vllm). ### Demo 1: Production AI Inference with vLLM and SGLang diff --git a/docs/installation/aws-installation.md b/docs/installation/aws-installation.md index 6474d6a2..fc595b3b 100644 --- a/docs/installation/aws-installation.md +++ b/docs/installation/aws-installation.md @@ -48,7 +48,7 @@ If both the **hami-device-plugin** and **hami-scheduler** pods are in the `Runni ### NVIDIA Devices -- [Use Exclusive GPU](https://project-hami.io/docs/userguide/nvidia-device/examples/use-exclusive-card) -- [Allocate Specific Device Memory to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-memory) -- [Allocate Device Core Resources to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-core) -- [Assign Tasks to MIG Instances](https://project-hami.io/docs/userguide/nvidia-device/examples/dynamic-mig-example) +- [Use Exclusive GPU](/docs/userguide/nvidia-device/examples/use-exclusive-card) +- [Allocate Specific Device Memory to a Container](/docs/userguide/nvidia-device/examples/allocate-device-memory) +- [Allocate Device Core Resources to a Container](/docs/userguide/nvidia-device/examples/allocate-device-core) +- [Assign Tasks to MIG Instances](/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/docs/releases.md b/docs/releases.md index a17ad796..87b909b8 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -50,7 +50,7 @@ Release branches and PRs are managed as follows: - Branches are created for each major or minor release. - The branch name will contain the version, for example release-1.2. - Patch releases are created from a release branch. -- For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. The cherry-pick process of PRs is executed through the script. See [cherry-pick usage](https://project-hami.io/docs/contributor/cherry-picks). +- For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. The cherry-pick process of PRs is executed through the script. See [cherry-pick usage](/docs/contributor/cherry-picks). - For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. - The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. - During PR review, the Assignee selection is used to indicate the reviewer. diff --git a/docusaurus.config.js b/docusaurus.config.js index 9760269b..4e9fa15e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -2,6 +2,7 @@ const { themes } = require("prism-react-renderer"); const lightTheme = themes.github; const darkTheme = themes.dracula; const defaultLocale = "en"; +const siteUrl = (process.env.DOCUSAURUS_SITE_URL || "https://project-hami.io").replace(/\/$/, ""); async function localizedBlogPlugin(context, opts) { const p = await require("@docusaurus/plugin-content-blog").default(context, opts); @@ -32,7 +33,7 @@ localizedBlogPlugin.validateOptions = require("@docusaurus/plugin-content-blog") module.exports = { title: "HAMi", tagline: "Heterogeneous AI Computing Virtualization Middleware", - url: "https://project-hami.io", + url: siteUrl, baseUrl: "/", onBrokenLinks: "throw", trailingSlash: false, @@ -135,7 +136,7 @@ module.exports = { tagName: "link", attributes: { rel: "canonical", - href: "https://project-hami.io/", + href: `${siteUrl}/`, }, }, { diff --git a/i18n/zh/docusaurus-plugin-content-blog/2024-12-18-support-blog-post/index.md b/i18n/zh/docusaurus-plugin-content-blog/2024-12-18-support-blog-post/index.md index 82415056..7b6813d4 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/2024-12-18-support-blog-post/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/2024-12-18-support-blog-post/index.md @@ -1,6 +1,8 @@ --- title: 介绍 HAMi authors: [hami_community] +slug: introducing-hami +tags: [介绍, GPU 共享, Kubernetes] --- ## 什么是 HAMi? diff --git a/i18n/zh/docusaurus-plugin-content-blog/2024-12-31-post/index.md b/i18n/zh/docusaurus-plugin-content-blog/2024-12-31-post/index.md index c2c416f5..efb69177 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/2024-12-31-post/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/2024-12-31-post/index.md @@ -1,8 +1,9 @@ --- layout: post title: HAMi 项目 GPU Pod 调度流程源码走读 +slug: hami-gpu-scheduling-source-code catalog: true -tag: [Kubernetes, GPU, AI] +tags: [Kubernetes, GPU, AI, Source Code, 调度] authors: [elrond_wang] --- diff --git a/i18n/zh/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md b/i18n/zh/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md index acdec16d..46a7d8db 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/hami-at-kubecon-eu-2026/index.md @@ -134,7 +134,7 @@ KubeCon 期间的主舞台 Demo 将展示 GPU 共享与调度在 Kubernetes 中 欢迎关注: - [HAMi GitHub 仓库](https://github.com/project-hami/hami) -- [HAMi 社区官网](https://project-hami.io) +- [HAMi 社区官网](/zh/) 如果你也会在阿姆斯特丹,欢迎来 Project Pavilion 找到我们。 diff --git a/i18n/zh/docusaurus-plugin-content-blog/hami-cncf-incubating/index.md b/i18n/zh/docusaurus-plugin-content-blog/hami-cncf-incubating/index.md index 6bf30161..4f87390b 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/hami-cncf-incubating/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/hami-cncf-incubating/index.md @@ -16,7 +16,7 @@ tags: ["CNCF", "Incubating"] HAMi 是面向 Kubernetes 的异构算力虚拟化与调度中间件,通过容器级硬隔离精细切分 GPU 显存与算力,让多个工作负载安全共享同一张加速器。项目由 [张潇](https://github.com/wawa0210)、[李孟轩](https://github.com/archlitchi) 等维护者发起,在 CNCF 治理下由全球开发者共建。 -今天,HAMi 已被数百家组织采用,覆盖 NVIDIA、昇腾、寒武纪、海光、摩尔线程、燧原、昆仑芯、MetaX、AWS Neuron、Vastai 等十余种加速器(见[支持设备列表](https://project-hami.io/docs/userguide/device-supported)),并以 [CNCF 案例研究](/zh/case-studies)的形式记录了招商银行、SNOW Corp.、蔚来、贝壳、DaoCloud、顺丰科技、PREP EDU 等的落地实践,横跨金融、汽车、出行、物流、教育与云服务。HAMi-core 已与 Kubernetes 默认调度器、[Volcano](https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_gpu_sharing.md)、[Kueue](https://github.com/kubernetes-sigs/kueue)、[Koordinator](https://koordinator.sh/docs/user-manuals/device-scheduling-gpu-share-with-hami) 以及 [KAI Scheduler](/zh/blog/hami-core-adopted-by-nvidia-kai-scheduler) 完成集成。 +今天,HAMi 已被数百家组织采用,覆盖 NVIDIA、昇腾、寒武纪、海光、摩尔线程、燧原、昆仑芯、MetaX、AWS Neuron、Vastai 等十余种加速器(见[支持设备列表](/docs/userguide/device-supported)),并以 [CNCF 案例研究](/zh/case-studies)的形式记录了招商银行、SNOW Corp.、蔚来、贝壳、DaoCloud、顺丰科技、PREP EDU 等的落地实践,横跨金融、汽车、出行、物流、教育与云服务。HAMi-core 已与 Kubernetes 默认调度器、[Volcano](https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_gpu_sharing.md)、[Kueue](https://github.com/kubernetes-sigs/kueue)、[Koordinator](https://koordinator.sh/docs/user-manuals/device-scheduling-gpu-share-with-hami) 以及 [KAI Scheduler](/zh/blog/hami-core-adopted-by-nvidia-kai-scheduler) 完成集成。 这一里程碑离不开全球贡献者与社区的共建:HAMi 至今已汇聚来自几十个国家的近 500 名贡献者。[密瓜智能(Dynamia)](https://www.dynamia.ai)、[DaoCloud](https://www.daocloud.io)、[第四范式](https://www.4paradigm.com)、[NVIDIA](https://www.nvidia.com)、[华为云](https://www.huawei.com),以及众多个人开发者、用户企业与生态伙伴,都作出了不可替代的贡献。 diff --git a/i18n/zh/docusaurus-plugin-content-blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md b/i18n/zh/docusaurus-plugin-content-blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md index 0345b762..36af2f0a 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/hami-core-adopted-by-nvidia-kai-scheduler/index.md @@ -47,7 +47,7 @@ HAMi 是 CNCF 沙箱项目,专注于异构 AI 算力虚拟化中间件。其 - **KAI Scheduler** = 决定「谁在什么时候用什么 GPU」(调度层) - **HAMi** = 确保「用了就只有这么多,不能多占」(隔离层) -两者结合,才能实现真正意义上的生产级 GPU 共享。HAMi 支持 NVIDIA GPU、华为昇腾 NPU、寒武纪 MLU、海光 DCU、昆仑芯 XPU 等多种异构加速卡,是云原生 GPU 虚拟化领域覆盖最广的开源方案。详细的异构加速卡支持信息请参考 [HAMi 官方文档](https://project-hami.io/zh/docs/userguide/device-supported)。 +两者结合,才能实现真正意义上的生产级 GPU 共享。HAMi 支持 NVIDIA GPU、华为昇腾 NPU、寒武纪 MLU、海光 DCU、昆仑芯 XPU 等多种异构加速卡,是云原生 GPU 虚拟化领域覆盖最广的开源方案。详细的异构加速卡支持信息请参考 [HAMi 官方文档](/zh/docs/userguide/device-supported)。 ## 集成架构:HAMi + KAI Scheduler 如何协作 diff --git a/i18n/zh/docusaurus-plugin-content-blog/hami-meetup-beijing-2025/index.md b/i18n/zh/docusaurus-plugin-content-blog/hami-meetup-beijing-2025/index.md index 4ae21e38..da9fb154 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/hami-meetup-beijing-2025/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/hami-meetup-beijing-2025/index.md @@ -4,7 +4,7 @@ date: "2025-12-27" description: "12 月 27 日,HAMi Meetup 北京站近百位技术伙伴齐聚,分享异构算力虚拟化、调度策略与生产实践。" authors: [hami_community] tags: ["HAMi", "Meetup", "异构算力", "GPU 虚拟化", "云原生"] -image: "hami-meetup-beijing-banner.webp" +image: "./hami-meetup-beijing-banner.webp" --- ![HAMi Meetup 北京站](hami-meetup-beijing-banner.webp) diff --git a/i18n/zh/docusaurus-plugin-content-blog/hami-v2-9-0-release/index.md b/i18n/zh/docusaurus-plugin-content-blog/hami-v2-9-0-release/index.md index b5696636..97fb41ce 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/hami-v2-9-0-release/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/hami-v2-9-0-release/index.md @@ -206,7 +206,7 @@ helm repo update helm upgrade hami hami-charts/hami -n hami-system ``` -完整安装文档请参考:[https://project-hami.io/zh/docs/installation/online-installation](https://project-hami.io/zh/docs/installation/online-installation) +完整安装文档请参考:[https://project-hami.io/zh/docs/installation/online-installation](/zh/docs/installation/online-installation) :::warning[升级注意事项] @@ -239,7 +239,7 @@ v2.8.0 发布以来,HAMi 官网与文档经历了有史以来最大规模的 感谢 [@mesutoezdil](https://github.com/mesutoezdil) 对 HAMi 官方文档优化做出的贡献。 -官网地址:[https://project-hami.io](https://project-hami.io) +官网地址:[https://project-hami.io/zh/](/zh/) Website 仓库:[https://github.com/Project-HAMi/website](https://github.com/Project-HAMi/website) @@ -266,6 +266,6 @@ HAMi v2.9.0 是一次面向异构设备虚拟化深度、Kubernetes 原生标准 - GitHub Release:[https://github.com/Project-HAMi/HAMi/releases/tag/v2.9.0](https://github.com/Project-HAMi/HAMi/releases/tag/v2.9.0) - HAMi-DRA:[https://github.com/Project-HAMi/HAMi-DRA](https://github.com/Project-HAMi/HAMi-DRA) - Volcano vGPU Device Plugin:[https://github.com/Project-HAMi/volcano-vgpu-device-plugin](https://github.com/Project-HAMi/volcano-vgpu-device-plugin) -- 项目文档:[https://project-hami.io](https://project-hami.io) +- 项目文档:[https://project-hami.io/zh/docs/](/zh/docs/) - 社区 Discord(推荐):[https://discord.gg/Amhy7XmbNq](https://discord.gg/Amhy7XmbNq) - 社区 CNCF Slack:[https://cloud-native.slack.com/archives/C07T10BU4R2](https://cloud-native.slack.com/archives/C07T10BU4R2) diff --git a/i18n/zh/docusaurus-plugin-content-blog/kubecon-india-2026-recap/index.md b/i18n/zh/docusaurus-plugin-content-blog/kubecon-india-2026-recap/index.md index 64adc77f..775af377 100644 --- a/i18n/zh/docusaurus-plugin-content-blog/kubecon-india-2026-recap/index.md +++ b/i18n/zh/docusaurus-plugin-content-blog/kubecon-india-2026-recap/index.md @@ -44,7 +44,7 @@ HAMi 在 KubeCon India 的亮相正是对这一趋势的直接回应:通过现 在 Project Pavilion,参观者体验了两场动手演示,展示 Kubernetes 上真实的 AI 推理场景。 -如果你希望复现其中一部分 vLLM 工作流,可以参考 [HAMi vLLM 实验](https://project-hami.io/tutorials/labs/hami-vllm)。 +如果你希望复现其中一部分 vLLM 工作流,可以参考 [HAMi vLLM 实验](/tutorials/labs/hami-vllm)。 ### Demo 1:基于 vLLM 与 SGLang 的生产级 AI 推理 diff --git a/i18n/zh/docusaurus-plugin-content-blog/tags.yml b/i18n/zh/docusaurus-plugin-content-blog/tags.yml new file mode 100644 index 00000000..97b6deb8 --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-blog/tags.yml @@ -0,0 +1,105 @@ +"AI": + label: "AI" + permalink: "/ai" +"AI Agent": + label: "AI Agent" + permalink: "/ai-agent" +"AI 基础设施": + label: "AI 基础设施" + permalink: "/ai-infrastructure" +"AI 训练与推理优化": + label: "AI 训练与推理优化" + permalink: "/ai-training-and-inference-optimization" +"CNCF": + label: "CNCF" + permalink: "/cncf" +"DRA": + label: "DRA" + permalink: "/dra" +"GPU": + label: "GPU" + permalink: "/gpu" +"GPU 仪表盘": + label: "GPU 仪表盘" + permalink: "/gpu-dashboard" +"GPU 共享": + label: "GPU 共享" + permalink: "/gpu-sharing" +"GPU 监控": + label: "GPU 监控" + permalink: "/gpu-monitoring" +"GPU 虚拟化": + label: "GPU 虚拟化" + permalink: "/gpu-virtualization" +"HAMi": + label: "HAMi" + permalink: "/ha-mi" +"Incubating": + label: "Incubating" + permalink: "/incubating" +"India": + label: "India" + permalink: "/india" +"KAI Scheduler": + label: "KAI Scheduler" + permalink: "/kai-scheduler" +"KCD": + label: "KCD" + permalink: "/kcd" +"KubeCon": + label: "KubeCon" + permalink: "/kube-con" +"Kubernetes": + label: "Kubernetes" + permalink: "/kubernetes" +"Meetup": + label: "Meetup" + permalink: "/meetup" +"NVIDIA": + label: "NVIDIA" + permalink: "/nvidia" +"Release": + label: "Release" + permalink: "/release" +"Source Code": + label: "源码走读" + permalink: "/source-code" +"WebUI": + label: "WebUI" + permalink: "/web-ui" +"kagent": + label: "kagent" + permalink: "/kagent" +"vGPU": + label: "vGPU" + permalink: "/v-gpu" +"上海": + label: "上海" + permalink: "/shanghai" +"云原生": + label: "云原生" + permalink: "/cloud-native" +"介绍": + label: "介绍" + permalink: "/introduction" +"可观测性": + label: "可观测性" + permalink: "/observability" +"国产算力": + label: "国产算力" + permalink: "/domestic-compute" +"异构算力": + label: "异构算力" + permalink: "/heterogeneous-compute" +"异构算力调度": + label: "异构算力调度" + permalink: "/heterogeneous-compute-scheduling" +"深圳": + label: "深圳" + permalink: "/shenzhen" +"硬隔离": + label: "硬隔离" + permalink: "/hard-isolation" +"调度": + label: "调度" + permalink: "/scheduling" diff --git a/i18n/zh/docusaurus-plugin-content-docs-tutorials/current/tags.yml b/i18n/zh/docusaurus-plugin-content-docs-tutorials/current/tags.yml new file mode 100644 index 00000000..93d6f6af --- /dev/null +++ b/i18n/zh/docusaurus-plugin-content-docs-tutorials/current/tags.yml @@ -0,0 +1,45 @@ +"DRA": + label: "DRA" + permalink: "/dra" +"GPU 分区": + label: "GPU 分区" + permalink: "/gpu-partitioning" +"alibaba-cloud": + label: "alibaba-cloud" + permalink: "/alibaba-cloud" +"hami": + label: "hami" + permalink: "/hami" +"inference": + label: "inference" + permalink: "/inference" +"nvidia": + label: "nvidia" + permalink: "/nvidia" +"nvml-mock": + label: "nvml-mock" + permalink: "/nvml-mock" +"vllm": + label: "vllm" + permalink: "/vllm" +"安装": + label: "安装" + permalink: "/installation" +"实验性": + label: "实验性" + permalink: "/experimental" +"本地安装": + label: "本地安装" + permalink: "/local-setup" +"模拟": + label: "模拟" + permalink: "/simulation" +"调度": + label: "调度" + permalink: "/scheduling" +"资源共享": + label: "资源共享" + permalink: "/resource-sharing" +"隔离": + label: "隔离" + permalink: "/isolation" diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/installation/aws-installation.md b/i18n/zh/docusaurus-plugin-content-docs/current/installation/aws-installation.md index 9148653e..16e076f0 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/installation/aws-installation.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/installation/aws-installation.md @@ -49,7 +49,7 @@ kubectl get pods -n kube-system ### NVIDIA 设备 -- [使用独占 GPU](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) -- [为容器分配特定设备显存](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) -- [为容器分配设备核心资源](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-core) -- [将任务分配给 mig 实例](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) +- [使用独占 GPU](/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) +- [为容器分配特定设备显存](/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) +- [为容器分配设备核心资源](/zh/docs/userguide/nvidia-device/examples/allocate-device-core) +- [将任务分配给 MIG 实例](/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/i18n/zh/docusaurus-plugin-content-docs/current/releases.md b/i18n/zh/docusaurus-plugin-content-docs/current/releases.md index 2d5b091c..8d3fbac2 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/current/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/current/releases.md @@ -51,7 +51,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 为每个主要或次要版本创建分支。 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 -- 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 +- 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.0/releases.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.0/releases.md index 17089331..692b0b63 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.0/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.0/releases.md @@ -53,7 +53,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 - 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。 - PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 + PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.1/releases.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.1/releases.md index 17089331..692b0b63 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.1/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.5.1/releases.md @@ -53,7 +53,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 - 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。 - PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 + PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.6.0/releases.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.6.0/releases.md index 17089331..692b0b63 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.6.0/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.6.0/releases.md @@ -53,7 +53,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 - 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。 - PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 + PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/installation/aws-installation.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/installation/aws-installation.md index b4131642..08e13763 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/installation/aws-installation.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/installation/aws-installation.md @@ -49,7 +49,7 @@ kubectl get pods -n kube-system ### NVIDIA 设备 -[使用独占 GPU](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) -[为容器分配特定设备显存](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) -[为容器分配设备核心资源](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-core) -[将任务分配给 mig 实例](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) +[使用独占 GPU](/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) +[为容器分配特定设备显存](/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) +[为容器分配设备核心资源](/zh/docs/userguide/nvidia-device/examples/allocate-device-core) +[将任务分配给 MIG 实例](/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/releases.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/releases.md index 17089331..692b0b63 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.7.0/releases.md @@ -53,7 +53,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 - 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。 - PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 + PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/installation/aws-installation.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/installation/aws-installation.md index 6c06a4ad..2a5303bc 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/installation/aws-installation.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/installation/aws-installation.md @@ -50,7 +50,7 @@ kubectl get pods -n kube-system ### NVIDIA 设备 -- [使用独占 GPU](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) -- [为容器分配特定设备显存](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) -- [为容器分配设备核心资源](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-core) -- [将任务分配给 mig 实例](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) +- [使用独占 GPU](/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) +- [为容器分配特定设备显存](/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) +- [为容器分配设备核心资源](/zh/docs/userguide/nvidia-device/examples/allocate-device-core) +- [将任务分配给 mig 实例](/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/releases.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/releases.md index 17089331..692b0b63 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.8.0/releases.md @@ -53,7 +53,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 - 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。 - PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 + PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/aws-installation.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/aws-installation.md index 9148653e..67ffbafb 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/aws-installation.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/installation/aws-installation.md @@ -49,7 +49,7 @@ kubectl get pods -n kube-system ### NVIDIA 设备 -- [使用独占 GPU](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) -- [为容器分配特定设备显存](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) -- [为容器分配设备核心资源](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/allocate-device-core) -- [将任务分配给 mig 实例](https://project-hami.io/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) +- [使用独占 GPU](/zh/docs/userguide/nvidia-device/examples/use-exclusive-card) +- [为容器分配特定设备显存](/zh/docs/userguide/nvidia-device/examples/allocate-device-memory) +- [为容器分配设备核心资源](/zh/docs/userguide/nvidia-device/examples/allocate-device-core) +- [将任务分配给 mig 实例](/zh/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/releases.md b/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/releases.md index 2d5b091c..8d3fbac2 100644 --- a/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/releases.md +++ b/i18n/zh/docusaurus-plugin-content-docs/version-v2.9.0/releases.md @@ -51,7 +51,7 @@ HAMi 使用 GitHub 标签来管理版本。新版本和候选版本使用通配 - 为每个主要或次要版本创建分支。 - 分支名称将包含版本,例如 release-1.2。 - 补丁版本从发布分支创建。 -- 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。PR 的挑选过程通过脚本执行。使用方法参见[此处](https://project-hami.io/docs/contributor/cherry-picks)。 +- 对于需要包含在补丁版本中的关键修复,PR 应始终首先合并到 master,然后再挑选到发布分支。PR 需要确保有发布说明撰写,这些描述将在下一个补丁版本中反映。PR 的挑选过程通过脚本执行。使用方法参见[此处](/docs/contributor/cherry-picks)。 - 对于复杂的更改,特别是关键错误修复,可能需要为 master 和发布分支分别创建 PR。 - 里程碑标记(例如 v1.4)将添加到 PR 中,这意味着 PR 中的更改是相应版本的内容之一。 - 在 PR 审查期间,分配选择用于指示审阅者。 diff --git a/package.json b/package.json index b1caf1aa..f9b9b6ec 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,8 @@ "lint": "npm run lint:md", "format:check": "prettier --check .", "format": "prettier --write .", - "check-links": "npm run build && npx linkinator ./build --recurse || true", - "check:all": "npm run lint && npm run format:check && npm run build" + "check-links": "DOCUSAURUS_SITE_URL=http://127.0.0.1:3000 npm run build && bash scripts/check-links.sh", + "check:all": "npm run lint && npm run format:check && npm run check-links" }, "dependencies": { "@docusaurus/core": "^3.10.0", diff --git a/scripts/check-links.sh b/scripts/check-links.sh new file mode 100644 index 00000000..55c573de --- /dev/null +++ b/scripts/check-links.sh @@ -0,0 +1,86 @@ +#!/usr/bin/env bash + +set -euo pipefail + +host="${LINK_CHECK_HOST:-127.0.0.1}" +port="${LINK_CHECK_PORT:-3000}" +root_url="http://${host}:${port}" +tmpdir="$(mktemp -d)" +server_pid="" + +cleanup() { + if [[ -n "${server_pid}" ]]; then + kill "${server_pid}" >/dev/null 2>&1 || true + wait "${server_pid}" 2>/dev/null || true + fi + rm -rf "${tmpdir}" +} + +trap cleanup EXIT INT TERM + +python3 - "${host}" > "${tmpdir}/skip-args.txt" <<'PY' +import re +import sys +from pathlib import Path +from urllib.parse import urlparse + +host = sys.argv[1].lower() +pattern = re.compile(r"https?://[^\"'\s<>()]+") +internal_hosts = {host, "localhost"} +valid_host = re.compile(r"[a-z0-9.-]+") +hosts = set() + +for path in Path("build").rglob("*.html"): + text = path.read_text(errors="ignore") + for match in pattern.finditer(text): + url = match.group(0).rstrip(".,);") + parsed_host = (urlparse(url).hostname or "").lower().rstrip(".") + if not parsed_host or parsed_host in internal_hosts: + continue + if not valid_host.fullmatch(parsed_host): + continue + hosts.add(parsed_host) + +for external_host in sorted(hosts): + print("--skip") + print(f"^https?://{re.escape(external_host)}(?:/|$)") +PY + +npx --yes sirv-cli build -D -H "${host}" -p "${port}" > "${tmpdir}/sirv.log" 2>&1 & +server_pid=$! + +for _ in $(seq 1 60); do + if curl -fsS "${root_url}/" >/dev/null 2>&1; then + break + fi + sleep 1 +done + +curl -fsS "${root_url}/" >/dev/null 2>&1 || { + echo "Local server did not start within 60s. sirv log:" + cat "${tmpdir}/sirv.log" + exit 1 +} + +tmp_linkinator="${tmpdir}/linkinator.log" +mapfile -t skip_args < "${tmpdir}/skip-args.txt" + +set +e +# Call linkinator directly so its real exit code and stderr survive failures. +npx --yes linkinator "${root_url}" \ + --recurse \ + --concurrency 10 \ + --retry-errors \ + --retry-errors-count 2 \ + --verbosity error \ + "${skip_args[@]}" > "${tmp_linkinator}" 2>&1 +linkinator_exit=$? +set -e + +if [[ "${linkinator_exit}" -ne 0 ]]; then + echo "Linkinator failed with exit code ${linkinator_exit}. Output:" + cat "${tmp_linkinator}" + echo "End of linkinator output. sirv log:" + cat "${tmpdir}/sirv.log" + exit "${linkinator_exit}" +fi diff --git a/versioned_docs/version-v2.5.0/releases.md b/versioned_docs/version-v2.5.0/releases.md index a022a72e..f8685799 100644 --- a/versioned_docs/version-v2.5.0/releases.md +++ b/versioned_docs/version-v2.5.0/releases.md @@ -60,7 +60,7 @@ Release branches and PRs are managed as follows: - For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. - The cherry-pick process of PRs is executed through the script. See usage [here](https://project-hami.io/docs/contributor/cherry-picks). + The cherry-pick process of PRs is executed through the script. See usage [here](/docs/contributor/cherry-picks). - For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. - The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. - During PR review, the Assignee selection is used to indicate the reviewer. diff --git a/versioned_docs/version-v2.5.1/releases.md b/versioned_docs/version-v2.5.1/releases.md index a022a72e..f8685799 100644 --- a/versioned_docs/version-v2.5.1/releases.md +++ b/versioned_docs/version-v2.5.1/releases.md @@ -60,7 +60,7 @@ Release branches and PRs are managed as follows: - For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. - The cherry-pick process of PRs is executed through the script. See usage [here](https://project-hami.io/docs/contributor/cherry-picks). + The cherry-pick process of PRs is executed through the script. See usage [here](/docs/contributor/cherry-picks). - For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. - The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. - During PR review, the Assignee selection is used to indicate the reviewer. diff --git a/versioned_docs/version-v2.6.0/releases.md b/versioned_docs/version-v2.6.0/releases.md index 228662cd..f8685799 100644 --- a/versioned_docs/version-v2.6.0/releases.md +++ b/versioned_docs/version-v2.6.0/releases.md @@ -60,7 +60,7 @@ Release branches and PRs are managed as follows: - For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. - The cherry-pick process of PRs is executed through the script. See usage [here](https://project-hami.io/docs/contributor/cherry-picks). + The cherry-pick process of PRs is executed through the script. See usage [here](/docs/contributor/cherry-picks). - For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. - The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. - During PR review, the Assignee selection is used to indicate the reviewer. @@ -111,4 +111,4 @@ For example: ```shell wget https://github.com/Project-HAMi/HAMi/releases/download/v1.3.0/karmadactl-darwin-amd64.tgz -``` --> \ No newline at end of file +``` --> diff --git a/versioned_docs/version-v2.7.0/installation/aws-installation.md b/versioned_docs/version-v2.7.0/installation/aws-installation.md index dde74df6..054a7d42 100644 --- a/versioned_docs/version-v2.7.0/installation/aws-installation.md +++ b/versioned_docs/version-v2.7.0/installation/aws-installation.md @@ -51,7 +51,7 @@ If both the **hami-device-plugin** and **hami-scheduler** pods are in the `Runni ## Usage Examples ### NVIDIA Devices -[Use Exclusive GPU](https://project-hami.io/docs/userguide/nvidia-device/examples/use-exclusive-card) -[Allocate Specific Device Memory to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-memory) -[Allocate Device Core Resources to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-core) -[Assign Tasks to MIG Instances](https://project-hami.io/docs/userguide/nvidia-device/examples/dynamic-mig-example) \ No newline at end of file +[Use Exclusive GPU](/docs/userguide/nvidia-device/examples/use-exclusive-card) +[Allocate Specific Device Memory to a Container](/docs/userguide/nvidia-device/examples/allocate-device-memory) +[Allocate Device Core Resources to a Container](/docs/userguide/nvidia-device/examples/allocate-device-core) +[Assign Tasks to MIG Instances](/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/versioned_docs/version-v2.7.0/releases.md b/versioned_docs/version-v2.7.0/releases.md index a022a72e..f8685799 100644 --- a/versioned_docs/version-v2.7.0/releases.md +++ b/versioned_docs/version-v2.7.0/releases.md @@ -60,7 +60,7 @@ Release branches and PRs are managed as follows: - For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. - The cherry-pick process of PRs is executed through the script. See usage [here](https://project-hami.io/docs/contributor/cherry-picks). + The cherry-pick process of PRs is executed through the script. See usage [here](/docs/contributor/cherry-picks). - For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. - The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. - During PR review, the Assignee selection is used to indicate the reviewer. diff --git a/versioned_docs/version-v2.8.0/installation/aws-installation.md b/versioned_docs/version-v2.8.0/installation/aws-installation.md index 4a55a823..c3512a3c 100644 --- a/versioned_docs/version-v2.8.0/installation/aws-installation.md +++ b/versioned_docs/version-v2.8.0/installation/aws-installation.md @@ -50,7 +50,7 @@ If both the **hami-device-plugin** and **hami-scheduler** pods are in the `Runni ### NVIDIA Devices -- [Use Exclusive GPU](https://project-hami.io/docs/userguide/nvidia-device/examples/use-exclusive-card) -- [Allocate Specific Device Memory to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-memory) -- [Allocate Device Core Resources to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-core) -- [Assign Tasks to MIG Instances](https://project-hami.io/docs/userguide/nvidia-device/examples/dynamic-mig-example) +- [Use Exclusive GPU](/docs/userguide/nvidia-device/examples/use-exclusive-card) +- [Allocate Specific Device Memory to a Container](/docs/userguide/nvidia-device/examples/allocate-device-memory) +- [Allocate Device Core Resources to a Container](/docs/userguide/nvidia-device/examples/allocate-device-core) +- [Assign Tasks to MIG Instances](/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/versioned_docs/version-v2.8.0/releases.md b/versioned_docs/version-v2.8.0/releases.md index 84df9a65..12352544 100644 --- a/versioned_docs/version-v2.8.0/releases.md +++ b/versioned_docs/version-v2.8.0/releases.md @@ -60,7 +60,7 @@ Release branches and PRs are managed as follows: * For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. - The cherry-pick process of PRs is executed through the script. See [cherry-pick usage](https://project-hami.io/docs/contributor/cherry-picks). + The cherry-pick process of PRs is executed through the script. See [cherry-pick usage](/docs/contributor/cherry-picks). * For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. * The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. * During PR review, the Assignee selection is used to indicate the reviewer. diff --git a/versioned_docs/version-v2.9.0/installation/aws-installation.md b/versioned_docs/version-v2.9.0/installation/aws-installation.md index 6474d6a2..fc595b3b 100644 --- a/versioned_docs/version-v2.9.0/installation/aws-installation.md +++ b/versioned_docs/version-v2.9.0/installation/aws-installation.md @@ -48,7 +48,7 @@ If both the **hami-device-plugin** and **hami-scheduler** pods are in the `Runni ### NVIDIA Devices -- [Use Exclusive GPU](https://project-hami.io/docs/userguide/nvidia-device/examples/use-exclusive-card) -- [Allocate Specific Device Memory to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-memory) -- [Allocate Device Core Resources to a Container](https://project-hami.io/docs/userguide/nvidia-device/examples/allocate-device-core) -- [Assign Tasks to MIG Instances](https://project-hami.io/docs/userguide/nvidia-device/examples/dynamic-mig-example) +- [Use Exclusive GPU](/docs/userguide/nvidia-device/examples/use-exclusive-card) +- [Allocate Specific Device Memory to a Container](/docs/userguide/nvidia-device/examples/allocate-device-memory) +- [Allocate Device Core Resources to a Container](/docs/userguide/nvidia-device/examples/allocate-device-core) +- [Assign Tasks to MIG Instances](/docs/userguide/nvidia-device/examples/dynamic-mig-example) diff --git a/versioned_docs/version-v2.9.0/releases.md b/versioned_docs/version-v2.9.0/releases.md index 568d56f9..1cb154ff 100644 --- a/versioned_docs/version-v2.9.0/releases.md +++ b/versioned_docs/version-v2.9.0/releases.md @@ -50,7 +50,7 @@ Release branches and PRs are managed as follows: - Branches are created for each major or minor release. - The branch name will contain the version, for example release-1.2. - Patch releases are created from a release branch. -- For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. The cherry-pick process of PRs is executed through the script. See [cherry-pick usage](https://project-hami.io/docs/contributor/cherry-picks). +- For critical fixes that need to be included in a patch release, PRs should always be first merged to master and then cherry-picked to the release branch. PRs need to be guaranteed to have a release note written and these descriptions will be reflected in the next patch release. The cherry-pick process of PRs is executed through the script. See [cherry-pick usage](/docs/contributor/cherry-picks). - For complex changes, specially critical bugfixes, separate PRs may be required for master and release branches. - The milestone mark (for example v1.4) will be added to PRs which means changes in PRs are one of the contents of the corresponding release. - During PR review, the Assignee selection is used to indicate the reviewer.