Central content only

  hugo server --themesDir ../
  

This does not fetch products and needs no product credentials.

Include product documentation

  bash scripts/fetch-docs.sh
hugo server --themesDir ../ --config hugo.toml,_generated/imports.toml
  

The importer fetches the current remote default branch for every registered product. It uses sparse checkouts under _sources/ and generates Hugo mounts under _generated/. Both are ignored by Git.

Git uses HTTPS for imports. Configure your normal Git credential helper, or an SSH URL rewrite if you already use SSH access:

  git config --global url."git@github.com:".insteadOf https://github.com/
  

That command changes your global Git configuration; use it only if you want GitHub HTTPS Git URLs to use SSH on your machine. Never place tokens in the product registry or repository URLs.

For a production-like local build:

  hugo --themesDir ../ --config hugo.toml,_generated/imports.toml --minify
  

Without --themesDir ../, Hugo expects a separate theme checkout at themes/kyanis-hugo-theme, matching CI.

Theme changes

Local preview uses the current sibling theme working tree, including uncommitted changes. CI instead checks out the published commit in theme-ref.txt. Publish theme changes through the theme repository’s normal review process, then update that file to the new full commit SHA.

Troubleshooting

  • Repository not found: verify the registry’s owner/name and your access. The import fails instead of silently omitting that product.
  • Uncommitted changes in a fetched checkout: move your edits back to the product repository and resolve them before fetching again.
  • Missing _index.md: add a section index to the affected language root.
  • MDX unsupported: use Markdown and Hugo shortcodes.
  • Theme not found: check the sibling folder name and --themesDir.
  • Module download error: check Go, network access, and go.sum.
  • Missing translation: confirm that the translated file actually exists with the same relative path in the other language.

Failed imports do not replace the last generated mount configuration. Do not ignore the command’s exit status and then build stale generated input.