Skip to content

Volcano Website: Docusaurus migration POC with scheduler docs, versioning, CI, and UI revamp#479

Open
aaradhychinche-alt wants to merge 17 commits intovolcano-sh:masterfrom
aaradhychinche-alt:feat/docusaurus-migration-poc
Open

Volcano Website: Docusaurus migration POC with scheduler docs, versioning, CI, and UI revamp#479
aaradhychinche-alt wants to merge 17 commits intovolcano-sh:masterfrom
aaradhychinche-alt:feat/docusaurus-migration-poc

Conversation

@aaradhychinche-alt
Copy link

Volcano Website: Docusaurus Migration Proof of Concept

Summary

This PR provides an early proof-of-concept for migrating the Volcano website from Hugo to Docusaurus and modernizing the documentation experience.

It includes:

  • Migration of scheduler documentation for v1.12 with plugins and actions split into dedicated pages
  • Hugo shortcode replacement using MDX React components
  • GitHub Actions workflow for validating docs builds
  • Docusaurus versioning enabled with a v1.12 snapshot
  • Initial Volcano-branded homepage and navigation redesign
  • Animated hero visualization for scheduler topology
  • Production build verification

Motivation

The current Hugo-based site is difficult to extend and lacks modern features such as first-class versioning, component-driven documentation, and automated validation.

This PR explores the feasibility of:

  • a Hugo → Docusaurus migration
  • restructuring scheduler documentation
  • improving navigation and UX
  • enforcing builds via CI
  • introducing a modern CNCF-style docs portal

Related Mentorship Project & Issues

This work is part of the LFX mentorship project:

Volcano documentation & website revamp with Docusaurus

Related issues:


Scope

This is a draft / exploratory PR intended to gather early feedback from maintainers before completing the full migration.


Follow-ups

Future work would include:

  • migrating remaining documentation sections
  • importing older versions
  • Chinese localization (i18n)
  • automated doc-sync tooling
  • contributor documentation improvements

Testing

  • npm run build succeeds locally
  • GitHub Actions workflow added to validate docs builds

Notes for Maintainers

Feedback on the following areas would be especially valuable:

  • overall site structure and navigation
  • feasibility of the Docusaurus migration approach
  • scheduler docs layout and organization
  • UI direction for the homepage
  • versioning strategy

Thank you for taking the time to review this exploratory PR.

@volcano-sh-bot
Copy link
Collaborator

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign william-wang for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@volcano-sh-bot volcano-sh-bot added the size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. label Feb 8, 2026
@aaradhychinche-alt aaradhychinche-alt force-pushed the feat/docusaurus-migration-poc branch from 11c858f to 081c6b3 Compare February 8, 2026 06:27
@gemini-code-assist
Copy link

Summary of Changes

Hello @aaradhychinche-alt, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request marks a foundational step in enhancing the Volcano project's online presence and documentation infrastructure. By transitioning to Docusaurus, the project gains a more robust and feature-rich platform capable of supporting advanced documentation needs like versioning and component-driven content. The changes encompass a significant overhaul of the scheduler documentation, a fresh UI design, and the establishment of automated quality checks, all contributing to a more maintainable and user-friendly website.

