Interconexión de promoción

El proceso de promoción transfiere las entradas de inventario de un entorno a otro y crea una solicitud de extracción/fusión de promoción.

Separación de funciones durante las promociones

  • Promociones conseguidas principalmente a través del flujo de trabajo de Pull Request.

    • → Crear un PR de promoción (por ejemplo, de la rama source a la rama target del entorno)
    • → Revisar/editar PR (incluida la comprobación del estado de validación de la PR)
    • → Fusionar la solicitud de incorporación de cambios (PR) en la rama del entorno de destino
    • → Ejecutar el proceso de implementación de CD (al realizar una confirmación, por temporizador o mediante activación manual)
    • → Repite el proceso para la siguiente rama del entorno
    • → Puede tener un número arbitrario de ramas de entorno
  • Roles

    • Desarrollador: enviar el código, lo que da lugar a que el proceso de integración continua (CI) actualice el inventario principal (no de producción)
    • Operaciones de promoción / Gestor de lanzamientos: Activar el proceso de promoción (principal → entorno de prueba y/o entorno de prueba → producción), creando PR con comprobación de estado para el control de acceso (impuesto por la lista de control de acceso de la cadena de herramientas y las protecciones de las ramas de inventario)
    • Operaciones de producción / Responsable de aprobación: Revisar e integrar la solicitud de promoción (PR) en la rama de producción. Ejecutar pipelines de producción. (impuesto mediante la protección de la rama de inventario)
  • Aprovecha las distintas cadenas de herramientas de CD para las cargas de trabajo de entorno de prueba y de producción (operaciones distintas)

  • Esto significa que un desarrollador puede preparar un cambio, pero no puede implementarlo unilateralmente en producción si la protección de la rama requiere un aprobador independiente.

  • El comunicado de prensa sobre la promoción se convierte en el registro formal de aprobación del cambio, y el historial de fusiones proporciona pruebas auditables de quién aprobó la promoción a producción y cuándo.

Pasos de la interconexión de promoción

  1. Recopilar comentarios para la promoción y la solicitud de incorporación/fusión de la promoción.
  2. Promueva las entradas de inventario del entorno de origen al entorno de destino.
  3. Crea la solicitud de incorporación de cambios para la promoción. Edite la solicitud de extracción/fusión para indicar qué cambios se deben realizar. Observe si hay campos opcionales y obligatorios.
  4. Opcional. Establezca los estados de las pruebas y añada el resumen de pruebas agregadas a la solicitud de extracción/fusión de promoción.
  5. Fusione la solicitud de extracción/fusión.
  6. Envía una notificación de Slack si la función está activada.

Etapas y tareas

La siguiente tabla enumera las tareas que se ejecutan en un proceso de promoción. Además, la tabla ofrece una visión general de cada una de estas etapas:

  • Tarea o etapa: se refiere al nombre de la etapa tal y como se define en el archivo de configuración .pipeline-config.yaml.

  • Breve descripción: Ofrece una explicación concisa de las acciones que se llevan a cabo durante la ejecución de la etapa.

  • Personalización permitida: indica si los usuarios tienen la flexibilidad de modificar o sustituir el comportamiento predeterminado de la etapa insertando un script personalizado en el archivo .pipeline-config.yaml.

  • Implementación de referencia predeterminada: indica si los flujos de trabajo de DevSecOps incluyen una implementación predefinida o predeterminada para la etapa. Cabe destacar que, para ciertas etapas como o unit-tests setup, el proceso de DevSecOps no ofrece ninguna implementación lista para usar. En su lugar, los usuarios deben proporcionar scripts personalizados o código adaptado a los requisitos de su aplicación.

  • Recopilación de pruebas: indica si en esta fase se lleva a cabo la recopilación de pruebas estándar. Cuando DevSecOps Pipeline proporciona una implementación de referencia para una etapa, la recopilación de pruebas se lleva a cabo de forma predeterminada. No obstante, si el usuario decide modificar o sustituir estas etapas predefinidas, debe asegurarse de que sus implementaciones personalizadas incluyan la recopilación adecuada de pruebas. La misma responsabilidad recae en los usuarios en aquellas fases en las que el proceso de DevSecOps no ofrece una implementación lista para usar, lo que les obliga a recopilar pruebas. La columna indica la entidad ( Usuario/Pipeline ) responsable de llevar a cabo la recopilación de pruebas.

  • Se permite omitir (aplicable a la versión >= v10 ): indica si los usuarios pueden optar por no ejecutar esta etapa estableciendo la propiedad skip en true en el archivo .pipeline-config.yaml. No obstante, se recomienda precaución al utilizar esta función, especialmente en las fases diseñadas para recabar pruebas. Saltarse estas etapas podría dar lugar a que se pierdan pruebas esenciales para la compilación.

