| --- |
| title: "Docs contribution workflow" |
| --- |
| |
| This page guides you through contributing to the Bazel |
| documentation, from a one-line typo fix to adding a new page. For style |
| guidance, see the [Bazel docs style guide](/contribute/docs-style-guide). |
| |
| ## Bazel docs structure {#structure} |
| |
| The source of truth for Bazel documentation is `bazelbuild/bazel`, where docs |
| live alongside the code. `bazel-contrib/bazel-docs` is the hosting and pipeline |
| layer: it syncs content from `bazelbuild/bazel`, generates PR previews, and |
| holds Mintlify configuration. **Content changes always go to `bazelbuild/bazel`.** |
| |
| | Repository | What it contains | |
| | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | |
| | [`bazelbuild/bazel`](https://github.com/bazelbuild/bazel) | All doc content (`docs/` folder). This is where you make changes. | |
| | [`bazel-contrib/bazel-docs`](https://github.com/bazel-contrib/bazel-docs) | Hosting pipeline. Syncs from `bazelbuild/bazel`, generates PR previews, and deploys to [preview.bazel.build](https://preview.bazel.build). | |
| |
| {/* TODO: Update preview.bazel.build to bazel.build once the domain cutover happens. Tracked in https://github.com/bazel-contrib/bazel-docs/issues/453 */} |
| |
| Bazel docs use [MDX format](https://mdxjs.com/), Markdown with a YAML |
| frontmatter block at the top. Every page must start with: |
| |
| ``` |
| --- |
| title: 'Your Page Title' |
| --- |
| ``` |
| |
| ## Prerequisites {#prerequisites} |
| |
| Before you start, you need: |
| |
| - A [GitHub account](https://github.com) |
| - A fork of [`bazelbuild/bazel`](https://github.com/bazelbuild/bazel) |
| - [Git](https://git-scm.com/) |
| - The [Mintlify CLI](https://www.mintlify.com/docs/cli/install) for local preview. |
| |
| ## Make a minor change {#quick-fix} |
| |
| For small isolated changes, such as a typo, broken link, phrasing tweaks, you can edit directly in the GitHub web UI without |
| cloning anything. |
| |
| 1. Find the file in |
| [`bazelbuild/bazel/docs/`](https://github.com/bazelbuild/bazel/tree/master/docs) |
| on GitHub. |
| 2. To edit the file, click the **pencil icon** in the top-right corner. |
| 3. Make your edit. |
| 4. Click **Commit changes...**, provide a commit message, and click **Propose changes"**. |
| 5. GitHub prompts you to open a pull request. Set the base branch to |
| **`master`** and click **Create pull request** it. |
| |
| ## Update existing content {#updating-content} |
| |
| Use this workflow for anything larger than a typo, such as rewording a section, |
| correcting outdated information, or adding a paragraph to an existing page. |
| |
| ### Set up locally |
| |
| Fork [`bazelbuild/bazel`](https://github.com/bazelbuild/bazel) on GitHub first, then clone the repo and add the upstream remote: |
| |
| ```bash |
| git clone https://github.com/YOUR_USERNAME/bazel.git |
| cd bazel |
| git remote add upstream https://github.com/bazelbuild/bazel.git |
| ``` |
| |
| ### Make and preview your changes |
| |
| Check out a new branch off of `master`. |
| |
| ```bash |
| git fetch upstream |
| git checkout -b my-doc-fix upstream/master |
| ``` |
| |
| Edit the file in `docs/`, for example, `docs/concepts/labels.mdx`. |
| |
| To preview locally, you need a local copy of `bazel-contrib/bazel-docs`: |
| |
| ```bash |
| # One-time setup |
| git clone https://github.com/bazel-contrib/bazel-docs.git |
| cd bazel-docs |
| ``` |
| |
| Copy your changed file(s) into the local `bazel-docs` mirror to preview them: |
| |
| ```bash |
| cp ~/path/to/bazel/docs/concepts/labels.mdx concepts/labels.mdx |
| |
| # Start the local dev server |
| mintlify dev |
| ``` |
| |
| Open [http://localhost:3000](http://localhost:3000) to render your changes. |
| |
| ### Commit and open a PR |
| |
| Add, commit, and push your changes: |
| |
| ```bash |
| git add --all # stage all changes |
| git commit -m "docs: your commit msg here" |
| git push origin my-doc-fix # push to GitHub |
| ``` |
| |
| Open a pull request on GitHub from your fork to **`bazelbuild/bazel` master**. |
| |
| ## Add a new section to an existing page {#new-section} |
| |
| Follow the same workflow as [Update existing content](#updating-content). A few things to keep in mind: |
| |
| **Add a heading anchor ID.** Every heading should have an explicit `{#id}` so |
| URLs to that section stay stable even if the heading text changes: |
| |
| ```md |
| ## My new section {#my-new-section} |
| ``` |
| |
| **Use sentence case for headings.** Write "Getting started" not |
| "Getting Started". |
| |
| **Keep the heading hierarchy consistent.** Pages use H2 (`##`) for top-level |
| sections and H3 (`###`) for subsections. Don't skip levels. |
| |
| **Update the page if there's a table of contents or "On this page" intro.** |
| Some pages have an introductory list of topics. Add your section there too. |
| |
| ## Add a new page {#new-page} |
| |
| 1. Create the MDX file in the appropriate `docs/` subdirectory. |
| Every file must start with frontmatter: |
| |
| ``` |
| --- |
| title: 'Your Page Title' |
| --- |
| ``` |
| |
| 2. Add your page to the sidebar navigation. This requires a separate change |
| in `bazel-contrib/bazel-docs`. See |
| [Update the docs navigation](/contribute/docs-navigation) for instructions. |
| For an initial PR, you can skip this and ask a maintainer to help. |
| |
| 3. Follow the same branch, commit, and PR steps as [Update existing content](#updating-content). |
| |
| ## MDX basics for doc contributors {#mdx-basics} |
| |
| MDX is mostly standard Markdown with a few differences. |
| |
| ### Self-closing HTML tags {#self-closing-tags} |
| |
| JSX requires void elements to be self-closing. Use `<img ... />` and |
| `<br />`, not `<img ...>` or `<br>`. |
| |
| ### Links {#links} |
| |
| Use root-relative paths for internal links. Don't include the `.mdx` extension in the links: |
| |
| ```md |
| [labels](/concepts/labels) |
| [style guide](/contribute/docs-style-guide) |
| ``` |
| |
| ### Code blocks {#code-blocks} |
| |
| Always specify a language for syntax highlighting: |
| |
| ````md |
| ```bash |
| bazel build //my/example:app |
| ``` |
| ```` |
| |
| Common languages used in Bazel docs: `bash`, `python`, `starlark`, `json`, |
| `posix-terminal`. |
| |
| ### Images {#images} |
| |
| Place images in the `images/` subdirectory alongside your MDX file and |
| reference them with a root-relative path: |
| |
| ```md |
|  |
| ``` |
| |
| Use self-closing syntax: Markdown image syntax does not require the trailing `/>`, |
| but `<img>` tags must self-close when you use them directly: |
| |
| ```md |
| <img src="/contribute/images/my-diagram.png" alt="Alt text" width="400" /> |
| ``` |
| |
| ### Notes and callouts {#callouts} |
| |
| Mintlify supports callout components. Use them for important warnings or tips: |
| |
| ```md |
| <Note> |
| This is a note. |
| </Note> |
| |
| <Warning> |
| This is a warning. |
| </Warning> |
| ``` |
| |
| For a full list of Mintlify formatting components (tabs, accordions, cards, |
| and more), see the [Mintlify text formatting docs](https://mintlify.com/docs/create/text). |
| |
| ## What to expect after submitting {#after-submitting} |
| |
| - The Google CLA bot checks that you've signed the |
| [Contributor License Agreement](https://cla.developers.google.com/). You |
| only need to do this once. |
| - CI runs a docs validation check. |
| - A maintainer reviews your PR and might request edits. Response times vary. |
| - Once approved, a maintainer merges your changes to `master`. They appear on |
| the live site after the next sync. |
| |
| <Tip> |
| If your new page does not appear in the sidebar of the PR preview, use the |
| black file-changes icon in the preview to navigate directly to it. New pages |
| do not appear in the sidebar until you update the navigation in |
| `bazel-contrib/bazel-docs`. |
| </Tip> |
| |
| ## Get help {#getting-help} |
| |
| - Join the [Bazel community Slack](https://slack.bazel.build) and ask in the |
| `#documentation` channel. This is the best place for quick questions about |
| the docs platform or contribution process. |
| - File an issue in [`bazelbuild/bazel`](https://github.com/bazelbuild/bazel/issues) |
| with the label `type: documentation`. |
| - For questions about the docs platform, open an |
| issue in [`bazel-contrib/bazel-docs`](https://github.com/bazel-contrib/bazel-docs/issues). |