Highlights

  • Docusaurus Migration Proof-of-Concept: This pull request initiates a proof-of-concept for migrating the Volcano website from Hugo to Docusaurus, aiming to modernize the documentation experience and address limitations of the previous platform.
  • Comprehensive Scheduler Documentation: Detailed documentation for Volcano scheduler actions (Allocate, Backfill, Enqueue, Preempt, Reclaim) and plugins (Binpack, DRF, Gang, Nodeorder, Numa-aware, Predicates, Priority, Proportion, SLA, TDM, Task-topology) has been added, providing in-depth explanations of their functionality and scenarios.
  • Documentation Versioning Enabled: Docusaurus's built-in versioning feature has been configured, with an initial snapshot for v1.12 of the scheduler documentation, allowing for better management and presentation of content across different software releases.
  • UI Revamp and Branding: The website's user interface has been revamped with Volcano branding, including a custom CSS theme, a redesigned homepage with animated elements (terminal install, scheduler visualization), and improved navigation.
  • Automated Build Validation: A GitHub Actions workflow has been integrated to validate documentation builds, ensuring that changes do not introduce errors and maintaining the quality of the website.
  • Hugo Shortcode Replacement with MDX: Custom React components, such as a Figure component, have been introduced to replace Hugo shortcodes, leveraging Docusaurus's MDX capabilities for more flexible and interactive content.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • volcano-docs-docusaurus/.gitignore
    • Added a .gitignore file to exclude common build artifacts and dependencies specific to Docusaurus projects.
  • volcano-docs-docusaurus/README.md
    • Provided comprehensive instructions for setting up, running, building, and deploying the new Docusaurus site locally.
  • volcano-docs-docusaurus/blog/2019-05-28-first-blog-post.md
    • Included a boilerplate blog post to demonstrate Docusaurus's blogging features.
  • volcano-docs-docusaurus/blog/2019-05-29-long-blog-post.md
    • Added a longer boilerplate blog post, showcasing the truncate feature for summaries.
  • volcano-docs-docusaurus/blog/2021-08-01-mdx-blog-post.mdx
    • Included an example MDX blog post demonstrating interactive React components within Markdown.
  • volcano-docs-docusaurus/blog/2021-08-26-welcome/index.md
    • Added a welcome blog post, detailing Docusaurus blogging features and structure.
  • volcano-docs-docusaurus/blog/authors.yml
    • Configured example author profiles for blog posts.
  • volcano-docs-docusaurus/blog/tags.yml
    • Defined example tags for blog post categorization.
  • volcano-docs-docusaurus/docs/intro.md
    • Added the introductory tutorial for Docusaurus basics, guiding users through initial setup.
  • volcano-docs-docusaurus/docs/scheduler/actions/allocate.md
    • Introduced documentation for the 'Allocate' scheduler action, explaining its overview and scenarios.
  • volcano-docs-docusaurus/docs/scheduler/actions/backfill.md
    • Added documentation for the 'Backfill' scheduler action, covering its purpose and use cases.
  • volcano-docs-docusaurus/docs/scheduler/actions/enqueue.md
    • Created documentation for the 'Enqueue' scheduler action, detailing its overview, scenarios, and potential conflicts.
  • volcano-docs-docusaurus/docs/scheduler/actions/preempt.md
    • Provided documentation for the 'Preempt' scheduler action, outlining its overview and preemption scenarios.
  • volcano-docs-docusaurus/docs/scheduler/actions/reclaim.md
    • Added documentation for the 'Reclaim' scheduler action, explaining its cross-queue resource reclamation and optimization scenarios.
  • volcano-docs-docusaurus/docs/scheduler/intro.md
    • Created an overview page for the Volcano Scheduler, explaining its architecture, plugins, and actions.
  • volcano-docs-docusaurus/docs/scheduler/plugins/binpack.md
    • Introduced documentation for the 'Binpack' scheduler plugin, describing its goal and scenarios.
  • volcano-docs-docusaurus/docs/scheduler/plugins/drf.md
    • Added documentation for the 'DRF' (Dominant Resource Fairness) scheduler plugin, detailing its overview and scenarios.
  • volcano-docs-docusaurus/docs/scheduler/plugins/gang.md
    • Created documentation for the 'Gang' scheduler plugin, explaining its 'All or nothing' scheduling strategy and use cases.
  • volcano-docs-docusaurus/docs/scheduler/plugins/nodeorder.md
    • Provided documentation for the 'Nodeorder' scheduler plugin, covering its overview and scenario for multi-dimensional scoring.
  • volcano-docs-docusaurus/docs/scheduler/plugins/numa-aware.md
    • Added documentation for the 'Numa-aware' scheduler plugin, addressing CPU topology scheduling limitations and scenarios.
  • volcano-docs-docusaurus/docs/scheduler/plugins/predicates.md
    • Introduced documentation for the 'Predicates' scheduler plugin, explaining its role in pre-selecting jobs based on criteria like GPU requirements.
  • volcano-docs-docusaurus/docs/scheduler/plugins/priority.md
    • Added documentation for the 'Priority' scheduler plugin, detailing its job and task sorting capabilities and fair-share scenarios.
  • volcano-docs-docusaurus/docs/scheduler/plugins/proportion.md
    • Created documentation for the 'Proportion' scheduler plugin, describing its queue-based resource allocation and multi-team scenarios.
  • volcano-docs-docusaurus/docs/scheduler/plugins/sla.md
    • Provided documentation for the 'SLA' scheduler plugin, outlining its function in setting service level agreements for jobs.
  • volcano-docs-docusaurus/docs/scheduler/plugins/task-topology.md
    • Added documentation for the 'Task-topology' scheduler plugin, explaining its affinity and anti-affinity algorithms for task placement.
  • volcano-docs-docusaurus/docs/scheduler/plugins/tdm.md
    • Introduced documentation for the 'TDM' (Time Division Multiplexing) scheduler plugin, detailing its use in co-located environments and resource utilization improvement.
  • volcano-docs-docusaurus/docs/tutorial-basics/category.json
    • Defined the category metadata for the 'Tutorial - Basics' section in the sidebar.
  • volcano-docs-docusaurus/docs/tutorial-basics/congratulations.md
    • Added the 'Congratulations!' page for the Docusaurus basic tutorial.
  • volcano-docs-docusaurus/docs/tutorial-basics/create-a-blog-post.md
    • Included a tutorial page on how to create a blog post in Docusaurus.
  • volcano-docs-docusaurus/docs/tutorial-basics/create-a-document.md
    • Added a tutorial page on how to create a document and configure sidebars in Docusaurus.
  • volcano-docs-docusaurus/docs/tutorial-basics/create-a-page.md
    • Included a tutorial page on creating standalone pages using Markdown or React in Docusaurus.
  • volcano-docs-docusaurus/docs/tutorial-basics/deploy-your-site.md
    • Added a tutorial page on building and deploying a Docusaurus site.
  • volcano-docs-docusaurus/docs/tutorial-basics/markdown-features.mdx
    • Included a tutorial page detailing Markdown features and MDX capabilities in Docusaurus.
  • volcano-docs-docusaurus/docs/tutorial-extras/category.json
    • Defined the category metadata for the 'Tutorial - Extras' section in the sidebar.
  • volcano-docs-docusaurus/docs/tutorial-extras/manage-docs-versions.md
    • Added a tutorial page on managing documentation versions in Docusaurus.
  • volcano-docs-docusaurus/docs/tutorial-extras/translate-your-site.md
    • Included a tutorial page on translating a Docusaurus site using i18n features.
  • volcano-docs-docusaurus/docusaurus.config.ts
    • Configured the Docusaurus site with Volcano branding, including title, tagline, favicon, base URL, and GitHub repository links.
    • Enabled Docusaurus docs and blog presets, specifying sidebar paths and edit URLs.
    • Set up future flags for Docusaurus v4 compatibility and configured i18n for English.
    • Defined the navbar structure with links to documentation and GitHub, including a version dropdown.
    • Configured the footer with links to documentation, community resources, and copyright information.
    • Set up Prism themes for code highlighting in both light and dark modes.
  • volcano-docs-docusaurus/package.json
    • Initialized package.json with Docusaurus dependencies and scripts for development, building, and deployment.
    • Specified Node.js version requirement (>=20.0) and browserslist configuration.
  • volcano-docs-docusaurus/sidebars.ts
    • Defined the main navigation sidebar structure, organizing tutorials and detailed scheduler documentation (plugins and actions) into logical categories.
  • volcano-docs-docusaurus/src/components/HomepageFeatures/index.tsx
    • Included boilerplate React components for displaying homepage features.
  • volcano-docs-docusaurus/src/components/HomepageFeatures/styles.module.css
    • Added CSS styling for the homepage feature components.
  • volcano-docs-docusaurus/src/components/shortcodes/Figure.tsx
    • Created a custom React Figure component to replace Hugo shortcodes for rendering images with titles and alt text.
  • volcano-docs-docusaurus/src/css/custom.css
    • Implemented a custom CSS theme with Volcano branding, including a color system (charcoal, lava, ember), hero section styling with gradients, terminal styles, feature card designs, use case blocks, and plugin card styles.
    • Added responsive design adjustments for various screen sizes.
  • volcano-docs-docusaurus/src/pages/index.module.css
    • Added CSS for the homepage hero banner and button styling.
  • volcano-docs-docusaurus/src/pages/index.tsx
    • Developed a new Docusaurus homepage featuring animated terminal installation, an SVG visualization of the scheduler, feature grids highlighting key capabilities, use case blocks, and a plugin explorer section.
  • volcano-docs-docusaurus/src/pages/markdown-page.md
    • Included a sample standalone Markdown page to demonstrate basic page creation.
  • volcano-docs-docusaurus/static/img/logo.svg
    • Added the Volcano logo SVG asset.
  • volcano-docs-docusaurus/static/img/undraw_docusaurus_mountain.svg
    • Added an SVG illustration for Docusaurus features.
  • volcano-docs-docusaurus/static/img/undraw_docusaurus_react.svg
    • Added an SVG illustration related to React for Docusaurus features.
  • volcano-docs-docusaurus/static/img/undraw_docusaurus_tree.svg
    • Added an SVG illustration for Docusaurus features.
  • volcano-docs-docusaurus/tsconfig.json
    • Added TypeScript configuration for the Docusaurus project, extending @docusaurus/tsconfig.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/intro.md
    • Created a versioned copy of the Docusaurus introductory tutorial for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/migration/migration-audit.md
    • Added a migration audit document for v1.12, detailing Hugo shortcodes, docs directories, versioning, front matter, Netlify config, and Markdown rendering.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/actions/allocate.md
    • Created a versioned copy of the 'Allocate' scheduler action documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/actions/backfill.md
    • Created a versioned copy of the 'Backfill' scheduler action documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/actions/enqueue.md
    • Created a versioned copy of the 'Enqueue' scheduler action documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/actions/preempt.md
    • Created a versioned copy of the 'Preempt' scheduler action documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/actions/reclaim.md
    • Created a versioned copy of the 'Reclaim' scheduler action documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/intro.md
    • Created a versioned copy of the Volcano Scheduler overview documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/binpack.md
    • Created a versioned copy of the 'Binpack' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/drf.md
    • Created a versioned copy of the 'DRF' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/gang.md
    • Created a versioned copy of the 'Gang' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/nodeorder.md
    • Created a versioned copy of the 'Nodeorder' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/numa-aware.md
    • Created a versioned copy of the 'Numa-aware' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/predicates.md
    • Created a versioned copy of the 'Predicates' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/priority.md
    • Created a versioned copy of the 'Priority' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/proportion.md
    • Created a versioned copy of the 'Proportion' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/sla.md
    • Created a versioned copy of the 'SLA' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/task-topology.md
    • Created a versioned copy of the 'Task-topology' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/scheduler/plugins/tdm.md
    • Created a versioned copy of the 'TDM' scheduler plugin documentation for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/category.json
    • Defined the category metadata for the versioned 'Tutorial - Basics' section for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/congratulations.md
    • Created a versioned copy of the 'Congratulations!' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/create-a-blog-post.md
    • Created a versioned copy of the 'Create a Blog Post' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/create-a-document.md
    • Created a versioned copy of the 'Create a Document' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/create-a-page.md
    • Created a versioned copy of the 'Create a Page' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/deploy-your-site.md
    • Created a versioned copy of the 'Deploy your site' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-basics/markdown-features.mdx
    • Created a versioned copy of the 'Markdown Features' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-extras/category.json
    • Defined the category metadata for the versioned 'Tutorial - Extras' section for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-extras/manage-docs-versions.md
    • Created a versioned copy of the 'Manage Docs Versions' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_docs/version-1.12/tutorial-extras/translate-your-site.md
    • Created a versioned copy of the 'Translate your site' tutorial page for v1.12.
  • volcano-docs-docusaurus/versioned_sidebars/version-1.12-sidebars.json
    • Generated a versioned sidebar configuration for v1.12 documentation, mirroring the main sidebar structure.
  • volcano-docs-docusaurus/versions.json
    • Initialized the versions.json file to manage documentation versions, listing '1.12' as the first version.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/docs-build.yml
