GitHub Actions y automatización de releases¶
Este documento define el modelo de automatización del repositorio para releases y validación hosteada en CI.
Alcance¶
Hay dos workflows separados:
- empaquetado y publicación de releases
- validación hosteada en GitHub
Deben seguir separados.
No mezcles publicación de releases con validación en un mismo workflow.
Por qué la validación hosteada es limitada¶
El camino de CI de GitHub Actions no usa Multipass.
El objetivo de CI hosteado se divide en dos capas:
- una matriz
smokecontainerizada para distribuciones base soportadas - una validación full hosteada directamente sobre
ubuntu-24.04
Esto da una señal de CI mucho más fuerte que un dry-run, pero sigue siendo diferente de la validación local con Multipass porque no ejercita el harness de VM en sí mismo.
No reemplaza las pruebas locales con Multipass para:
- bootstrap real sobre VM
- validación de rollback
- validación sobre VMs Debian
Modelo de runners¶
Workflow de release:
- runner Ubuntu hosteado por GitHub
Workflow de validación hosteada:
- runner
ubuntu-24.04hosteado por GitHub
Motivo:
- evita depender de virtualización anidada en runners hosteados por GitHub
- mantiene el workflow reproducible y de bajo mantenimiento
- deja el camino pesado de Multipass del lado local, donde el repositorio ya tiene tooling específico
Workflow de release¶
Trigger:
- push de un tag de versión como
v1.2.3
Guard:
- el commit del tag debe ser alcanzable desde
origin/main
Outputs:
productive-k3s-<tag>.tar.gzproductive-k3s-<tag>.tar.gz.sha256install-productive-k3s.sh
El workflow de release crea un GitHub Release y sube esos archivos como assets.
El script instalador queda versionado por release y puede usarse así:
curl -fsSL https://github.com/<owner>/<repo>/releases/download/vX.Y.Z/install-productive-k3s.sh | bash
Todavía pueden pasarse flags adicionales al bootstrap:
curl -fsSL https://github.com/<owner>/<repo>/releases/download/vX.Y.Z/install-productive-k3s.sh | bash -s -- --dry-run
Workflow de validación hosteada¶
Trigger:
- pull request contra
main - tipos de actividad:
openedreopenedready_for_reviewsynchronize- dispatch manual opcional
Notas:
- se vuelve a ejecutar cuando se empujan nuevos commits a la rama del PR
- los draft PR se omiten hasta que pasan a ready for review
El workflow debería ofrecer estos jobs:
-
smoke-matrix -
corre sobre
ubuntu-24.04 - ejecuta
tests/test-in-docker.shcontra estas base images: ubuntu:24.04ubuntu:22.04debian:12debian:13-
sube un log smoke por cada pata de la matriz
-
hosted-full-ubuntu-24.04 -
corre sobre
ubuntu-24.04 - ejecuta shell syntax checks
- corre el bootstrap full directamente sobre el host del runner
- corre
scripts/validate-k3s-stack.sh --strict - corre
scripts/clean-k3s-stack.sh --apply - sube
test-artifacts/yruns/como workflow artifacts - falla si
test-artifacts/hosted-validation-summary.jsonno termina constatus == "success"
Todavía no existe un workflow core containerizado.
Motivo:
- el repositorio ya tiene un harness containerizado honesto para
smoke - todavía no tiene un harness containerizado igual de honesto para una instalación real
core - forzar
coredentro de un container en GitHub Actions produciría una señal más débil y potencialmente engañosa porquek3s, la gestión de servicios y el networking del host no se modelan igual ahí
Validación pesada local¶
Las siguientes validaciones siguen siendo responsabilidad local:
./tests/test-in-vm.sh --platform ubuntu --image 24.04 --profile full./tests/test-in-vm.sh --platform ubuntu --image 24.04 --profile full-rollback./tests/test-in-vm.sh --platform ubuntu --image 24.04 --profile full-clean./tests/test-in-vm.sh --platform debian12 --image https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 --profile ...make test-matrix-coremake test-matrix-fullmake test-matrix-full-rollbackmake test-matrix-full-clean
Esos checks siguen siendo la fuente de verdad para el comportamiento real de instalación y teardown.