Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.
Introducción
Tanto Azure Pipelines como GitHub Actions te permiten crear flujos de trabajo que compilan, prueban, publican, lanzan y despliegan código automáticamente. Azure Pipelines y GitHub Actions comparten algunas similaridades en la configuración del flujo de trabajo:
- Los archivos de configuración de flujo de trabajo están escritas en YAML y se almacenan en el repositorio del código.
- Los flujos de trabajo incluyen uno o más jobs.
- Los jobs incluyen uno o más pasos o comandos individuales.
- Los pasos o tareas pueden reutilizarse y compartirse con la comunidad.
Para obtener más información, consulta la sección "Conceptos esenciales para GitHub Actions".
Diferencias clave
Cuando migres desde Azure Pipelines, considera las siguientes diferencias:
- Azure Pipelines soporta un editor clásico tradicional, lo cual te permite definir tu configuración de IC en un editor de GUI en vez de crear la definición de mapa en un archivo YAML. GitHub Actions utiliza archivos YAML para definir flujos de trabajo y no es compatible con un editor gráfico.
- Azure Pipelines te permite omitir parte de la estructura en las definiciones de jobs. Por ejemplo, si solo tienes un job, no necesitas definirlo y solo necesitas definir sus pasos. GitHub Actions requiere una configuración específica y no se puede omitir la estructura de YAML.
- Azure Pipelines es compatible con las etapas que se definen en el archivo YAML, las cuales se pueden utilizar para crear flujos de trabajo de despliegue. GitHub Actions necesita que separes las etapas en archivos de flujo de trabajo de YAML diferentes.
- Azure Pipelines instalado localmente compila agentes que pueden seleccionarse con capacidades. Los ejecutores auto-hospedados de GitHub Actions pueden seleccionarse con etiquetas.
Migrar jobs y pasos
Los jobs y los pasos en Azure Pipelines son muy similares a aquellos en GitHub Actions. En ambos sistemas, los jobs tienen las siguientes características:
- Los jobs contienen una serie de pasos que se ejecutan en secuencia.
- Los jobs se ejecutan en máquinas virtuales separadas o en contenedores separados.
- Los jobs se ejecutan en paralelo predeterminadamente, pero pueden configurarse para ejecutarse en secuencia.
Migrar los pasos de un script
Puedes ejecutar un script o comando de shell como un paso en un flujo de trabajo. En Azure Pipelines, los pasos de un script pueden especificarse utilizando la clave script
, o con las claves bash
, powershell
, o pwsh
. Los scripts también pueden especificarse como una entrada a la tarea Bash o la tarea PowerShell.
En GitHub Actions, todos los scripts se especifican utilizando la clave run
. Para seleccionar un shell en particular, puedes especificar la clave shell
cuando proporciones el script. Para obtener más información, consulta la sección "Sintaxis de flujo de trabajo para GitHub Actions".
Puedes encontrar un ejemplo de la sintaxis para cada sistema:
Azure Pipelines | GitHub Actions |
---|---|
|
|
Diferencias en el manejo de errores de los scripts
En Azure Pipelines, los scripts se pueden configurar para generar un error si cualquier salida se envía a stderr
. GitHub Actions no es compatible con esta configuración.
GitHub Actions configura shells para que "fallen rápidamente" cuando sea posible, lo cual detiene el script inmediatamente si alguno de los comandos en éste sale con un código de error. En contraste, Azure Pipelines requiere de una configuración explícita para salir inmediatamente en caso de error. Para obtener más información, consulta la sección "Sintaxis de flujo de trabajo para GitHub Actions".
Diferencias con el shell predeterminado de Windows
En Azure Pipelines, el shell predeterminado para los scripts en plataformas Windows es el Símbolo de Sistema (cmd.exe). En GitHub Actions, el shell predeterminado para los scripts en plataformas Windows es PowerShell. PowerShell tiene varias diferencias en comandos integrados, expansión de variables y control de flujo.
Si estás utilizando un comando simple, es posible que puedas ejecutar un script de Símbolo de Sistema en PowerShell sin tener que realizar cambios. Pero en la mayoría de los casos, tendrás que actualizar tu script con la sintaxis de PowerShell o dar la instrucción a GitHub Actions para ejecutar el script con el Símbolo de Sistema en vez de con PowerShell. Puedes hacer esto especificando shell
como cmd
.
Puedes encontrar un ejemplo de la sintaxis para cada sistema:
Azure Pipelines | GitHub Actions |
---|---|
|
|
Para obtener más información, consulta la sección "Sintaxis de flujo de trabajo para GitHub Actions".
Migrar la sintaxis de expresión y los condicionales
Tanto Azure Pipelines como GitHub Actions pueden ejecutar pasos condicionalmente. En Azure Pipelines, las expresiones condicionales se especifican utilizando la clave condition
. En GitHub Actions, las expresiones condicionales se especifican utilizando la clave if
.
Azure Pipelines utiliza funciones dentro de las expresiones para ejecutar los pasos condicionalmente. En contraste, GitHub Actions utiliza una notación infija. Por ejemplo, puedes reemplazar la función eq
en Azure Pipelines con el operador ==
en GitHub Actions.
Puedes encontrar un ejemplo de la sintaxis para cada sistema:
Azure Pipelines | GitHub Actions |
---|---|
|
|
Para obtener más información, consulta la sección "Expresiones".
Dependencias entre jobs
Tanto Azure Pipelines como GitHub Actions te permiten configurar dependencias par un job. En ambos sistemas, los jobs se ejecutan en paralelo predeterminadamente, pero las dependencias de estos pueden especificarse explícitamente. En Azure Pipelines, esto se hace con la clave dependsOn
. En GitHub Actions, esto se hace con la clave needs
.
Puedes encontrar un ejemplo de la sintaxis para cada sistema. El flujo de trabajo comienza un primer job llamado initial
, y cuando este job se completa, se ejecutarán dos jobs llamados fanout1
y fanout2
. Finalmente, cuando se completen estos dos jobs, se ejecutará el job fanin
.
Azure Pipelines | GitHub Actions |
---|---|
|
|
Para obtener más información, consulta la sección "Sintaxis de flujo de trabajo para GitHub Actions".
Migrar las tareas a acciones
Azure Pipelines utiliza tareas, que son componentes de las aplicaciones que pueden reutilizarse en varios flujos de trabajo. GitHub Actions utilizaacciones, que se pueden utilizar para realizar tareas y personalizar tu flujo de trabajo. En ambos sistemas, puedes especificar el nombre de la tarea o acción a ejecutar junto con cualquier entrada requerida como pares de clave/valor.
Puedes encontrar un ejemplo de la sintaxis para cada sistema:
Azure Pipelines | GitHub Actions |
---|---|
|
|
Puedes encontrar acciones que puedas utilizar en tu flujo de trabajo en GitHub Marketplace, o puedes crear tus propias acciones. Para obtener más información, consulta la sección "Crear acciones".