Activity
  • This pull request introduces a new Docusaurus-based website and documentation structure. As a proof-of-concept, it primarily involves initial setup and content migration.
  • The author has added a comprehensive set of documentation for Volcano's scheduler plugins and actions, organized into a new structure.
  • New UI components and custom styling have been implemented for the homepage, enhancing the visual appeal and user experience.
  • Docusaurus versioning has been configured, with a snapshot of the v1.12 documentation created.
  • A GitHub Actions workflow has been set up to automatically validate documentation builds, ensuring the integrity of the new site.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This is an excellent proof-of-concept for migrating the Volcano website to Docusaurus. The new homepage is a significant improvement with its modern design and engaging animations. The documentation for the scheduler has been well-structured into plugins and actions, which will make it much easier for users to navigate. The use of versioning and CI for build validation are also great additions.

My review includes a few critical and medium-severity suggestions to improve the project's stability, maintainability, and correctness before the full migration. These include addressing a corrupted logo file, using stable dependencies, removing placeholder configurations, and improving code style by avoiding inline styles. Overall, this is a very strong start and a promising direction for the Volcano website.

@@ -0,0 +1 @@
<svg width="200" height="200" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path fill="#FFF" d="M99 52h84v34H99z"/><path d="M23 163c-7.398 0-13.843-4.027-17.303-10A19.886 19.886 0 0 0 3 163c0 11.046 8.954 20 20 20h20v-20H23z" fill="#3ECC5F"/><path d="M112.98 57.376L183 53V43c0-11.046-8.954-20-20-20H73l-2.5-4.33c-1.112-1.925-3.889-1.925-5 0L63 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L53 23l-2.5-4.33c-1.111-1.925-3.889-1.925-5 0L43 23c-.022 0-.042.003-.065.003l-4.142-4.141c-1.57-1.571-4.252-.853-4.828 1.294l-1.369 5.104-5.192-1.392c-2.148-.575-4.111 1.389-3.535 3.536l1.39 5.193-5.102 1.367c-2.148.576-2.867 3.259-1.296 4.83l4.142 4.142c0 .021-.003.042-.003.064l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 53l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 63l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 73l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 83l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 93l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 103l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 113l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 123l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 133l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 143l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 153l-4.33 2.5c-1.925 1.111-1.925 3.889 0 5L23 163c0 11.046 8.954 20 20 20h120c11.046 0 20-8.954 20-20V83l-70.02-4.376A10.645 10.645 0 0 1 103 68c0-5.621 4.37-10.273 9.98-10.624" fill="#3ECC5F"/><path fill="#3ECC5F" d="M143 183h30v-40h-30z"/><path d="M193 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 190.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M153 123h30v-20h-30z"/><path d="M193 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 183 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M63 55.5a2.5 2.5 0 0 1-2.5-2.5c0-4.136-3.364-7.5-7.5-7.5s-7.5 3.364-7.5 7.5a2.5 2.5 0 1 1-5 0c0-6.893 5.607-12.5 12.5-12.5S65.5 46.107 65.5 53a2.5 2.5 0 0 1-2.5 2.5" fill="#000"/><path d="M103 183h60c11.046 0 20-8.954 20-20V93h-60c-11.046 0-20 8.954-20 20v70z" fill="#FFFF50"/><path d="M168.02 124h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0-49.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 19.814h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2m0 20h-50.04a1 1 0 1 1 0-2h50.04a1 1 0 1 1 0 2M183 61.611c-.012 0-.022-.006-.034-.005-3.09.105-4.552 3.196-5.842 5.923-1.346 2.85-2.387 4.703-4.093 4.647-1.889-.068-2.969-2.202-4.113-4.46-1.314-2.594-2.814-5.536-5.963-5.426-3.046.104-4.513 2.794-5.807 5.167-1.377 2.528-2.314 4.065-4.121 3.994-1.927-.07-2.951-1.805-4.136-3.813-1.321-2.236-2.848-4.75-5.936-4.664-2.994.103-4.465 2.385-5.763 4.4-1.373 2.13-2.335 3.428-4.165 3.351-1.973-.07-2.992-1.51-4.171-3.177-1.324-1.873-2.816-3.993-5.895-3.89-2.928.1-4.399 1.97-5.696 3.618-1.232 1.564-2.194 2.802-4.229 2.724a1 1 0 0 0-.072 2c3.017.101 4.545-1.8 5.872-3.487 1.177-1.496 2.193-2.787 4.193-2.855 1.926-.082 2.829 1.115 4.195 3.045 1.297 1.834 2.769 3.914 5.731 4.021 3.103.104 4.596-2.215 5.918-4.267 1.182-1.834 2.202-3.417 4.15-3.484 1.793-.067 2.769 1.35 4.145 3.681 1.297 2.197 2.766 4.686 5.787 4.796 3.125.108 4.634-2.62 5.949-5.035 1.139-2.088 2.214-4.06 4.119-4.126 1.793-.042 2.728 1.595 4.111 4.33 1.292 2.553 2.757 5.445 5.825 5.556l.169.003c3.064 0 4.518-3.075 5.805-5.794 1.139-2.41 2.217-4.68 4.067-4.773v-2z" fill="#000"/><path fill="#3ECC5F" d="M83 183h40v-40H83z"/><path d="M143 158c-.219 0-.428.037-.639.064-.038-.15-.074-.301-.116-.451A5 5 0 0 0 140.32 148a4.96 4.96 0 0 0-3.016 1.036 26.531 26.531 0 0 0-.335-.336 4.955 4.955 0 0 0 1.011-2.987 5 5 0 0 0-9.599-1.959c-.148-.042-.297-.077-.445-.115.027-.211.064-.42.064-.639a5 5 0 0 0-5-5 5 5 0 0 0-5 5c0 .219.037.428.064.639-.148.038-.297.073-.445.115a4.998 4.998 0 0 0-9.599 1.959c0 1.125.384 2.151 1.011 2.987-3.717 3.632-6.031 8.693-6.031 14.3 0 11.046 8.954 20 20 20 9.339 0 17.16-6.41 19.361-15.064.211.027.42.064.639.064a5 5 0 0 0 5-5 5 5 0 0 0-5-5" fill="#44D860"/><path fill="#3ECC5F" d="M83 123h40v-20H83z"/><path d="M133 115.5a2.5 2.5 0 1 0 0-5c-.109 0-.214.019-.319.032-.02-.075-.037-.15-.058-.225a2.501 2.501 0 0 0-.963-4.807c-.569 0-1.088.197-1.508.518a6.653 6.653 0 0 0-.168-.168c.314-.417.506-.931.506-1.494a2.5 2.5 0 0 0-4.8-.979A9.987 9.987 0 0 0 123 103c-5.522 0-10 4.478-10 10s4.478 10 10 10c.934 0 1.833-.138 2.69-.377a2.5 2.5 0 0 0 4.8-.979c0-.563-.192-1.077-.506-1.494.057-.055.113-.111.168-.168.42.321.939.518 1.508.518a2.5 2.5 0 0 0 .963-4.807c.021-.074.038-.15.058-.225.105.013.21.032.319.032" fill="#44D860"/><path d="M143 41.75c-.16 0-.33-.02-.49-.05a2.52 2.52 0 0 1-.47-.14c-.15-.06-.29-.14-.431-.23-.13-.09-.259-.2-.38-.31-.109-.12-.219-.24-.309-.38s-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.16.02-.33.05-.49.03-.16.08-.31.139-.47.061-.15.141-.29.231-.43.09-.13.2-.26.309-.38.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.65-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.11.12.22.25.31.38.09.14.17.28.23.43.06.16.11.31.14.47.029.16.05.33.05.49 0 .66-.271 1.31-.73 1.77-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19m20-1.25c-.66 0-1.3-.27-1.771-.73a3.802 3.802 0 0 1-.309-.38c-.09-.14-.17-.28-.231-.43a2.619 2.619 0 0 1-.189-.96c0-.66.27-1.3.729-1.77.121-.11.25-.22.38-.31.141-.09.281-.17.431-.23.149-.06.31-.11.47-.14.32-.07.66-.07.98 0 .159.03.32.08.47.14.149.06.29.14.43.23.13.09.259.2.38.31.459.47.73 1.11.73 1.77 0 .16-.021.33-.05.49-.03.16-.08.32-.14.47-.07.15-.14.29-.23.43-.09.13-.2.26-.31.38-.121.11-.25.22-.38.31-.14.09-.281.17-.43.23a2.565 2.565 0 0 1-.96.19" fill="#000"/></g></svg> No newline at end of file

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

The logo.svg file appears to be corrupted or incorrectly generated. It seems to contain elements of the Docusaurus "keytar" logo underneath a white rectangle. This should be corrected to use a clean version of the Volcano logo to ensure proper branding and avoid any potential licensing issues with embedded assets.

Comment on lines +23 to +24
"react": "^19.0.0",
"react-dom": "^19.0.0"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The project is configured to use React 19, which is currently in a release candidate stage. Using pre-release versions of core dependencies like React in a production project is risky and can lead to unexpected issues and breaking changes. It's recommended to use the latest stable version of React 18, which is officially supported by Docusaurus v3, to ensure stability.

Suggested change
"react": "^19.0.0",
"react-dom": "^19.0.0"
"react": "^18.0.0",
"react-dom": "^18.0.0"

},

// Set the production url of your site here
url: 'https://your-docusaurus-site.example.com',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The url field in the configuration is set to a placeholder value. This should be updated to the actual production URL of the website to ensure that metadata, sitemaps, and canonical URLs are generated correctly.

Suggested change
url: 'https://your-docusaurus-site.example.com',
url: 'https://volcano.sh',

Comment on lines +57 to +58
editUrl:
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The editUrl for the blog is pointing to a placeholder URL from the Docusaurus template repository. This should be updated to point to the correct location in the Volcano project repository to allow users to easily suggest edits to blog posts.

