# STACKIT Docs Integration This document describes how Professional Services Terraform examples are synced as `.mdx` asset cards to the STACKIT documentation assetcontainer. ## Overview Each example in `examples/` declares metadata in `stackit.docs.yaml`. On merge to `main`, a GitHub Actions workflow generates `.mdx` asset files and opens a PR to the `stackitcloud/docs-content` repository under `docs/cloud-framework/architecture-framework/assetcontainer/professional-services/`. ## Directory Structure ``` professional-service/ ├── examples/ │ ├── alb-tls-examples/ │ │ ├── README.md │ │ ├── stackit.docs.yaml # <-- metadata for docs card │ │ └── ... │ ├── ske-azure-arc-integration/ │ │ ├── README.md │ │ ├── stackit.docs.yaml # <-- metadata for docs card │ │ └── ... │ └── ... ├── ci-scripts/ │ ├── aggregate_docs.py # generates .mdx files + _meta.yml │ └── sync-stackit-docs.sh # CI: clone docs, copy files, PR └── STACKIT-DOCS.md # this file ``` ## stackit.docs.yaml Format Each example must contain: ```yaml headline: Example Title description: Short description of what the example demonstrates. tags: - ske - kubernetes - terraform ``` | Field | Required | Description | | ------------- | -------- | ----------------------------------------- | | `headline` | Yes | Title displayed on the asset card | | `description` | Yes | Brief summary (1-2 sentences) on the card | | `tags` | Yes | Tags for filtering (shown on card, max 5) | ## Generated .mdx Format Each `stackit.docs.yaml` is transformed into an `.mdx` file with `frameworkAsset` frontmatter: ```mdx --- title: SKE Azure Arc Integration description: Terraform and CLI steps to connect a STACKIT SKE cluster to Azure Arc. hideBreadcrumbs: true sidebar: hidden: true frameworkAsset: owner: Professional Services managed: true category: guide external: true recommended: true tags: - ske - azure - terraform --- import { Card } from "@astrojs/starlight/components"; # SKE Azure Arc Integration ... ``` ## CI Process ```mermaid flowchart TD A[Developer adds/updates
stackit.docs.yaml] --> B[PR to professional-services] B --> Merged{Merged to main?} Merged -->|Yes| C[GitHub Actions triggered] Merged -->|No| B C --> D[aggregate_docs.py
generates .mdx files + _meta.yml] D --> E[Clone docs-content repo] E --> F[Copy .mdx files to
assetcontainer/professional-services/] F --> G{Any file changes
vs current docs?} G -->|No| H[Exit: docs up to date] G -->|Yes| I[Create feature branch
autopr/sync-professional-service-examples] I --> J[Commit + push changes] J --> K[Create PR to docs-content] K --> L[Review and merge on
docs-content side] ``` ## Adding a New Example 1. Create a new directory under `examples/` 2. Add your Terraform code and `README.md` 3. Create `stackit.docs.yaml` with the required fields: ```yaml headline: My New Example description: Demonstrates how to deploy X on STACKIT using Y. tags: - ske - terraform - my-tag ``` 4. Open a PR to this repository 5. Once merged, the CI will automatically: - Generate `.mdx` asset files from all `stackit.docs.yaml` files - Clone the `docs-content` repository - Copy files to `assetcontainer/professional-services/` - Open a PR if content has changed ## Scripts ### aggregate_docs.py The Python script: - Scans `examples/*/stackit.docs.yaml` - Generates `.mdx` files with `frameworkAsset` frontmatter - Generates `_meta.yml` for the assetcontainer Run locally to preview: ```bash python3 ci-scripts/aggregate_docs.py ls .generated-mdx/professional-services/ cat .generated-mdx/professional-services/ps-my-example.mdx ``` ### sync-stackit-docs.sh The CI entrypoint: - Calls `aggregate_docs.py` to generate `.mdx` files - Clones `stackitcloud/docs-content` - Copies generated files to `assetcontainer/professional-services/` - Creates a PR if changes are detected ### Environment Variables | Variable | Required | Description | | -------------------- | -------- | ------------------------------------------------------- | | `STACKIT_DOCS_TOKEN` | Yes | GitHub PAT with repo write permissions | | `STACKIT_DOCS_REPO` | No | Target docs repo (default: `stackitcloud/docs-content`) | ### Manual Execution ```bash export STACKIT_DOCS_TOKEN= bash ci-scripts/sync-stackit-docs.sh ``` ## GitHub Actions Secret To enable the CI workflow, add the following secret to the repository: - **Secret name:** `STACKIT_DOCS_TOKEN` - **Value:** GitHub Personal Access Token with `repo` scope The workflow (`.github/workflows/sync-stackit-docs.yaml`) triggers on: - Every push to `main` that modifies `examples/**/stackit.docs.yaml` - Manual trigger via the GitHub Actions UI