Fases y tareas del proceso de promoción
Tarea o etapa Descripción breve Se permite la personalización en .pipeline-config.yaml Implementación de referencia predeterminada Recogida de pruebas Se permite omitir
inventory-promotion Crea una solicitud de incorporación de cambios para la promoción. No N/D No
inventory-finish Se recopilan y se cargan los archivos de registro, los artefactos y las pruebas en el archivo de pruebas. No N/D No

Para obtener más información sobre cómo personalizar las etapas mediante el archivo .pipeline-config.yaml, consulta Scripts personalizados y Listas de parámetros de Pipeline.

Ejecución de la interconexión de promoción

Utilice el desencadenante manual de promoción para ejecutar la interconexión de promoción. Si la rama de origen (master) va por delante de la rama de destino (prod), el pipeline crea una solicitud de pull o fusión de promoción que puedes revisar y editar. Si la rama de origen está detrás del destino, la interconexión de promoción falla con el mensaje All changes have already been promoted.

Para modificar los valores predeterminados de la solicitud de extracción/fusión de promoción, o para realizar la promoción desde una fuente alternativa al destino, los usuarios pueden modificar los datos de entrada desde la interfaz de usuario de Variables de entorno del pipeline.

Antes de ejecutar el proceso de implementación continua, asegúrate de que la solicitud de extracción o fusión de la promoción se haya fusionado. Puedes encontrar la solicitud de URL extracción/fusión en los registros del proceso.

Para obtener más información sobre el proceso de inventario y de promoción, consulte Promoción de inventario.

Promoción parcial de artículos de inventario.

El método de promoción parcial permite que el canal de promoción promueva un subconjunto selecto del inventario disponible.

En este contexto, una entrada de inventario sería un único archivo (del tipo inventario) presente en el repositorio de inventario, que se correspondería con un nombre de archivo único en el sistema {: important}de archivos local.

Usando los parámetros inventory-include y inventory-exclude habilita el método de promoción parcial.

Cuando usas inventory-include, los patrones/nombres de archivo proporcionados en esa propiedad de entorno se resuelven en sus respectivas entradas y son promovidos por la canalización. De manera similar, las entradas proporcionadas en inventory-exclude quedar excluido de la promoción.

El formato utiliza un patrón global (también admite rutas completas), de manera similar a lo que se sigue en la canalización CC. Para obtener más información sobre los patrones globales, consulte la globo manual.

Filtrado aplicado en promoción parcial.

La promoción parcial aplica dos niveles de filtrado: utilizando el .inventoryignore archivo y aplicar filtrado basado en los patrones globales dados a inventory-include y inventory-exclude

Usando el archivo .inventoryignore

Para excluir un conjunto de archivos o carpetas de forma predeterminada para cada ejecución de promoción parcial, así como para la ejecución de canalización de CD, puede agregar la lista de archivos/carpetas a la .inventoryignore archivo para excluir esas entradas.

La lista de entradas disponibles (que la canalización puede promover) está disponible después de filtrar las entradas del .inventoryignore archivo.

El oleoducto busca el .inventoryignore archivo en la raíz del repositorio. Si prefiere un nombre diferente para el archivo de exclusión de inventario, puede especificarlo configurando el inventory-ignore-file key como una propiedad ambiental dentro de su canalización. Asegúrese de que este archivo esté en la raíz del repositorio de inventario.

Usando el parámetro de inclusión de inventario

La lista de entradas a promocionar después de filtrar las entradas proporcionadas por el inventory-include y/o inventory-exclude

Si ambos inventory-include y inventory-exclude están presentes,inventory-include tiene prioridad, y luego inventory-exclude excluye elementos del subconjunto definido por la lista de inclusión.

Si se proporciona una de estas variables, la canalización intentará resolver las rutas completas de los patrones globales o simplemente los nombres de archivos directos y continuará con la promoción parcial.

