Nota:
Actualmente los ejecutores hospedados por GitHub Enterprise Server no se admiten en GitHub.
Introducción
Esta guía le 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 iniciar la migración a GitHub Actions, sería útil familiarizarse con cómo funciona:
- Para obtener un ejemplo rápido que muestre un GitHub Actions trabajo, consulte Inicio rápido para GitHub Actions.
- Para obtener información sobre los conceptos esenciales GitHub Actions , consulte Descripción de Acciones de GitHub.
Comparar la ejecución de tareas
Para proporcionarle control sobre cuándo se ejecutan las tareas de CI, un GitHub Actions_flujo de trabajo_ 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 Clave
GitHub Actions y Travis CI comparten ciertas similitudes y comprenderlas con antelación pueden ayudar a suavizar el proceso de migración.
Utilizar la sintaxis de YAML
Travis CI y GitHub Actions ambos usan YAML para crear trabajos 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, consulte Creación de un flujo de trabajo de ejemplo.
Variables personalizadas
Travis CI te permite configurar variables y compartirlas entre etapas. Del mismo modo, GitHub Actions permite definir variables para un flujo de trabajo. Para más información, consulta Almacenamiento de información en variables.
Variables predeterminadas
Travis CI e GitHub Actions incluyen variables de entorno predeterminadas que puede usar en los archivos YAML. Para GitHub Actions, puede ver estos en Referencia de variables.
Procesamiento paralelo de trabajos
Travis CI puede usar stages para ejecutar trabajos en paralelo. De forma similar, GitHub Actions se ejecuta jobs en paralelo. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.
Insignias de estado
Travis CI y GitHub Actions ambos admiten notificaciones de estado, lo que le permite indicar si una compilación se está pasando o con errores. Para más información, consulta Adición de un distintivo de estado de flujo de trabajo.
Uso de una matriz
Travis CI y GitHub Actions ambos admiten una matriz, lo que le permite realizar pruebas mediante combinaciones de sistemas operativos y paquetes de software. Para más información, consulta Ejecución de variaciones de trabajos en un flujo de trabajo.
A continuación, podrás encontrar un ejemplo que compara la sintaxis de cada sistema.
Sintaxis de Travis CI en una matriz
matrix:
include:
- rvm: '2.5'
- rvm: '2.6.3'
GitHub Actions sintaxis de una matriz
jobs:
build:
strategy:
matrix:
ruby: ['2.5', '2.6.3']
Apuntar a ramas específicas
Travis CI y GitHub Actions ambos le permiten dirigirse a la CI a una rama específica. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.
A continuación encontrarás un ejemplo de la sintaxis para cada sistema.
Sintaxis de Travis CI para dirigirse a ramas específicas
branches:
only:
- main
- 'mona/octocat'
GitHub Actions sintaxis para dirigirse a ramas específicas
on:
push:
branches:
- main
- 'mona/octocat'
Verificar submódulos
Travis CI y GitHub Actions ambos permiten controlar si los submódulos se incluyen en el clon del repositorio.
A continuación encontrarás un ejemplo de la sintaxis para cada sistema.
Sintaxis de Travis CI para extraer submódulos
git:
submodules: false
GitHub Actions sintaxis para desprotegentes submódulos
- uses: actions/checkout@v6
with:
submodules: false
Utilizar variables de ambiente en una matriz
Travis CI y GitHub Actions puede agregar variables personalizadas a una matriz de prueba, lo que le permite hacer referencia a la variable en un paso posterior.
En GitHub Actions, puede usar la include clave 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: '14.x'
site: "prod"
datacenter: "site-a"
- node-version: '16.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 de GitHub Actions
Al migrar desde Travis CI, tenga en cuenta las siguientes características clave en GitHub Actions:
Almacenamiento de secretos
GitHub Actions permite almacenar secretos y hacer referencia a ellos en los trabajos. GitHub Actions Las organizaciones pueden limitar qué repositorios pueden acceder a los secretos de la organización. Las reglas de protección de implementación pueden requerir aprobación manual para que un flujo de trabajo acceda a los secretos del ambiente. Para más información, consulta Secretos.
Compartir archivos entre tareas y flujos de trabajo
GitHub Actions incluye compatibilidad integrada con el almacenamiento de artefactos, lo que le permite compartir archivos entre trabajos en un flujo de trabajo. También puedes guardar los archivos resultantes y compartirlos con otros flujos de trabajo. Para más información, consulta Descripción de Acciones de GitHub.
Alojar tus propios corredores
Si los trabajos requieren hardware o software específicos, GitHub Actions le permite hospedar sus propios ejecutores y enviar sus trabajos a ellos para su procesamiento. GitHub Actions también le permite usar directivas para controlar cómo se accede a estos ejecutores, concediéndole acceso en el nivel de organización o repositorio. Para más información, consulta Administración de ejecutores autohospedados.
Uso de idiomas diferentes en GitHub Actions
Al trabajar con diferentes idiomas en GitHub Actions, puede crear un paso en el trabajo para configurar las dependencias de lenguaje. Para obtener más información acerca de cómo trabajar con un lenguaje en particular, consulta Construir y probar tu código.
Ejecución de scripts
GitHub Actions puede usar run los pasos para ejecutar scripts o comandos de shell. Para usar un shell determinado, puede especificar el tipo shell al proporcionar la ruta de acceso al script. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.
Por ejemplo:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
Control de errores en GitHub Actions
Al migrar a GitHub Actions, hay diferentes enfoques para el control de errores que es posible que deba tener en cuenta.
Manejo de errores en scripts
GitHub Actions detiene un trabajo inmediatamente si uno de los pasos devuelve un código de error. Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub.
Manejo de errores en tareas
GitHub Actions usa if condicionales para ejecutar trabajos o pasos en determinadas situaciones. Por ejemplo, puede ejecutar un paso cuando otro paso da como resultado failure(). Para más información, consulta Sintaxis del flujo de trabajo para Acciones de GitHub. 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 en expresiones condicionales, Travis CI y GitHub Actions compartir una sintaxis de condición similar if .
GitHub Actions permite usar el if condicional para evitar que se ejecute un trabajo o un paso a menos que se cumpla una condición. Para más información, consulta Evaluación de expresiones en flujos de trabajo y acciones.
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 Marketplaceo puede crear sus propias acciones. Para más información, consulta Reutilización de automatizaciones.
A continuación encontrarás un ejemplo de la sintaxis para cada sistema.
Sintaxis de Travis CI para fases y pasos
language: python
python:
- "3.7"
script:
- python script.py
GitHub Actions sintaxis de pasos y acciones
jobs:
run_python:
runs-on: ubuntu-latest
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.7'
architecture: 'x64'
- run: python script.py
Almacenar dependencias en caché
Travis CI y GitHub Actions le permite almacenar en caché manualmente las dependencias para su reutilización posterior.
En estos ejemplos se muestra la sintaxis de caché de cada sistema.
Sintaxis de Travis CI para el almacenamiento en caché
language: node_js
cache: npm
sintaxis de Acciones de GitHub para el almacenamiento en caché
- name: Cache node modules
uses: actions/cache@v4
with:
path: ~/.npm
key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
restore-keys: v1-npm-deps-
Ejemplos de tareas comunes
En esta sección se compara cómo GitHub Actions y Travis CI realizan tareas comunes.
Configurar variables de ambiente
Puede crear variables de entorno personalizadas en un GitHub Actions trabajo.
Sintaxis de Travis CI para una variable de entorno
env:
- MAVEN_PATH="/usr/local/maven"
GitHub Actions flujo de trabajo con una variable de entorno
jobs:
maven-build:
env:
MAVEN_PATH: '/usr/local/maven'
Compilar con Node.js
Travis CI para la compilación con Node.js
install:
- npm install
script:
- npm run build
- npm test
GitHub Actions flujo de trabajo para compilar con Node.js
name: Node.js CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '16.x'
- run: npm install
- run: npm run build
- run: npm test
Pasos siguientes
Para seguir aprendiendo sobre las características principales de GitHub Actions, consulte Escritura de flujos de trabajo.