Suggested change
editUrl:
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
editUrl:
'https://github.com/volcano-sh/website/tree/main/volcano-docs-docusaurus/',


themeConfig: {
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The image property in themeConfig is using a placeholder social card image from Docusaurus. This should be replaced with a Volcano-branded image to ensure proper branding when links to the site are shared on social media.

Suggested change
image: 'img/docusaurus-social-card.jpg',
image: 'img/volcano-social-card.jpg',

Comment on lines +117 to +123
label: 'Architecture',
to: '/docs/intro',
},
{
label: 'Getting Started',
to: '/docs/intro',
},

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Some of the links in the footer, such as 'Architecture' and 'Getting Started', point to the placeholder /docs/intro page. These should be updated to point to the correct, relevant pages once they are created to improve site navigation.

            {
              label: 'Architecture',
              to: '/docs/architecture', // TODO: Update to correct path
            },
            {
              label: 'Getting Started',
              to: '/docs/getting-started', // TODO: Update to correct path
            },

Comment on lines +10 to +32
const Figure: React.FC<FigureProps> = ({ src, title, alt, width }) => {
return (
<figure style={{ textAlign: 'center', margin: '1.5rem 0' }}>
<img
src={src}
alt={alt || title || 'Figure'}
style={{
maxWidth: width || '100%',
height: 'auto',
display: 'block',
margin: '0 auto',
}}
/>
{title && (
<figcaption style={{ marginTop: '0.5rem', fontStyle: 'italic', color: '#666' }}>
{title}
</figcaption>
)}
</figure>
);
};

