name: Build and Publish TechDocs (Helm Chart Resource) on: push: branches: - main paths: - 'charts/**' env: # ── Azure Blob Storage ─────────────────────────────────────────────────── TECHDOCS_AZURE_BLOB_CONTAINER_NAME: AZURE_FEDERATED_TOKEN_FILE: /var/run/secrets/azure/tokens/azure-identity-token AZURE_ACCOUNT_NAME: "bstagecjotdevsttechdocs" # ── TechDocs entity identity ───────────────────────────────────────────── ENTITY_NAMESPACE: default ENTITY_KIND: resource ENTITY_NAME: haproxy-unified-victor2-helm-chart jobs: build-and-publish-helm-chart: runs-on: ubuntu-latest permissions: contents: read id-token: write steps: # ── 1. Checkout ──────────────────────────────────────────────────────── - name: Checkout repository uses: actions/checkout@v4 with: fetch-depth: 0 # full history for git-revision-date-localized plugin - name: Read and set output id: read_env run: | echo "$AZURE_FEDERATED_TOKEN_FILE" env | grep AZURE echo "$(cat $AZURE_FEDERATED_TOKEN_FILE)" # ── 2. Bootstrap pip ─────────────────────────────────────────────────── - name: Bootstrap pip run: | python3 --version if python3 -m pip --version 2>/dev/null; then echo "pip already available" elif python3 -m ensurepip --version 2>/dev/null; then python3 -m ensurepip --upgrade else apt-get update -qq apt-get install -y python3-pip fi python3 -m pip install --upgrade pip python3 -m pip --version # ── 3. Install TechDocs CLI + MkDocs dependencies ───────────────────── - name: Install dependencies run: | python3 -m pip install --upgrade pip python3 -m pip install \ mkdocs-techdocs-core==1.* \ mkdocs-git-revision-date-localized-plugin \ mkdocs-awesome-pages-plugin npm install -g @techdocs/cli # ── 4. Validate mkdocs.yml ───────────────────────────────────────────── - name: Validate MkDocs config run: mkdocs build --strict --site-dir /tmp/mkdocs-charts-validate --config-file charts/mkdocs.yml # ── 5. Build docs with TechDocs CLI ─────────────────────────────────── - name: Build TechDocs site run: | techdocs-cli generate \ --source-dir ./charts \ --output-dir ./charts/site \ --no-docker \ --verbose # ── 6. Install Azure CLI ─────────────────────────────────────────────── - name: Install Azure CLI run: | if command -v az &>/dev/null; then echo "Azure CLI already installed: $(az version --query '"azure-cli"' -o tsv)" else curl -sL https://aka.ms/InstallAzureCLIDeb | bash fi # ── 7. Authenticate to Azure ────────────────────────────────────────── - name: Azure login (OIDC) run: | az login \ --service-principal \ --username "$AZURE_CLIENT_ID" \ --tenant "$AZURE_TENANT_ID" \ --federated-token "$(cat $AZURE_FEDERATED_TOKEN_FILE)" echo "✓ Azure login successful" # ── 8. Publish to Azure Blob Storage ────────────────────────────────── - name: Publish TechDocs site run: | echo "$AZURE_ACCOUNT_NAME" echo "$ENTITY_NAMESPACE" echo "$ENTITY_KIND" echo "$ENTITY_NAME" techdocs-cli publish \ --publisher-type azureBlobStorage \ --storage-name "techdocs" \ --azureAccountName "$AZURE_ACCOUNT_NAME" \ --entity "$ENTITY_NAMESPACE/$ENTITY_KIND/$ENTITY_NAME" \ --directory ./charts/site