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
- Recopilar comentarios para la promoción y la solicitud de incorporación/fusión de la promoción.
- Promueva las entradas de inventario del entorno de origen al entorno de destino.
- 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.
- 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.
- Fusione la solicitud de extracción/fusión.
- 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-testssetup, 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.
| 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 | Sí | N/D | No |
inventory-finish |
Se recopilan y se cargan los archivos de registro, los artefactos y las pruebas en el archivo de pruebas. | Sí | 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-testssetup, 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.
| 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 | Sí | N/D | No |
validation-finish |
Se recopilan y se cargan los archivos de registro, los artefactos y las pruebas en el archivo de pruebas. | Sí | 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.
- Vaya a la página Desencadenante de la interconexión de CD a la que desea añadirla.
- Seleccione Añadir > Repositorio de Git para añadir un nuevo desencadenante.
- 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-gitlabcomoEventListener. - 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.
- Pulse Añadir.
- Establezca el desencadenante en Activado.
Entradas
| 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.
| 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 |
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.
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.
Paso siguiente
Después de que Promotion Pipeline finalice correctamente, puede continuar con CD Pipeline.