Construir en tres máquinas
La integración continua que produce los artefactos de las tres plataformas: qué corre en cada una, dónde viven las credenciales de firma, y qué hacer reproducible.
Qué corre en cada máquina
Y las tres comparten: compilar el frontend, compilar el core, comprobar la versión —nivel 59.2— y pasar las comprobaciones automatizables del nivel 59.1.
Las credenciales
La parte delicada, y donde se cometen los errores de seguridad de esta fase:
Y un cuidado adicional: los registros de construcción. Es fácil que una orden imprima una variable con una credencial dentro. Merece comprobar los registros de una construcción real buscando lo que no debería estar — es el nivel 34.2 en otro contexto.
Qué se construye y cuándo
Tres disparadores distintos con propósitos distintos:
- En cada cambio: compilar y pasar las pruebas, sin empaquetar ni firmar. Rápido, y detecta lo que rompe.
- En cada cambio a la rama principal: construir los artefactos sin firmar, para comprobar que el empaquetado funciona. Es lo que evita descubrir un fallo de empaquetado el día de publicar.
- Y al etiquetar una versión: construir, firmar, notarizar y publicar.
El segundo es el que casi nadie hace y el que más disgustos evita: un fallo de empaquetado descubierto una semana antes es un ajuste; descubierto al publicar, es una publicación aplazada.
Reproducibilidad
Que la misma etiqueta produzca lo mismo dos veces, y no es automático:
- Fija las versiones de todo: la del compilador de Rust, la del entorno de ejecución del frontend, las de las dependencias con sus ficheros de bloqueo.
- Fija la imagen del sistema de tus máquinas de construcción, en la medida en que tu sistema de integración lo permita.
- Y guarda, con cada artefacto publicado, qué se usó para construirlo: versiones de herramientas, identificador del cambio exacto, fecha.
Lo tercero es lo que permite reconstruir una versión antigua cuando haya que investigar un fallo de hace seis meses — el usuario del nivel 55.4.