- Inicio
- Constructor de docs
- CI/CD y Gobernanza
CI/CD y Gobernanza
El repositorio utiliza cuatro flujos de trabajo de GitHub Actions y un sistema de plantillas centralizado para la gobernanza.
Flujos de trabajo
Sección titulada «Flujos de trabajo»| Flujo de trabajo | Archivo | Disparador | Propósito |
|---|---|---|---|
| GitHub Pages Deploy | github-pages-deploy.yml | Push a main (docs/**), despacho manual | Construye y despliega el sitio de documentación en GitHub Pages |
| Build and Publish Docker Image | build-image.yml | Push a main (docker/**, package*.json), cron diario, repository_dispatch | Construye la imagen Docker, la publica en GHCR y despacha reconstrucciones a los repositorios dependientes |
| Require Linked Issue | require-linked-issue.yml | Eventos de pull request | Bloquea los PRs que no referencian un issue de GitHub |
| Enforce Repository Settings | enforce-repo-settings.yml | Cada 6 horas, push a la configuración de ajustes, despacho manual | Aplica la configuración estandarizada del repositorio desde la plantilla |
GitHub Pages Deploy
Sección titulada «GitHub Pages Deploy»on: push: branches: [main] paths: - 'docs/**' workflow_dispatch:Delega a un flujo de trabajo reutilizable en el repositorio de plantilla:
jobs: docs: uses: f5-sales-demo/docs-control/.github/workflows/github-pages-deploy.yml@mainPermisos: contents: read, packages: read, pages: write, id-token: write. Utiliza el grupo de concurrencia pages con cancel-in-progress: true para evitar despliegues obsoletos.
Solo se activa en push cuando cambian archivos bajo docs/. También puede activarse manualmente mediante workflow_dispatch, que es como el trabajo de despacho en build-image.yml activa las reconstrucciones de los repositorios dependientes.
Build and Publish Docker Image
Sección titulada «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]Pasos:
- Checkout del código
- Inicio de sesión en
ghcr.iousandodocker/login-action - Construcción y publicación usando
docker/build-push-actioncon contexto.y archivodocker/Dockerfile - Etiquetas:
ghcr.io/<owner>/<repo>:latestyghcr.io/<owner>/<repo>:<sha>
Después de una construcción exitosa, el trabajo de despacho activa github-pages-deploy.yml mediante workflow_dispatch en cada repositorio dependiente listado en la configuración downstream-repos.json del repositorio de plantilla. Esto asegura que todos los repositorios de contenido reconstruyan su documentación con la imagen del constructor actualizada.
El cron diario asegura que la imagen se mantenga actualizada incluso sin cambios en el código (recoge actualizaciones de dependencias). El evento repository_dispatch permite que sistemas externos activen una reconstrucción.
Solo se activa en push cuando cambian archivos en docker/ o package*.json. Los cambios exclusivos de documentación no activan una reconstrucción de imagen.
Require Linked Issue
Sección titulada «Require Linked Issue»on: pull_request_target: types: [opened, edited, reopened, synchronize]Utiliza nearform-actions/github-action-check-linked-issues@v1 para exigir que cada PR referencie un issue de GitHub (p. ej., Closes #42 en la descripción). Los PRs de Dependabot se excluyen mediante:
exclude-branches: "dependabot/**"Un mensaje personalizado indica a los colaboradores el formato esperado si la verificación falla. Consulte CONTRIBUTING.md para el flujo de trabajo completo del colaborador.
Enforce Repository Settings
Sección titulada «Enforce Repository Settings»on: schedule: - cron: '0 */6 * * *' push: branches: [main] paths: - '.github/config/repo-settings.json' workflow_dispatch:Delega a un flujo de trabajo reutilizable en el repositorio de plantilla:
jobs: enforce: uses: f5-sales-demo/docs-control/.github/workflows/enforce-repo-settings.yml@main secrets: repo-admin-token: ${{ secrets.REPO_ADMIN_TOKEN }}Se ejecuta cada 6 horas y ante cambios en el archivo de configuración de ajustes. Aplica reglas de protección de ramas, configuración de fusión y otras configuraciones del repositorio desde .github/config/repo-settings.json.
Modelo de Gobernanza
Sección titulada «Modelo de Gobernanza»Plantilla Centralizada
Sección titulada «Plantilla Centralizada»El repositorio f5-sales-demo/docs-control es la fuente única de verdad para:
- Definiciones de flujos de trabajo reutilizables (despliegue de documentación, aplicación de configuración del repositorio)
- Archivos gestionados sincronizados en todos los repositorios de la organización
- Configuraciones estándar y reglas de protección de ramas
Este constructor y todos los repositorios de contenido heredan su comportamiento de CI/CD de la plantilla.
Sincronización de Archivos Gestionados
Sección titulada «Sincronización de Archivos Gestionados»El repositorio de plantilla puede enviar archivos gestionados (como definiciones de flujos de trabajo y archivos de configuración) a los repositorios dependientes. Esto mantiene todos los repositorios alineados sin actualizaciones manuales. La sincronización se ejecuta mediante un flujo de trabajo separado en el repositorio de plantilla.
Protección de Ramas
Sección titulada «Protección de Ramas»El flujo de trabajo enforce-repo-settings aplica reglas de protección de ramas desde la plantilla, incluyendo:
- Verificaciones de estado requeridas antes de la fusión
- Verificación de issue vinculado requerida
- Fusión squash preferida
- Eliminación automática de ramas head después de la fusión
Secretos
Sección titulada «Secretos»| Secreto | Origen | Propósito |
|---|---|---|
GITHUB_TOKEN | Automático (GitHub) | Utilizado por la mayoría de los flujos de trabajo para checkout, publicación de paquetes y llamadas a la API |
REPO_ADMIN_TOKEN | Manual (secreto del repositorio) | Requerido por enforce-repo-settings y el trabajo de despacho para modificar la protección de ramas, configuración del repositorio y activar flujos de trabajo en repositorios dependientes (necesita alcance de administrador) |