Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
Introducción
Esta guía te ayuda a migrar de Travis CI a GitHub Actions. Aquí se comparan sus conceptos y sintaxis, se describen sus similitudes y se demuestran sus acercamientos distintos para las tareas comunes.
Antes de comenzar
Antes de que comiences tu migración a GitHub Actions, sería útil familiarizarse con la forma en la que funciona:
- Para ver un ejemplo rápido que muestra un trabajo de GitHub Actions, consulte "Inicio rápido para GitHub Actions".
- Para obtener información sobre los conceptos básicos de GitHub Actions, vea "Introducción a Acciones de GitHub".
Comparar la ejecución de jobs
Para proporcionarle control sobre cuándo se ejecutan las tareas de CI, un flujo de trabajo de GitHub Actions usa trabajos que se ejecutan en paralelo de forma predeterminada. Cada trabajo contiene pasos que se ejecutan en una secuencia definida por usted. Si necesitas ejecutar acciones de configuración y limpieza para un job, puedes definir pasos en cada job para que esto se lleve a cabo.
Similitudes en las claves
GitHub Actions y Travis CI comparten algunas similitudes y entenderlas con anticipación puede ayudar a agilizar el proceso de migración.
Utilizar la sintaxis de YAML
Tanto Travis CI como GitHub Actions utilizan YAML para crear jobs y flujos de trabajo y estos archivos se almacenan en el repositorio del código. Para obtener más información sobre cómo GitHub Actions usa YAML, vea "Creación de un archivo de flujo de trabajo".
Variables de entorno personalizadas
Travis CI te permite configurar variables de ambiente y compartirlas entre etapas. De forma similar, las GitHub Actions te permiten definir las variables de ambiente para un paso, job o flujo de trabajo. Para más información, vea "Variables de entorno".
Variables de entorno predeterminadas
Tanto Travis CI como GitHub Actions incluyen variables de ambiente predeterminadas que puedes utilizar en tus archivos de YAML. Puede ver las variables de GitHub Actions en "Variables de entorno predeterminadas".
Proceso paralelo de jobs
Travis CI puede usar stages
para ejecutar trabajos en paralelo. Del mismo modo, GitHub Actions ejecuta jobs
en paralelo. Para más información, vea "Creación de trabajos dependientes".
Notificaciones de estado
Tanto Travis CI como GitHub Actions son compatibles con las insignias de estado, lo cual te permite indicar si una compilación pasa o falla. Para más información, vea "Adición de un distintivo de estado de flujo de trabajo al repositorio".
Uso de una matriz
Tanto Travis CI como GitHub Actions son compatibles con matrices, lo cual te permite realizar pruebas mediante combinaciones de sistemas operativos y paquetes de software. Para más información, consulta "Uso de una matriz para los trabajos".
A continuación podrás encontrar un ejemplo que compara la sintaxis para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Apuntar a ramas específicas
Tanto Travis CI como GitHub Actions te permiten apuntar tu IC a una rama específica. Para más información, vea "Sintaxis del flujo de trabajo para Acciones de GitHub".
Aquí se muestra un ejemplo de la sintaxis para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Verificar submódulos
Tanto Travis CI como GitHub Actions te permiten controlar si los submódulos se incluirán en los clones de los repositorios.
Aquí se muestra un ejemplo de la sintaxis para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Utilizar variables de ambiente en una matriz
Tanto GitHub Actions como Travis CI pueden agregar variables de ambiente personalizadas a una matriz de pruebas, lo cual te permite referirte a la variable en un paso subsecuente.
En GitHub Actions, puede usar la clave include
para agregar variables de entorno personalizadas a una matriz. En este ejemplo, las entradas de matriz de node-version
se configuran a fin de usar otro valores para las variables de entorno site
y datacenter
. Después, el paso Echo site details
usa env: ${{ matrix.env }}
para hacer referencia a las variables personalizadas:
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- node-version: 10.x
site: "prod"
datacenter: "site-a"
- node-version: 12.x
site: "dev"
datacenter: "site-b"
steps:
- name: Echo site details
env:
SITE: ${{ matrix.site }}
DATACENTER: ${{ matrix.datacenter }}
run: echo $SITE $DATACENTER
Características clave en GitHub Actions
Cuando te migres de Travis CI, consider las siguientes características clave en GitHub Actions:
Almacenamiento de secretos
GitHub Actions te permite almacenar secretos y referenciarlos en tus jobs. Las organizaciones de GitHub Actions pueden limitar qué repositorios pueden acceder a sus secretos. Las reglas de protección de ambiente pueden requerir aprobación manual para que un flujo de trabajo acceda a los secretos del ambiente. Para más información, vea "Secretos cifrados".
Compartir archivos entre jobs y flujos de trabajo
GitHub Actions incluye compatibilidad integrada para almacenamiento de artefactos, lo cual te permite compartir archivos entre jobs en un flujo de trabajo. También puedes guardar los archivos resultantes y compartirlos con otros flujos de trabajo. Para más información, vea "Uso compartido de datos entre trabajos".
Alojar tus propios corredores
Si tus jobs requieren de hardware o software específico, GitHub Actions te permite almacenar tus propios ejecutores y enviar tus jobs para que éstos los procesen. GitHub Actions también te permite utilizar políticas para controlar cómo se accede a estos ejecutores, otorgando acceso a nivel de organización o de repositorio. Para más información, vea "Hospedaje de sus propios ejecutores".
Utilizar lenguajes diferentes en GitHub Actions
Cuando trabajas con lenguajes diferentes en GitHub Actions, pueeds crear un paso en tu job para configurar tus dependencias de lenguaje. Para obtener más información acerca de cómo trabajar con un lenguaje en particular, consulta la guía específica:
- Crear y probar en Node.js
- Crear y probar en Python
- Compilar y probar PowerShell
- Compilación y prueba de Java con Maven
- Compilación y prueba de Java con Gradle
- Compilación y prueba de Java con Ant
Ejecución de scripts
GitHub Actions puede usar pasos run
para ejecutar scripts o comandos de shell. Para usar un shell determinado, puede especificar el tipo de shell
al proporcionar la ruta de acceso al script. Para más información, vea "Sintaxis de flujo de trabajo para GitHub Actions".
Por ejemplo:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
Manejo de errores en GitHub Actions
Cuando te migras a GitHub Actions, hay varios acercamientos al manejo de errores que puede que necesites tener en mente.
Manejo de errores en scripts
GitHub Actions detiene un job inmediatamente si alguno de los pasos regresa un código de error. Para más información, vea "Sintaxis de flujo de trabajo para GitHub Actions".
Manejo de errores en jobs
GitHub Actions usa condicionales if
para ejecutar trabajos o pasos en ciertas situaciones. Por ejemplo, puede ejecutar un paso cuando otro paso da como resultado failure()
. Para más información, vea "Sintaxis de flujo de trabajo para GitHub Actions". También puede usar continue-on-error
para evitar que una ejecución de flujo de trabajo se detenga cuando se produce un error en un trabajo.
Sintaxis de migración para condicionales y expresiones
Para ejecutar trabajos con expresiones condicionales, Travis CI y GitHub Actions comparten una sintaxis de condición if
similar. GitHub Actions permite usar el condicional if
para evitar que un trabajo o un paso se ejecuten a menos que se cumpla una condición. Para más información, vea "Expresiones".
En este ejemplo se muestra cómo un condicional if
puede controlar si se ejecuta un paso:
jobs:
conditional:
runs-on: ubuntu-latest
steps:
- run: echo "This step runs with str equals 'ABC' and num equals 123"
if: env.str == 'ABC' && env.num == 123
Migrar las fases a pasos
Donde Travis CI usa fases para ejecutar pasos, GitHub Actions tiene pasos que ejecutan acciones. Puede encontrar acciones precompiladas en GitHub Marketplace, o bien puede crear sus propias acciones. Para más información, vea "Creación de acciones".
Aquí se muestra un ejemplo de la sintaxis para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Almacenar dependencias en caché
Travis CI y GitHub Actions te permiten guardar dependencias en caché manualmente para reutilizarlas posteriormente.
El almacenamiento en caché de GitHub Actions solo está disponible para los repositorios hospedados en GitHub.com o GitHub Enterprise Server 3.5 y versiones posteriores. Para más información, vea "Almacenamiento en caché de dependencias para acelerar los flujos de trabajo".
Ejemplos de tareas comunes
Esta sección compara cómo GitHub Actions y Travis CI realizan tareas en común.
Configurar variables de ambiente
Puedes crear variables de ambiente personalizadas en un job de GitHub Actions. Por ejemplo:
Travis CI | Flujo de trabajo de GitHub Actions |
---|---|
|
|
Compilar con Node.js
Travis CI | Flujo de trabajo de GitHub Actions |
---|---|
|
|
Pasos siguientes
Para seguir aprendiendo sobre las características principales de GitHub Actions, vea"Más información sobre GitHub Actions".