Saltar al contenido

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.