export default Figure;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The Figure component uses inline styles for layout and presentation. It's a best practice to move these styles into a dedicated CSS module (.module.css). This improves maintainability, allows for easier theming (e.g., for dark mode), and separates concerns between component logic and styling.

For example, you could create a Figure.module.css file with the following content:

.figure {
  text-align: center;
  margin: 1.5rem 0;
}

.figureImg {
  height: auto;
  display: block;
  margin: 0 auto;
}

.figureCaption {
  margin-top: 0.5rem;
  font-style: italic;
  color: #666;
}

[data-theme='dark'] .figureCaption {
  color: #9e9e9e;
}

And then update the component to use these classes:

import React from 'react';
import styles from './Figure.module.css';

// ... (interface remains the same)

const Figure: React.FC<FigureProps> = ({ src, title, alt, width }) => {
    return (
        <figure className={styles.figure}>
            <img
                src={src}
                alt={alt || title || 'Figure'}
                className={styles.figureImg}
                style={{ maxWidth: width || '100%' }}
            />
            {title && (
                <figcaption className={styles.figureCaption}>
                    {title}
                </figcaption>
            )}
        </figure>
    );
};

Comment on lines 157 to 170
<Heading as="h1" className="hero__title" style={{
fontSize: '3.5rem',
marginBottom: '1rem',
// color handled by CSS variable
}}>
Volcano
</Heading>
<p className="hero__subtitle" style={{
fontSize: '1.3rem',
marginBottom: '2rem',
// color handled by CSS variable
}}>
Cloud-Native Batch Scheduling for Kubernetes and AI Workloads
</p>

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The HomepageHero component uses inline styles for font sizes and margins. To improve maintainability and ensure a consistent design system, it's better to move these styles to the corresponding CSS module (index.module.css). This keeps styling separate from the component's logic and makes it easier to manage theme changes.

