Skip to content

feat(techdocs): build Backstage TechDocs in CI and publish them to S3/MinIO - #425

Merged
patrick-hermann-sva merged 1 commit into
mainfrom
feat/techdocs-module
Oct 18, 2026
Merged

patrick-hermann-sva merged 1 commit into
mainfrom
feat/techdocs-module

Conversation

@patrick-hermann-sva

Copy link
Copy Markdown
Contributor

What

New module techdocs. TechDocs are built in CI and published to S3/MinIO. Backstage then runs with techdocs.builder: external and an awsS3 publisher, and only reads the finished HTML. Today mkdocs runs inside the Backstage pod (builder: local, runIn: local), which is why the image ships Python and mkdocs.

Function
generate techdocs-cli generate --no-docker → site directory
entity <namespace>/<kind>/<name> of the entity in catalog-info.yaml that carries backstage.io/techdocs-ref (multi-document; namespace defaults to default; errors if there are none or several)
publish techdocs-cli publish --publisher-type awsS3 --awsS3ForcePathStyle, optional --ca-cert for a private CA (Vault PKI). Never cached, because an upload is a side effect
generate-and-publish all of the above; --entity defaults to the catalog file

Pinned with Renovate annotations (they match the existing customManagers regex):

  • mkdocs-techdocs-core 1.7.1 (pypi)
  • @techdocs/cli 1.12.0 (npm)
  • Node.js 22.23.3 from nodejs.org, checked against SHASUMS256.txt (same pattern as sops/age)
  • python:3.13-slim by digest

Tests

  • Locally, without a Dagger engine. The engine image cannot be pulled in my environment, so I ran the same steps in docker run on the same base image, with the same Node tarball check and the same versions:
    • generate on stuttgart-things/flux → site including techdocs_metadata.json
    • publish against a local S3 (moto) → 89 objects under techdocs/default/component/flux/
  • Unit test entity_test.go (multi-document, namespace, none/several with techdocs-ref): green. It needs a dummy DAGGER_SESSION_PORT, because the generated package connects in init.
  • New smoke test tests/smoke/techdocs.sh, added to the CI allowlist and as task test-techdocs: entity and generate on the fixture tests/techdocs. This is the first real run through the Dagger engine. publish is not covered, because it needs S3 credentials. It will be tested on the pilot repo.

Next

The reusable workflow in github-workflow-templates, the TechDocs hooks in flux/apps/backstage, and the pilot on sthings-platform.


Generated by Claude Code

…/MinIO

New module techdocs: generate (techdocs-cli generate --no-docker),
entity (namespace/kind/name of the catalog-info.yaml entity carrying
backstage.io/techdocs-ref), publish (techdocs-cli publish --publisher-type
awsS3, path-style for MinIO, optional private CA) and
generate-and-publish. Backstage can then run with builder: external and
read the finished HTML instead of running mkdocs in its pod.

Tools are pinned and Renovate-annotated: mkdocs-techdocs-core 1.7.1,
@techdocs/cli 1.12.0, Node.js 22.23.3 from nodejs.org checked against
SHASUMS256.txt, on python:3.13-slim by digest. A smoke test builds a
fixture in CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013V2i6bap7BGa4ZMJRjBEAP
@patrick-hermann-sva
patrick-hermann-sva merged commit 978d3aa into main Oct 18, 2026
4 checks passed
@patrick-hermann-sva
patrick-hermann-sva deleted the feat/techdocs-module branch October 18, 2026 07:23
github-actions Bot pushed a commit that referenced this pull request Oct 18, 2026
# [0.138.0](v0.137.4...v0.138.0) (2026-10-18)

### Features

* **techdocs:** build Backstage TechDocs in CI and publish them to S3/MinIO ([#425](#425)) ([978d3aa](978d3aa))
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 0.138.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

This branch was successfully deployed

1 active deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants