Promoción e implementación de cambios en el inventario
La implementación de referencia de DevSecOps ayuda a aplicar la revisión de los cambios de código antes de fusionarlos, promoverlos y desplegarlos en producción. Consulte Prácticas recomendadas para la conformidad con la revisión por pares para obtener más información sobre la revisión por pares para la entrega de software seguro y compatible.
Promoción de entradas de inventario del origen a las ramas de destino
Para aplicar los cambios en el código desde la rama de origen a la rama de destino (staging, prod) de tu repositorio de inventario, sigue estos pasos:
-
Las interconexiones de integración continua llenan la rama de origen (maestra) con entradas de inventario. Utiliza el canal de promoción de implementación continua para transferir este contenido desde tu rama de origen (master) a la rama de destino (staging o prod).
- En el panel de control cd-pipeline, pulse Ejecutar conducto.
- Seleccione Desencadenante manual de promoción.
- Pulse Ejecutar. La ejecución de la interconexión crea una solicitud de fusión para promocionar los cambios de código de la rama de origen a la rama de destino.
Activador de promoción manual -
Apruebe y fusione la solicitud de extracción.
- Pulse la ejecución de interconexiones y compruebe el registro de ejecuciones de la interconexión de promoción.
MR registro de ejecución - Localice el URL de la solicitud de fusión y abra la solicitud de fusión.
- Rellene los campos obligatorios (Prioridad, Asignación de solicitud de cambio, Descripción adicional y otros campos).
- Fusiona la solicitud de fusión (MR) para aplicar tus cambios de la rama de origen a la rama de destino.
Ahora que tus cambios se han incorporado a la rama de destino, puedes implementarlos utilizando el proceso de implementación continua.
Utilización del proceso de validación de promociones
Una vez abierto un RP de promoción, puede realizar opcionalmente la agregación de pruebas y la generación de resúmenes en la canalización de validación de la promoción, y establecer los estados de las pruebas en la solicitud de extracción/fusión (RP) de promoción. El PR puede ser creado por el proceso de promoción o manualmente en el repositorio de inventario. Más información sobre el proceso de validación de promociones.
Despliegue de cambios del entorno de origen al entorno de destino
Los entornos de origen y destino se definen a nivel del proceso de implementación continua.
Dependiendo de la configuración de los desencadenantes de tu canal de implementación continua, el canal se activará automáticamente una vez que se haya fusionado una solicitud de fusión, o bien se activará manualmente. Para fusionar manualmente la interconexión, pulse Ejecutar interconexión y elija el desencadenante a ejecutar.
La interconexión se inicia y etiqueta la confirmación actual en el repositorio de inventario con el ID de ejecución de la interconexión. La interconexión utiliza esta etiqueta para recoger el contenido de la rama de destino (producción) y calcula
el delta de despliegue entre la confirmación actual y el contenido del último despliegue satisfactorio. La diferencia se indica mediante la etiqueta <target-environment>_latest, donde target-environment es el
valor establecido en las propiedades de tu canal de implementación continua, como prod_latest.
La interconexión intenta desplegar el contenido. Durante el despliegue, el ID de solicitud de cambio se conecta a la confirmación con el que trabaja la interconexión como etiqueta. Cuando la etapa o tarea de implementación se completa con éxito,
el pipeline concluye añadiendo la etiqueta <target-environment>_latest al commit que has promovido.
Para obtener más información sobre el flujo de trabajo del inventario, consulte Visión general de las interconexiones de DevSecOps.
Actualización de la ubicación de la imagen en el inventario
Una vez que una imagen se haya promocionado al registro de contenedores de destino, actualiza la ubicación de la imagen en el inventario para que haga referencia a la imagen promocionada.
Utiliza el comando cocoa inventory update-locations para actualizar la ubicación del artefacto en el repositorio de inventario.
cocoa inventory update-locations \
--name="${inventory_image_type}/inventory.json" \
--org="<org>" \
--repo="<repo-name>" \
--location="prod#${inventory_target_name}@${DIGEST}" \
--environment="master"
Por ejemplo:
cocoa inventory update-locations \
--name="<inventory-entry-name>/inventory.json" \
--org="<org-name>" \
--repo="<repo-name>" \
--location="prod#icr.io/.../baseimage:4.x.y@sha256:..." \
--environment="master"
El parámetro --location especifica la ubicación de la imagen de destino y su resumen SHA-256. La ubicación tiene el siguiente formato:
<environment>#<image>:<tag>@sha256:<digest>
Por ejemplo:
prod#icr.io/<namespace>/<repository>/baseimage:4.x.y@sha256:<digest>
Promoción de imagen y firma
La imagen debe copiarse en el registro de destino y contar con una firma válida para la referencia de imagen de destino antes de que se actualice el inventario.
Una vez que la imagen se haya promocionado y firmado, obtén el resumen de la imagen en el registro de destino y utiliza ese resumen con cocoa inventory update-locations. {: important} Ejecutar una cocoa inventory update-locations vez que la imagen haya sido promovida y firmada. El inventario debe hacer referencia a la imagen del registro de destino y al resumen de la imagen correspondiente.
Flujo de trabajo de promoción
El proceso de publicación es el siguiente:
- Promueve la imagen desde el registro de origen al registro de destino.
- Obtener el resumen de la imagen promocionada en el registro de destino.
- Ejecuta
cocoa inventory update-locationscon la ubicación de la imagen de destino y el resumen.
El comando cocoa inventory update-locations actualiza los metadatos del inventario. No copia ni firma la imagen del contenedor.