For example, you could add these classes to index.module.css:

.heroTitle {
  font-size: 3.5rem;
  margin-bottom: 1rem;
}

.heroSubtitle {
  font-size: 1.3rem;
  margin-bottom: 2rem;
}

And then apply them in your component:

<Heading as="h1" className={clsx('hero__title', styles.heroTitle)}>
  Volcano
</Heading>
<p className={clsx('hero__subtitle', styles.heroSubtitle)}>
  Cloud-Native Batch Scheduling for Kubernetes and AI Workloads
</p>

@aaradhychinche-alt aaradhychinche-alt force-pushed the feat/docusaurus-migration-poc branch from 081c6b3 to ae508c4 Compare February 8, 2026 06:42
@codeEvolveZenith345
Copy link
Contributor

The preview does not show it is functionally Docusaurus; please add the .docusaurus and .config files that Docusaurus uses for the build, or else this PR does not make any sense? You just changed file/folder name...based on the Netlify preview.

@aaradhychinche-alt aaradhychinche-alt force-pushed the feat/docusaurus-migration-poc branch from ae508c4 to 72b4158 Compare February 8, 2026 10:47
@aaradhychinche-alt
Copy link
Author

The preview does not show it is functionally Docusaurus; please add the .docusaurus and .config files that Docusaurus uses for the build, or else this PR does not make any sense? You just changed file/folder name...based on the Netlify preview.

Thanks for calling that out — agreed that the preview was misleading.

I’ve added:

A Netlify config that builds the Docusaurus site from volcano-docs-docusaurus/

Root-level migration docs explaining the structure and rollout plan

Validation + quick-start instructions

CI confirmation

The preview should now reflect the Docusaurus build instead of Hugo.

@volcano-sh-bot volcano-sh-bot added the do-not-merge/invalid-commit-message Indicates that a PR should not merge because it has an invalid commit message. label Feb 8, 2026
Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
…aurus migration

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
…rformance optimizations

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
Regenerate package-lock.json to fix Netlify deploy preview failure:
- npm error: package.json and package-lock.json out of sync
- Missing: search-insights@2.17.3 from lock file

Changes:
- @types/node: 25.2.1 -> 25.2.2 (patch update)
- Lockfile now fully deterministic for npm ci

Verified:
- npm ci passes without errors
- npm run build succeeds (compiled in ~11s)
- No dependency upgrades, only lockfile sync

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
…licit config

Root cause: Netlify cache poisoning + ambiguous npm configuration
- Removed NPM_FLAGS=--legacy-peer-deps (interferes with lockfile validation)
- Added 'rm -rf node_modules' to all build commands (cache busting)
- Added NPM_CONFIG_WORKSPACE=false (prevent parent directory search)
- Added NPM_CONFIG_LOGLEVEL=verbose (better debugging)

