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!
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
Changes are automatically deployed to Netlify when merged to main. Build logs can be found here.
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.
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.
To update these docs, you'll need to:
- Delete all plugins currently installed with
helm plugin uninstall - Navigate to
content/en/docs/helm/ - Run
HOME='~' helm docs --type markdown --generate-headersto generate the markdown docs files, replacing any prior markdown files. Note: Make sure you run the version of helm you want to build the docs for (for example, by checking out the correct tag and building it) - Commit the changes and create a PR to update the website.
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.
--- title: "Blog Title" slug: "blog-slug" # from /blog/authors.yml authors: ["firstlast"] date: "YYYY-MM-DD" ---
-
If this is the first blog post by this author, update
/blog/authors.ymlto 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.
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: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 |
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.jsto setlastVersionto'current'. This publishes the content of the main/docsfolder to helm.sh/docs.// docusaurus.config.js lastVersion: 'current',
-
Update the navbar
labelfor thecurrentversion. For example:// docusaurus.config.js current: { label: '4.0.0' },
-
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.
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 runyarn docusaurus docs:version 4.This command does the following:
- Copies the full
docs/folder contents into a newversioned_docs/version-<version>/folder. - Creates a versioned sidebars file in
versioned_sidebars/version-<version>-sidebars.json. - Appends the new version number to
versions.json.
- Copies the full
-
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: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.
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.
Participation in the Helm community is governed by the Helm Code of Conduct.
We appreciate your contributions to our website and our documentation! π