La canalización solo promueve la lista común de entradas entre los 2 niveles de filtrado.

Ejemplo de uso de los parámetros de inclusión y exclusión de inventario

Esta sección muestra ejemplos del uso de patrones globales y también de su incorporación en el inventory-include y inventory-exclude parámetros. A continuación se muestra una estructura de directorios de ejemplo para un repositorio de inventario, que contiene microservicios, archivos de configuración (anidados) y gráficos de timón.

cd-pipeline-deps
my-application-plugin-component-config
my-application-plugin-component-diagnostic-monitor
configuration # directory entry
configuration/my-staging-region # directory entry
configuration/my-staging-region/environment-1-cluster # directory entry
configuration/my-staging-region/environment-1-cluster/serviceA-component_config
configuration/my-staging-region/environment-1-cluster/serviceB-system_config
configuration/my-staging-region/environment-1-cluster/serviceC-params_config
configuration/serviceX-dashboard-setup_helm
configuration/serviceY-releases_helm
my-application-task-runner
my-application-dashboard
my-application-dashboard_deployment
my-application-module
my-application-module_deployment
.inventoryignore
global_deployment
README.md

Para seleccionar todas las entradas de submódulo de un componente

inventory-include ajustado a :*plugin-component*

Entradas de inventario seleccionadas:

    my-application-plugin-component-config
    my-application-plugin-component-diagnostic-monitor

Para seleccionar todos los gráficos de timón en una carpeta de configuración determinada

inventory-include ajustado a :configuration/*helm

Entradas de inventario seleccionadas:

    configuration/serviceX-dashboard-setup_helm
    configuration/serviceY-releases_helm

Para seleccionar todos los archivos de configuración de un entorno particular

inventory-include ajustado a :configuration/my-staging-region/environment-1-cluster/*_config

Entradas de inventario seleccionadas:

    configuration/my-staging-region/environment-1-cluster/serviceA-component_config
    configuration/my-staging-region/environment-1-cluster/serviceB-system_config
    configuration/my-staging-region/environment-1-cluster/serviceC-params_config

Para seleccionar solo un componente

inventory-include ajustado a :my-application-dashboard*

Entradas de inventario seleccionadas:

    my-application-dashboard
    my-application-dashboard_deployment

Uso de una combinación de patrones globales en el inventario: incluir

inventory-include ajustado a :*plugin-component*,configuration/*helm

Entradas de inventario seleccionadas:

    my-application-plugin-component-config
    my-application-plugin-component-diagnostic-monitor
    configuration/serviceX-dashboard-setup_helm
    configuration/serviceY-releases_helm

Uso de una combinación de patrones globales en exclusión de inventario

inventory-exclude ajustado a :configuration/**, my-application-dashboard*

Entradas de inventario seleccionadas:

    cd-pipeline-deps
    my-application-plugin-component-config
    my-application-plugin-component-diagnostic-monitor
    my-application-task-runner
    my-application-module
    my-application-module_deployment
    .inventoryignore
    global_deployment

Solicitudes de extracción/fusión de promoción

La información del cuerpo de la solicitud de extracción o fusión de la promoción se utiliza para crear la solicitud de cambio. Los archivos modificados por la solicitud de extracción o fusión de la promoción representan las entradas, como las imágenes, que se implementan mediante el proceso de implementación continua. Si los cambios se han realizado debido a una emergencia, la solicitud de incorporación o fusión de la promoción se marca con una etiqueta de emergencia. La solicitud de cambio creada por el proceso de implementación continua también se marca como emergency.

Las pruebas recopiladas en el conducto de integración continua se resumen y se adjuntan a la solicitud de cambio en el conducto de despliegue continuo.

Conducto de validación de promoción

Una vez abierta una SC de promoción, puede realizar opcionalmente la agregación de pruebas y la generación de resumen en el conducto de validación de promoción y establecer los estados de las pruebas en la solicitud de extracción/fusión de promoción (PR). El conducto de promoción puede crear la SC o manualmente en el repositorio de inventario.

La interconexión permite la validación temprana de la SC de promoción antes de que la SC se fusione con la rama de destino (entorno). Basándose en el estado de la SC, los usuarios pueden continuar con la promoción (cuando todos los estados de las pruebas son verdes), o elegir arreglar el problema en la interconexión de integración continua (cuando el estado de las pruebas es rojo).

Además, el proceso de validación también añade el resumen agregado de las pruebas para una o más aplicaciones del inventario a la solicitud de promoción pull/merge como comentario, en un formato tabular fácil de usar (como se muestra en la figura 3). La tabla proporciona enlaces útiles, como enlaces a ejecuciones de canalizaciones, repositorios de aplicaciones y problemas creados para cada una de las aplicaciones.

De forma predeterminada, cada fila de la tabla Detalle del estado de la evidencia corresponde a un contexto de aplicación proporcionado por un repositorio de origen utilizado para crear los artefactos a los que se hace referencia en las entradas del inventario. Esta agrupación predeterminada de la aplicación se puede personalizar en función de un valor de agrupación obtenido mediante la aplicación del filtro JSON (definido en la propiedad application-group-by-filter) en cada uno de los archivos de entradas de inventario.

Mientras la validación está en curso, la fusión de la solicitud de extracción/fusión de promoción está bloqueada. Una vez completada la interconexión de validación, el estado de las pruebas se establece en la solicitud de extracción/fusión. Al pulsar en cada entrada del estado, el usuario pasa a la etapa específica en la ejecución del conducto de AC correspondiente.

Etapas y tareas

En la siguiente tabla se enumeran las tareas que se ejecutan en un canal de validación de promociones. Además, la tabla ofrece una visión general de cada una de estas etapas:

  • Tarea o etapa: se refiere al nombre de la etapa tal y como se define en el archivo de configuración .pipeline-config.yaml.

  • Breve descripción: Ofrece una explicación concisa de las acciones que se llevan a cabo durante la ejecución de la etapa.

  • Personalización permitida: indica si los usuarios tienen la flexibilidad de modificar o sustituir el comportamiento predeterminado de la etapa insertando un script personalizado en el archivo .pipeline-config.yaml.

  • Implementación de referencia predeterminada: indica si los flujos de trabajo de DevSecOps incluyen una implementación predefinida o predeterminada para la etapa. Cabe destacar que, para ciertas etapas como o unit-tests setup, el proceso de DevSecOps no ofrece ninguna implementación lista para usar. En su lugar, los usuarios deben proporcionar scripts personalizados o código adaptado a los requisitos de su aplicación.

  • Recopilación de pruebas: indica si en esta fase se lleva a cabo la recopilación de pruebas estándar. Cuando DevSecOps Pipeline proporciona una implementación de referencia para una etapa, la recopilación de pruebas se lleva a cabo de forma predeterminada. No obstante, si el usuario decide modificar o sustituir estas etapas predefinidas, debe asegurarse de que sus implementaciones personalizadas incluyan la recopilación adecuada de pruebas. La misma responsabilidad recae en los usuarios en aquellas fases en las que el proceso de DevSecOps no ofrece una implementación lista para usar, lo que les obliga a recopilar pruebas. La columna indica la entidad ( Usuario/Pipeline ) responsable de llevar a cabo la recopilación de pruebas.

  • Se permite omitir (aplicable a la versión >= v10 ): indica si los usuarios pueden optar por no ejecutar esta etapa estableciendo la propiedad skip en true en el archivo .pipeline-config.yaml. No obstante, se recomienda precaución al utilizar esta función, especialmente en las fases diseñadas para recabar pruebas. Saltarse estas etapas podría dar lugar a que se pierdan pruebas esenciales para la compilación.

Etapas y tareas del proceso de validación de promociones
Tarea o etapa Descripción breve Se permite la personalización en .pipeline-config.yaml Implementación de referencia predeterminada Recogida de pruebas Se permite omitir
inventory-validation Valida la solicitud de incorporación de cambios presentada para la promoción. No N/D No
validation-finish Se recopilan y se cargan los archivos de registro, los artefactos y las pruebas en el archivo de pruebas. No N/D No

Para obtener más información sobre cómo personalizar las etapas mediante el archivo .pipeline-config.yaml, consulta Scripts personalizados y Listas de parámetros de Pipeline.

¿Cómo participar en la validación de promoción?

Obsoleto La opción opt-in-promotion-validation que se utilizaba para iniciar automáticamente el proceso de validación de promociones en una solicitud pull es deprecated en favor de la opción Git Promotion Validation trigger. Si tiene esta propiedad en los valores de entorno, verá el aviso de desuso en los registros de interconexión y la notificación de Slack.

¿Cómo activar la validación de promociones?

Para todas las nuevas cadenas de herramientas de CD, se crea automáticamente un activador de validación de promoción de Git y se configura como habilitado.

Para habilitar el desencadenante de validación de promoción Git en un conducto existente, puede utilizar los pasos siguientes.

  1. Vaya a la página Desencadenante de la interconexión de CD a la que desea añadirla.
  2. Seleccione Añadir > Repositorio de Git para añadir un nuevo desencadenante.
  3. Especifique la siguiente información necesaria para el desencadenante:
    • Proporcione un nombre de desencadenante. Por ejemplo: Desencadenante de validación de promoción de Git.
    • Especifique promotion-validation-listener or promotion-validation-listener-gitlab como EventListener.
    • Seleccione el repositorio de inventario correspondiente para la interconexión para el campo Repositorio.
    • Seleccione el nombre del entorno de destino para la Rama.
    • Marque el recuadro del campo Cuando se abra o actualice una solicitud de extracción.
  4. Pulse Añadir.
  5. Establezca el desencadenante en Activado.

Entradas

Insumos para la promoción
Variable Descripción Valor predeterminado Necesario u opcional
source-environment La rama del inventario de origen de la promoción. master Obligatorio
target-environment La rama del inventario de destino de la promoción. prod Obligatorio
prioridad La prioridad del cambio. critical, high, moderate, lowo planning Opcional
Responsable El ID funcional o el correo electrónico de la persona a la que se debe asignar la solicitud de cambio en la Organización de IBM Cloud de la solicitud de cambio. '' Opcional
Descripción La descripción del cambio que se añade a la descripción de solicitud de cambio. '' Opcional
Finalidad La razón por la que se requiere el cambio. '' Opcional
impact Más notas sobre las repercusiones de la implementación de este cambio. '' Opcional
inventario-ignorar-archivo Nombre de archivo personalizado para el archivo .inventoryignore, este archivo contiene una lista de archivos/carpetas que se deben ignorar en cada ejecución de promoción parcial. .inventoryignore Opcional
inventario-incluir Entradas de inventario para promocionar selectivamente (promoción parcial). '' Opcional
exclusión de inventario Entradas de inventario a excluir en promoción parcial. '' Opcional
backout-plan El plan que describe cómo se retrotrae el cambio en un error. '' Opcional
slack-notifications El conmutador para activar o desactivar la integración de Slack 0 Opcional
impacto en el cliente Impacto del cambio en los clientes. critical, high, moderate, lowo no_impact Opcional

Salidas y efectos

  • Notificaciones de Slack
  • Solicitud de extracción/fusión de promoción

Debe editar y modificar la solicitud de extracción/fusión si no se han proporcionado los parámetros opcionales.

Parámetros de la tabla 2.Optional
Variable Descripción Necesario u opcional
Prioridad Uno de los valores siguientes: Critical, High, Moderate, Low, Planning Obligatorio
Responsable de solicitud de cambio El ID de correo electrónico de la persona asignada. Obligatorio
Descripción adicional Descripción de los cambios introducidos en la aplicación. Opcional
Finalidad El objetivo de los cambios que se han realizado en la aplicación. Opcional
Explicación del impacto El impacto del cambio en el comportamiento de la aplicación o en el entorno. Opcional
Impacto de cliente Uno de los valores siguientes: Critical, High, Moderate, Low, No_Impact Obligatorio
Impacto de despliegue Uno de los valores siguientes: Small, Large Obligatorio
Plan de restitución Los pasos para restituir si el despliegue falla. Opcional

Promoción pull y solicitud merge
Promoción pull y solicitud merge

Cuando se ejecuta la validación de SC de promoción (opcional), el estado de las pruebas se establece en la solicitud de extracción/fusión.

Estado de prueba opcional establecido en la solicitud de promoción y en la solicitud de fusión
Estado de prueba en la solicitud de promoción y en la solicitud de fusión

El resumen de pruebas agregadas de las pruebas (que pueden proceder de varias aplicaciones del inventario) se visualiza en formato tabular como un comentario en la SC.

Resumen de evidencia agregada opcional capturado en un comentario en la solicitud de promoción(pull and merge)
Resumen de evidencia agregada en la solicitud de promoción (pull and merge)

Paso siguiente

Después de que Promotion Pipeline finalice correctamente, puede continuar con CD Pipeline.