Welcome to the GitHub repository for Volcano's public website. The docs are hosted at https://volcano.sh.
We use Docusaurus to format and generate our website, and Netlify to manage the deployment of the site. Docusaurus is an open-source static site generator that provides us with templates, content organisation in a standard directory structure, and a website generation engine. You write the pages in Markdown (with YAML front matter), and Docusaurus wraps them up into a website.
Please see How to contribute for instructions on how to contribute, if you are not familiar with the GitHub workflow.
You need the following installed locally:
Mac OS X:
brew install nodeDebian / Ubuntu:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejsWindows:
Download the installer from https://nodejs.org and run it.
Verify your installation:
node --version
npm --versionHere's a quick guide to adding or updating docs and previewing your changes locally.
-
Fork the repo on GitHub and clone it to your local machine:
git clone https://github.com/<your-username>/website.git cd website
-
Install dependencies (you only need to do this once, or when
package.jsonchanges):npm install
-
Start the local development server:
npm run start
The site is now live at http://localhost:3000/ with hot-reload — any changes you save will be reflected immediately in the browser.
To preview the Chinese locale:
npm run start -- --locale zh-Hans
-
Make your changes:
- To add a new doc, create a
.mdfile in the appropriate category folder underdocs/(see How to add a new doc). - To update an existing doc, edit the corresponding
.mdfile underdocs/. - To add a blog post, see How to add a blog post.
- To add a new doc, create a
-
Preview your changes to make sure everything looks correct.
-
Commit and push your changes.
-
Open a pull request on GitHub. See GitHub's documentation on creating pull requests for more details.
To generate a full production build (useful for catching broken links or build errors):
npm run buildYou can serve the production build locally with:
npm run serveHere's how the repository is organised:
website/
├── docs/ # English documentation (default locale, source of truth)
│ ├── Home/ # Introduction & overview
│ ├── GettingStarted/ # Installation & tutorials
│ ├── Concepts/ # Queue, Job, PodGroup, etc.
│ ├── KeyFeatures/ # GPU virtualisation, colocation, etc.
│ ├── Scheduler/ # Scheduler plugins & actions
│ ├── UserGuide/ # How-to guides
│ ├── CLI/ # CLI reference
│ ├── Ecosystem/ # Spark, TensorFlow, Flink integrations
│ └── Contribution/ # Contribution guidelines
│
├── blog/ # Blog posts (Markdown files + authors.yml)
├── versioned_docs/ # Frozen doc snapshots for past releases
├── versioned_sidebars/ # Sidebar snapshots for past releases
│
├── i18n/zh-Hans/ # Chinese (Simplified) translations
│ ├── docusaurus-plugin-content-docs/
│ │ ├── current/ # Translations for the current (latest) docs
│ │ └── version-v1.12.0/ # Translations for v1.12.0, etc.
│ └── docusaurus-plugin-content-blog/
│
│
├── src/ # Custom React components, pages, CSS
├── static/img/ # Images and static assets
├── plugins/ # Custom Docusaurus plugins
│
├── docusaurus.config.js # Main Docusaurus configuration
├── sidebar.js # Sidebar configuration (auto-generated from dirs)
├── versions.json # List of released doc versions
├── package.json # Dependencies and npm scripts
└── netlify.toml # Netlify deployment configuration
- Pick the category folder your doc belongs to under
docs/(e.g.,docs/UserGuide/,docs/Concepts/). - Create a new
.mdfile in that folder. - Add YAML front matter at the top of the file:
--- title: "Your Page Title" sidebar_position: 3 ---
- Write your content in Markdown below the front matter.
- The sidebar is auto-generated from the directory structure, so your new doc will show up automatically.
Each category folder contains a _category_.json file that controls the category label and its position in the sidebar:
{
"label": "Key Features",
"position": 4
}To add a Chinese translation:
- Create the same file at the matching path under the i18n directory. For example:
- English:
docs/Concepts/Queue.md - Chinese:
i18n/zh-Hans/docusaurus-plugin-content-docs/current/Concepts/Queue.md
- English:
- Translate the content and update the
titlein the front matter.
-
Create a new
.mdfile in theblog/directory. -
Add YAML front matter at the top of the file:
--- title: "Your Blog Post Title" description: "Brief summary of the post" authors: ["volcano"] date: 2025-06-01 tags: ["release"] ---
The
authorsfield must match a key defined inblog/authors.yml. -
Use
<!-- truncate -->to mark where the preview snippet ends on the blog listing page.
To add a Chinese translation of a blog post:
-
Create the same
.mdfile at the matching path under thei18nblog directory. For example:- English:
blog/2025-06-01-my-post.md - Chinese:
i18n/zh-Hans/docusaurus-plugin-content-blog/2025-06-01-my-post.md
- English:
-
Translate the content, update the
titleanddescriptionin the front matter, and keep the samedateandauthors.
Docs are versioned to match Volcano releases.
- The
docs/directory is the current (in-development) version of the documentation. - When a new Volcano version is released, the current docs are frozen into a versioned snapshot stored in
versioned_docs/. - The list of all released versions is maintained in
versions.json. - Each frozen version has its own sidebar configuration in
versioned_sidebars/.
When a new Volcano version ships (e.g., v1.13.0), follow both steps below to archive the English docs and the Chinese translations.
Run the Docusaurus versioning command:
npx docusaurus docs:version v1.13.0This command will:
- Copy the entire
docs/directory intoversioned_docs/version-v1.13.0/. - Copy the current sidebar configuration into
versioned_sidebars/version-v1.13.0-sidebars.json. - Add
v1.13.0to theversions.jsonfile.
Note: This command only archives English documentation. Chinese translations must be archived manually.
The Docusaurus versioning command does not handle i18n files. You must manually copy the Chinese translations for the new version:
-
Copy the current Chinese docs to a new versioned directory:
cp -r i18n/zh-Hans/docusaurus-plugin-content-docs/current i18n/zh-Hans/docusaurus-plugin-content-docs/version-v1.13.0
On Windows (PowerShell):
Copy-Item -Recurse i18n/zh-Hans/docusaurus-plugin-content-docs/current i18n/zh-Hans/docusaurus-plugin-content-docs/version-v1.13.0
-
If a
current.jsonfile exists (for label translations), copy it for the new version:cp i18n/zh-Hans/docusaurus-plugin-content-docs/current.json i18n/zh-Hans/docusaurus-plugin-content-docs/version-v1.13.0.json
-
Verify the new version directory was created successfully:
ls i18n/zh-Hans/docusaurus-plugin-content-docs/
You should see
version-v1.13.0/andversion-v1.13.0.jsonalongside the existing versions.
After archiving both English and Chinese docs:
- Update the version label in
docusaurus.config.jsto reflect the new current (next) version. - Run
npm run buildto verify that the new version builds correctly for both locales.
Note: After archiving, the
docs/folder andi18n/.../current/folder continue to be the working directories for the next release. All new documentation changes should go into those directories.
For more details on how Docusaurus versioning works, see the official Docusaurus versioning documentation.