The issue was NOT missing search-insights in lockfile (it's present).
The issue was Netlify's cached node_modules + legacy-peer-deps flag
causing npm to bypass strict lockfile validation.

Verified locally:
- rm -rf node_modules && npm ci -> SUCCESS (1296 packages, 0 vulnerabilities)
- npm run build -> SUCCESS (compiled in ~11s)

This ensures deterministic builds by forcing fresh installs and
explicit npm configuration on every Netlify deploy.

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
…allation

The NPM_CONFIG_WORKSPACE=false setting was causing Netlify's automatic
'npm install' during dependency installation phase to fail with:

  npm error No workspaces found: --workspace=false

This happens because:
1. Netlify runs 'npm install' before our custom build command
2. NPM_CONFIG_WORKSPACE=false is applied to that command
3. npm interprets --workspace=false as expecting a workspace setup
4. Since we don't have workspaces, it errors out

Solution: Remove NPM_CONFIG_WORKSPACE entirely
- We only have ONE package.json (no workspaces)
- No parent directory search issues
- Cache busting (rm -rf node_modules) is sufficient

Kept NPM_CONFIG_LOGLEVEL=verbose for debugging.

This should allow Netlify's dependency installation to succeed.

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
Remove internal troubleshooting files created during Netlify/CI debugging:
- GIT-COMMIT-SUMMARY.md - Temporary commit guidance
- NETLIFY-BUILD-FIX.md - Debugging notes
- NETLIFY-CI-FIX-SUMMARY.md - Troubleshooting summary
- QUICK-FIX-CHECKLIST.md - Internal quick reference
- QUICK-START.md - Duplicate quick start (covered in migration docs)
- TASK-COMPLETION-SUMMARY.md - Internal task tracking

Kept for reviewers/contributors:
- Docusaurus-MIGRATION.md - Essential migration guide
- MIGRATION-VALIDATION.md - Validation report for reviewers
- DCO-FIX-INSTRUCTIONS.md - Contributor guide

This cleanup reduces PR noise while preserving documentation
valuable to CNCF reviewers and future contributors.

Verified:
- npm ci passes
- npm run build passes

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
The publish path needs to be relative to the repo root, not the base directory.
Netlify was looking for /opt/build/repo/build instead of
/opt/build/repo/volcano-docs-docusaurus/build.

Changed:
- publish = "build" (relative to base, but Netlify misinterprets)
- publish = "volcano-docs-docusaurus/build" (explicit repo-root relative)

This fixes the deploy error:
'Deploy directory build does not exist'

Tested: Build output is at volcano-docs-docusaurus/build/
Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
@aaradhychinche-alt aaradhychinche-alt force-pushed the feat/docusaurus-migration-poc branch from e478f8d to c3c9f79 Compare February 10, 2026 04:51
Netlify concatenates base + publish paths, causing doubled path:
- base = 'volcano-docs-docusaurus'
- publish = 'volcano-docs-docusaurus/build'
- Result: /opt/build/repo/volcano-docs-docusaurus/volcano-docs-docusaurus/build ❌

Correct configuration:
- base = 'volcano-docs-docusaurus'
- publish = 'build' (relative to base)
- Result: /opt/build/repo/volcano-docs-docusaurus/build ✅

This fixes deploy error:
'Deploy directory volcano-docs-docusaurus/volcano-docs-docusaurus/build does not exist'

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
… UI settings

The CNCF Volcano Netlify has Hugo build settings in the UI that we cannot
change. To ensure our Docusaurus build works for PR previews, we need to
explicitly set base, command, and publish in EVERY context.

Changes:
- Added base/command/publish to [context.production]
- Added base/publish to [context.deploy-preview]
- Added base/publish to [context.branch-deploy]
- Added NPM_CONFIG_LOGLEVEL to all contexts for debugging

This ensures netlify.toml fully overrides any UI configuration for:
- Production deploys
- Deploy previews (PRs) ← Most important for migration review
- Branch deploys

Without this, Netlify uses Hugo command from UI settings instead of
our Docusaurus build, causing deploy failures.

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
…resolution

Netlify's base + publish concatenation is not working correctly.
When base='volcano-docs-docusaurus' and publish='build', Netlify resolves
to /opt/build/repo/build instead of /opt/build/repo/volcano-docs-docusaurus/build.

Workaround: Use explicit full path from repo root for all contexts.

Changed all publish directives from:
  publish = 'build'
To:
  publish = 'volcano-docs-docusaurus/build'

This ensures Netlify finds the build output at the correct location
regardless of base directory resolution issues.

Signed-off-by: Aaradhy Chinche <aaradhychinche@gmail.com>
@volcano-sh-bot
Copy link
Collaborator

Keywords which can automatically close issues and at(@) or hashtag(#) mentions are not allowed in commit messages.

The list of commits with invalid commit messages:

  • 9db8962 chore: sync lockfile for Netlify npm ci compatibility
Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/invalid-commit-message Indicates that a PR should not merge because it has an invalid commit message. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants