Skip to content

Move container migration docs under Chainguard Containers - #3854

Merged
SharpRake merged 2 commits into
mainfrom
mig-move
Aug 28, 2026
Merged

Move container migration docs under Chainguard Containers#3854
SharpRake merged 2 commits into
mainfrom
mig-move

Conversation

@SharpRake

@SharpRake SharpRake commented Aug 27, 2026

Copy link
Copy Markdown
Collaborator

Type of change

Documentation Update

  • Move the container migration docs from /get-started/migration/ to /chainguard/containers/migration/, with Hugo aliases on every page
  • Merge the two duplicate Guardener pages into one
  • Rebuild /get-started/migration/ as a thin cross-product router covering Containers, Libraries, the API, and Guardener
  • Trim migrations-overview.md and repoint the Containers landing banner at the migration section

What should this PR do?

resolves https://linear.app/chainguard/issue/DOCS-117/migration-docs-cleanup-reorg-fixes

Move the container-specific migration docs under Chainguard Containers, and turn the Get Started migration page into a product-neutral router that serves Libraries and API readers as well.

Why are we making this change?

content/get-started/migration/ was the only Get Started subsection that owned deep content — its siblings are thin hubs. All 22 of its files were container-specific despite the product-neutral name, so readers arriving for Libraries found nothing relevant. Guardener was documented twice across two sections, with each page pointing at the other and neither a superset of the other.

What are the acceptance criteria?

  • Every legacy migration URL redirects to its new home — 73 were verified resolving 200 through nginx against the built site
  • /get-started/migration/ stays a live page (it is never aliased) and routes to all four products
  • The Guardener merge drops no content from either source page
  • Migration appears under Chainguard Containers between About and Features

The /chainguard/migration/ section root uses a hand-written nginx.conf rule anchored with /?$ rather than a Hugo alias. A generated alias is a greedy prefix that would misroute the flat legacy URLs whose targets moved into subfolders (alpine-compatibility into compatibility/, migrating-python into migration-guides/) and would swallow /chainguard/migration-guides/ as well. This is a deliberate exception to the alias-first convention and is worth a reviewer's eye.

How should this PR be tested?

Any documentation published to Chainguard Academy is reviewed carefully for accuracy. GUI procedures, API commands, and CLI code snippets in a draft are run and tested thoroughly — by both the author and the reviewer — to confirm they work exactly as written. This helps ensure that readers can follow along and get the same results. See the edu repo's README.

  1. Check the preview link and ensure the changes look right
  2. Visit /get-started/migration/ and confirm the hub links out to Containers, Libraries, API, and Guardener
  3. Spot-check a few legacy URLs — /chainguard/migration/, /chainguard/migration/alpine-compatibility/, /chainguard/migration-guides/migrating-python/ — and confirm each redirects rather than 404s
  4. Open /chainguard/containers/ and confirm the "Migrate to Chainguard Containers" banner now lands on the migration section

content/get-started/migration/ was the only Get Started subsection that
owned deep content. Its 22 files were all container-specific despite the
product-neutral name, so readers arriving for Libraries found nothing
there. Guardener was documented twice across two sections, each page
pointing at the other and neither a superset of the other.

- Move 25 files to content/chainguard/containers/migration/, taking dfc
  and Image Matcher with them. Every page keeps a Hugo alias for its old
  URL.
- Merge the two Guardener pages into
  chainguard/guardener/dockerfile-migration/. Nothing dropped.
- Rebuild get-started/migration/_index.md as a thin cross-product router
  matching its sibling hubs, covering Containers, Libraries, the API,
  and Guardener.
- Trim migrations-overview.md from 257 to 198 lines, cutting a product
  explainer and a resources link farm that duplicated the sections
  around it.
- Point the Containers landing banner, titled "Migrate to Chainguard
  Containers", at the migration section instead of the Using page, and
  raise Migration's weight so it follows About.

The two section roots use an anchored nginx.conf rule rather than Hugo
aliases. A generated alias is a greedy prefix that would misroute the
flat legacy URLs whose targets moved into subfolders, and would swallow
/chainguard/migration-guides/ as well.

All 73 legacy URLs resolve through nginx serving the built site.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Signed-off-by: Mark Drake <mark@chainguard.dev>
@SharpRake
SharpRake requested review from a team as code owners August 27, 2026 21:59
@netlify

netlify Bot commented Aug 27, 2026

Copy link
Copy Markdown

Deploy Preview for ornate-narwhal-088216 ready!

Name Link
🔨 Latest commit 9947c75
🔍 Latest deploy log https://app.netlify.com/projects/ornate-narwhal-088216/deploys/6a90c7cb92ca640008433f88
😎 Deploy Preview https://deploy-preview-3854--ornate-narwhal-088216.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Signed-off-by: Mark Drake <mark@chainguard.dev>

@matthewhelmke matthewhelmke left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another step in the right direction! The site IA keeps getting better, tysm!!

@SharpRake
SharpRake merged commit fb935b8 into main Aug 28, 2026
14 checks passed
@SharpRake
SharpRake deleted the mig-move branch August 28, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants