This is where you’ll find all of the assets that make up helm.sh, the website for the Helm project. If you’re looking to edit docs, report a website bug, or write a new blog post, you’ve come to the right place!
Development
Helm.sh is a simple Docusaurus static site. To run the website locally, you’ll need to first install the dependencies:
yarn
You can then compile and run the site locally:
yarn start
Deployment
Changes are automatically deployed to Netlify when merged to main. Build logs can be found here.
Contributing
Anyone can submit a PR to edit Helm.sh. We require commits be signed - please refer to the contributing guide.
Pull requests require maintainer approval before merge.
Helm v4 documentation is located in this repo under /docs/. The sidebar for the Helm v4 docs is located at sidebars.js.
Helm v3 documentation is located under versioned-docs/version-3. The sidebar for the Helm v3 docs is located at versioned-sidebars/sidebars-version-2.js
For earlier versions, see the dev-v2 branch of the main Helm repo here.
Community Documentation
The Community section imports content from the helm/community repository. To manage these imported docs:
Download/Update Community Docs
yarn download-remote-community
This command fetches the latest community documentation from the helm/community repository and applies transformations for proper integration.
Clear Community Docs
yarn clear-remote-community
This removes the imported community documentation files (useful before re-importing or for troubleshooting).
The imported docs configuration is defined in docusaurus.config.js under customFields.communityDocs. See ARCHITECTURAL_DECISIONS.md for details on the implementation.
Updating the Helm CLI Reference Docs
The documentation for the list of Helm CLI Commands are exported from the main helm project repo and rendered here on the website as a reference.
Using the automated script
The automated script regenerates and properly formats the CLI documentation:
Generate documentation in <target-directory>/helm/
Apply all necessary post-processing (frontmatter cleanup, link conversion, etc.)
How to Write a Blog Post
Blog posts are created via pull requests. The following steps are used to add them:
Add a new file to the /blog/ directory whose name is the published date and the title. The files must be markdown formatted. See the existing titles for examples of the format
Add the header meta-data to the file using this format.
If this is the first blog post by this author, update /blog/authors.yml to add a new author record.
# authors.yml
johndoe:
name: John Doe
image_url: https://github.com/johndoe.png
page: true
socials:
github: johndoe
linkedin: johndoe
website: http://johndoe.com/
Add the content below the --- as Markdown. The title does not need to be included in this section
Any images should be placed in the /blog/images/ directory. Images should be losslessly compressed to reduce their size. Tools, such as ImageOptim, can be used.
To summarize the content on the blog index page, insert a <!--truncate--> break in your markdown. This will truncate the content with a Read More link.
Blog PRs require approval from the core Helm maintainers before merge.
Versioning
The following files in this repo are used to control versioning:
Versioned documentation is located in versioned_docs.
The corresponding sidebar for each version is located in versioned_sidebars.
Versioning behavior is managed in the docusaurus.config.js file:
export default {
presets: [
'@docusaurus/preset-classic',
docs: {
// lastVersion = the latest released version (either a specific version from /versioned_docs or 'current')
// For any versions not listed as the latest, a banner is automatically displayed to warn users that they are viewing either old or pre-release docs
lastVersion: '3',
versions: {
// current = docs from the top-level /docs directory. These can be pre-release or the latest released version
// label = the version label displayed in the navbar dropdown
current: { label: '4.0.0-alpha.1 🚧' },
// numbered versions correspond to directories in /versioned_docs
'3': { label: '3.19.0' },
'2': { label: '2.17.0' },
},
},
],
};
The list of available versions is maintained in versions.json.
The table below explains the version labels and URL paths that map to versioned docs in this repo:
Repo Path
Version
URL Path
versioned_docs/version-2/filename.md
2.17.0
/docs/2/filename
versioned_docs/version-3/filename.md
3.19.0 (latest)
/docs/filename
docs/filename.md
4.0.0-alpha.1 (current)
/docs/next/filename
How to move pre-release docs to GA
Docusaurus has support for publishing pre-release (alpha, beta) documentation. By default, pre-release documentation is published at helm.sh/docs/next and is served from the top-level /docs directory in this repo. Additionally, Docusaurus automatically applies a banner to all pre-release documentation to notify users that they are viewing unreleased docs.
When a pre-release version of Helm is promoted to GA, do the following to move pre-release docs from helm.sh/docs/next to helm.sh/docs:
Update docusaurus.config.js to set lastVersion to 'current'. This publishes the content of the main /docs folder to helm.sh/docs.
// docusaurus.config.js
lastVersion: 'current',
Update the navbar label for the current version. For example:
Start a local preview to test your changes. You should see that the “unreleased” banner is removed from the current version, and that the current version is now available at helm.sh/docs, rather than at helm.sh/docs/next.
How to cut a new pre-release version
Cutting a new version refers to copying the full /docs directory contents to a versioned folder in versioned_docs. You cut a version when you are ready to publish a new major pre-release version of the docs. This is usually when a new alpha version of Helm is being developed and is ready to be documented.
Note: Cutting a new version is not recommend until a pre-release version of Helm is being developed and is ready to be documented. Otherwise, the docs will need to be maintained in two places (both /docs and the latest /versioned_docs folder), creating extra work for maintainers to make sure they stay in-sync. Instead, see How to move pre-release docs to GA below.
To cut a new version:
Run yarn docusaurus docs:version <version>, where <version> is an integer that corresponds to a major Helm version. For example, when we publish Helm 4.0.0 we will run yarn docusaurus docs:version 4.
This command does the following:
Copies the full docs/ folder contents into a new versioned_docs/version-<version>/ folder.
Creates a versioned sidebars file in versioned_sidebars/version-<version>-sidebars.json.
Appends the new version number to versions.json.
Update the docusaurus.config.js file:
Set lastVersion to to the latest GA version. This ensures that the docs at helm.sh/docs are served from the latest versioned_docs folders. And, the docs at helm.sh/docs/next are served from the main /docs folder.
For example, if you just cut the Helm v4 docs to a versioned_docs/version-4/ directory, and want to publish pre-release docs for version Helm v5.0.0-alpha.1, then set lastVersion to '4'.
Update the navbar label for the current version. For example, to label the current (pre-release) version 5.0.0-alpha.1, update the label as follows:
current: { label: '5.0.0-alpha.1 🚧' },
Start a local preview to test your changes. You should see the new version in the dropdown, be able to access the pre-release docs at helm.sh/docs/next, and see an “unreleased” banner at the top of all the pre-released docs.
For more information about cutting new docs versions, see Versioning in the Docusaurus documentation.
Internationalization & Translation
We welcome content translations to our site and our docs, to help expand access to Helm around the world.
Helm.sh supports multiple languages. Please refer to the Localizing Helm Documentation for a guide on translating and configuring content for international users.
Code of Conduct
Participation in the Helm community is governed by the Helm Code of Conduct.
Thank You!
We appreciate your contributions to our website and our documentation!
This is where you’ll find all of the assets that make up helm.sh, the website for the Helm project. If you’re looking to edit docs, report a website bug, or write a new blog post, you’ve come to the right place!
Development
Helm.sh is a simple Docusaurus static site. To run the website locally, you’ll need to first install the dependencies:
You can then compile and run the site locally:
Deployment
Changes are automatically deployed to Netlify when merged to
main. Build logs can be found here.Contributing
Anyone can submit a PR to edit Helm.sh. We require commits be signed - please refer to the contributing guide.
Pull requests require maintainer approval before merge.
Style Guide
For Helm documentation style guidelines, see Documentation Style Guide.
How to Edit The Helm Docs
Helm v4 documentation is located in this repo under
/docs/. The sidebar for the Helm v4 docs is located atsidebars.js.Helm v3 documentation is located under
versioned-docs/version-3. The sidebar for the Helm v3 docs is located atversioned-sidebars/sidebars-version-2.jsFor earlier versions, see the dev-v2 branch of the main Helm repo here.
Community Documentation
The Community section imports content from the helm/community repository. To manage these imported docs:
Download/Update Community Docs
This command fetches the latest community documentation from the helm/community repository and applies transformations for proper integration.
Clear Community Docs
This removes the imported community documentation files (useful before re-importing or for troubleshooting).
The imported docs configuration is defined in
docusaurus.config.jsundercustomFields.communityDocs. SeeARCHITECTURAL_DECISIONS.mdfor details on the implementation.Updating the Helm CLI Reference Docs
The documentation for the list of Helm CLI Commands are exported from the main helm project repo and rendered here on the website as a reference.
Using the automated script
The automated script regenerates and properly formats the CLI documentation:
The script will:
<target-directory>/helm/How to Write a Blog Post
Blog posts are created via pull requests. The following steps are used to add them:
Add a new file to the
/blog/directory whose name is the published date and the title. The files must be markdown formatted. See the existing titles for examples of the formatAdd the header meta-data to the file using this format.
If this is the first blog post by this author, update
/blog/authors.ymlto add a new author record.Add the content below the
---as Markdown. The title does not need to be included in this sectionAny images should be placed in the
/blog/images/directory. Images should be losslessly compressed to reduce their size. Tools, such as ImageOptim, can be used.To summarize the content on the blog index page, insert a
<!--truncate-->break in your markdown. This will truncate the content with a Read More link.Blog PRs require approval from the core Helm maintainers before merge.
Versioning
The following files in this repo are used to control versioning:
Versioned documentation is located in
versioned_docs.The corresponding sidebar for each version is located in
versioned_sidebars.Versioning behavior is managed in the
docusaurus.config.jsfile:The list of available versions is maintained in
versions.json.The table below explains the version labels and URL paths that map to versioned docs in this repo:
versioned_docs/version-2/filename.mdversioned_docs/version-3/filename.mddocs/filename.mdHow to move pre-release docs to GA
Docusaurus has support for publishing pre-release (alpha, beta) documentation. By default, pre-release documentation is published at helm.sh/docs/next and is served from the top-level
/docsdirectory in this repo. Additionally, Docusaurus automatically applies a banner to all pre-release documentation to notify users that they are viewing unreleased docs.When a pre-release version of Helm is promoted to GA, do the following to move pre-release docs from helm.sh/docs/next to helm.sh/docs:
Update
docusaurus.config.jsto setlastVersionto'current'. This publishes the content of the main/docsfolder to helm.sh/docs.Update the navbar
labelfor thecurrentversion. For example:Start a local preview to test your changes. You should see that the “unreleased” banner is removed from the current version, and that the current version is now available at helm.sh/docs, rather than at helm.sh/docs/next.
How to cut a new pre-release version
Cutting a new version refers to copying the full
/docsdirectory contents to a versioned folder inversioned_docs. You cut a version when you are ready to publish a new major pre-release version of the docs. This is usually when a new alpha version of Helm is being developed and is ready to be documented.Note: Cutting a new version is not recommend until a pre-release version of Helm is being developed and is ready to be documented. Otherwise, the docs will need to be maintained in two places (both
/docsand the latest/versioned_docsfolder), creating extra work for maintainers to make sure they stay in-sync. Instead, see How to move pre-release docs to GA below.To cut a new version:
Run
yarn docusaurus docs:version <version>, where<version>is an integer that corresponds to a major Helm version. For example, when we publish Helm 4.0.0 we will runyarn docusaurus docs:version 4.This command does the following:
docs/folder contents into a newversioned_docs/version-<version>/folder.versioned_sidebars/version-<version>-sidebars.json.versions.json.Update the
docusaurus.config.jsfile:Set
lastVersionto to the latest GA version. This ensures that the docs at helm.sh/docs are served from the latest versioned_docs folders. And, the docs at helm.sh/docs/next are served from the main/docsfolder.For example, if you just cut the Helm v4 docs to a
versioned_docs/version-4/directory, and want to publish pre-release docs for version Helm v5.0.0-alpha.1, then setlastVersionto'4'.Update the navbar
labelfor thecurrentversion. For example, to label the current (pre-release) version5.0.0-alpha.1, update the label as follows:Start a local preview to test your changes. You should see the new version in the dropdown, be able to access the pre-release docs at helm.sh/docs/next, and see an “unreleased” banner at the top of all the pre-released docs.
For more information about cutting new docs versions, see Versioning in the Docusaurus documentation.
Internationalization & Translation
We welcome content translations to our site and our docs, to help expand access to Helm around the world.
Helm.sh supports multiple languages. Please refer to the Localizing Helm Documentation for a guide on translating and configuring content for international users.
Code of Conduct
Participation in the Helm community is governed by the Helm Code of Conduct.
Thank You!
We appreciate your contributions to our website and our documentation!