Skip to main content

Evitar la duplicación

Puede usar flujos de trabajo reutilizables o acciones compuestas para evitar duplicar el contenido de los flujos de trabajo.

Acerca de los flujos de trabajo reutilizables y las acciones compuestas

Los flujos de trabajo reutilizables y las acciones compuestas son dos maneras de evitar duplicar el contenido de los flujos de trabajo.

Los flujos de trabajo reutilizables permiten reutilizar todo un flujo de trabajo, incluidos todos sus trabajos y pasos. Esto resulta especialmente útil cuando tiene un proceso completo de CI/CD que desea usar en varios repositorios. Los flujos de trabajo reutilizables se pueden mantener de forma centralizada, en una ubicación, pero se usan en muchos repositorios de toda la organización.

Las acciones compuestas permiten combinar varios pasos en una sola acción. A continuación, puede ejecutar este conjunto de pasos como un solo paso dentro de un flujo de trabajo. Esto resulta útil si tiene una secuencia de pasos que se usarán en más de un flujo de trabajo. Las acciones compuestas permiten refactorizar archivos de flujo de trabajo YAML largos en archivos mucho más pequeños y evitar copiar y pegar entre archivos de flujo de trabajo.

Los flujos de trabajo reutilizables y las acciones compuestas resuelven problemas similares, pero tienen algunas diferencias importantes. La mayoría de las veces puede usar cualquiera de las soluciones. Pero algunas de las veces, tendrá que usar una u otra, como se describe más adelante en este artículo.

Para obtener más información sobre cómo crear y usar flujos de trabajo reutilizables y acciones compuestas, consulte "Reutilización de flujos de trabajo" y "Crear una acción compuesta".

Comparación de flujos de trabajo reutilizables y acciones compuestas

  • Trabajos de flujo de trabajo: las acciones compuestas contienen una serie de pasos, que se ejecutan como un solo paso dentro del flujo de trabajo del autor de la llamada. A diferencia de los flujos de trabajo reutilizables, no pueden contener trabajos.
  • Registro: cuando se ejecuta una acción compuesta, el registro mostrará solo el paso del flujo de trabajo del autor de la llamada que ejecutó la acción compuesta, no los pasos individuales dentro de la acción compuesta. Con los flujos de trabajo reutilizables, cada trabajo y paso se registra por separado.
  • Especificación de ejecutores: los flujos de trabajo reutilizables contienen uno o varios trabajos. Al igual que con todos los trabajos de flujos de trabajo, los trabajos de un flujo de trabajo reutilizable especifican el tipo de máquina en el que se ejecutará el trabajo. Por lo tanto, si los pasos deben ejecutarse en un tipo de máquina que podría ser diferente de la máquina elegida para el trabajo del flujo de trabajo que realiza la llamada, debe usar un flujo de trabajo reutilizable, no una acción compuesta.
  • Pasar la salida a los pasos: una acción compuesta se ejecuta como un paso dentro de un trabajo de flujo de trabajo y puede tener varios pasos antes o después del paso que ejecuta la acción compuesta. Los flujos de trabajo reutilizables se llaman directamente dentro de un trabajo y no desde dentro de un paso de trabajo. No puede agregar pasos a un trabajo después de llamar a un flujo de trabajo reutilizable, por lo que no puede usar GITHUB_ENV para pasar valores a pasos de trabajo posteriores en el flujo de trabajo del autor de la llamada.

Diferencias clave entre flujos de trabajo reutilizables y acciones compuestas

Flujos de trabajo reutilizablesAcciones compuestas
Un archivo YAML, muy similar a cualquier archivo de flujo de trabajo estándarUna acción que contiene un conjunto de pasos de flujo de trabajo
Cada flujo de trabajo reutilizable es un único archivo en el directorio .github/workflows de un repositorio.Cada acción compuesta es un repositorio independiente, o un directorio, que contiene un archivo action.yml y, opcionalmente, otros archivos
Se llama haciendo referencia a un archivo YAML específico.Se llama haciendo referencia a un repositorio o directorio en el que se define la acción.
Se llama directamente dentro de un trabajo, no desde un pasoEjecutar como un paso dentro de un trabajo
Puede contener varios trabajosNo contiene trabajos
Cada paso se registra en tiempo realSe registra como un paso incluso si contiene varios pasos
Puede conectar un máximo de cuatro niveles de flujos de trabajo.Se puede anidar para tener hasta 10 acciones compuestas en un flujo de trabajo.
Puede usar secretosNo puede usar secretos
Puede usar condicionales if:No puede usar condicionales if: