- Home
- Generatore di documentazione
- CI/CD e Governance
CI/CD e Governance
Il repository utilizza quattro workflow di GitHub Actions e un sistema centralizzato di template per la governance.
Workflow
Sezione intitolata “Workflow”| Workflow | File | Trigger | Scopo |
|---|---|---|---|
| GitHub Pages Deploy | github-pages-deploy.yml | Push su main (docs/**), dispatch manuale | Compila e distribuisce il sito di documentazione su GitHub Pages |
| Build and Publish Docker Image | build-image.yml | Push su main (docker/**, package*.json), cron giornaliero, repository_dispatch | Compila l’immagine Docker, la pubblica su GHCR e invia dispatch di rebuild ai repository downstream |
| Require Linked Issue | require-linked-issue.yml | Eventi di pull request | Blocca le PR che non fanno riferimento a una issue di GitHub |
| Enforce Repository Settings | enforce-repo-settings.yml | Ogni 6 ore, push sulla configurazione delle impostazioni, dispatch manuale | Applica le impostazioni standardizzate del repository dal template |
GitHub Pages Deploy
Sezione intitolata “GitHub Pages Deploy”on: push: branches: [main] paths: - 'docs/**' workflow_dispatch:Delega a un workflow riutilizzabile nel repository template:
jobs: docs: uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@mainPermessi: contents: read, packages: read, pages: write, id-token: write. Utilizza il gruppo di concorrenza pages con cancel-in-progress: true per evitare distribuzioni obsolete.
Si attiva al push solo quando vengono modificati file nella directory docs/. Può anche essere attivato manualmente tramite workflow_dispatch, che è il modo in cui il job di dispatch in build-image.yml attiva le rebuild downstream.
Build and Publish Docker Image
Sezione intitolata “Build and Publish Docker Image”on: push: branches: [main] paths: - 'docker/**' - 'package.json' - 'package-lock.json' schedule: - cron: '0 6 * * *' repository_dispatch: types: [rebuild-image]Passaggi:
- Checkout del codice
- Login su
ghcr.iotramitedocker/login-action - Build e push tramite
docker/build-push-actioncon contesto.e filedocker/Dockerfile - Tag:
ghcr.io/<owner>/<repo>:latesteghcr.io/<owner>/<repo>:<sha>
Dopo una build riuscita, il job dispatch attiva github-pages-deploy.yml tramite workflow_dispatch su ogni repository downstream elencato nella configurazione downstream-repos.json del repository template. Questo garantisce che tutti i repository di contenuti ricompilino la loro documentazione con l’immagine builder aggiornata.
Il cron giornaliero garantisce che l’immagine rimanga aggiornata anche senza modifiche al codice (incorporando gli aggiornamenti delle dipendenze). L’evento repository_dispatch consente ai sistemi esterni di attivare una rebuild.
Si attiva al push solo quando vengono modificati i file in docker/ o package*.json. Le modifiche alla sola documentazione non attivano una rebuild dell’immagine.
Require Linked Issue
Sezione intitolata “Require Linked Issue”on: pull_request_target: types: [opened, edited, reopened, synchronize]Utilizza nearform-actions/github-action-check-linked-issues@v1 per imporre che ogni PR faccia riferimento a una issue di GitHub (ad esempio, Closes #42 nella descrizione). Le PR di Dependabot sono escluse tramite:
exclude-branches: "dependabot/**"Un messaggio personalizzato informa i contributori del formato atteso nel caso in cui il controllo fallisca. Consultare CONTRIBUTING.md per il flusso di lavoro completo dei contributori.
Enforce Repository Settings
Sezione intitolata “Enforce Repository Settings”on: schedule: - cron: '0 */6 * * *' push: branches: [main] paths: - '.github/config/repo-settings.json' workflow_dispatch:Delega a un workflow riutilizzabile nel repository template:
jobs: enforce: uses: f5-sales-demo/docs-control/.github/workflows/enforce-repo-settings.yml@main secrets: repo-admin-token: ${{ secrets.REPO_ADMIN_TOKEN }}Viene eseguito ogni 6 ore e in caso di modifiche al file di configurazione delle impostazioni. Applica le regole di protezione dei branch, le impostazioni di merge e altre configurazioni del repository da .github/config/repo-settings.json.
Modello di Governance
Sezione intitolata “Modello di Governance”Template Centralizzato
Sezione intitolata “Template Centralizzato”Il repository f5-sales-demo/docs-control è l’unica fonte di verità per:
- Definizioni di workflow riutilizzabili (deploy della documentazione, applicazione delle impostazioni del repository)
- File gestiti sincronizzati tra tutti i repository dell’organizzazione
- Configurazioni standard e regole di protezione dei branch
Questo builder e tutti i repository di contenuti ereditano il loro comportamento CI/CD dal template.
Sincronizzazione dei File Gestiti
Sezione intitolata “Sincronizzazione dei File Gestiti”Il repository template può pubblicare file gestiti (come definizioni di workflow e file di configurazione) verso i repository downstream. Questo mantiene tutti i repository allineati senza aggiornamenti manuali. La sincronizzazione viene eseguita tramite un workflow separato nel repository template.
Protezione dei Branch
Sezione intitolata “Protezione dei Branch”Il workflow enforce-repo-settings applica le regole di protezione dei branch dal template, tra cui:
- Controlli di stato obbligatori prima del merge
- Controllo di issue collegata obbligatorio
- Squash merge preferito
- Eliminazione automatica dei branch head dopo il merge
Segreti
Sezione intitolata “Segreti”| Segreto | Origine | Scopo |
|---|---|---|
GITHUB_TOKEN | Automatico (GitHub) | Utilizzato dalla maggior parte dei workflow per checkout, pubblicazione di pacchetti e chiamate API |
REPO_ADMIN_TOKEN | Manuale (segreto del repository) | Richiesto da enforce-repo-settings e dal job di dispatch per modificare la protezione dei branch, le impostazioni del repository e attivare i workflow downstream (richiede scope admin) |