Skip to main content

Migrarse de Travis CI a Actions

Esta guía te ayuda a migrar de Travis CI a Actions. Aquí se comparan sus conceptos y sintaxis, se describen sus similitudes y se demuestran sus acercamientos distintos para las tareas comunes.

Antes de que comiences tu migración a Actions, sería útil familiarizarse con la forma en la que funciona:

Para proporcionarle control sobre cuándo se ejecutan las tareas de CI, un flujo de trabajo de 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.

Actions y Travis CI comparten algunas similitudes y entenderlas con anticipación puede ayudar a agilizar el proceso de migración.

Tanto Travis CI como Actions utilizan YAML para crear jobs y flujos de trabajo y estos archivos se almacenan en el repositorio del código. Para más información sobre cómo se usa YAML en Actions, consulta Entender las Actions.

Travis CI te permite configurar variables y compartirlas entre etapas. De forma similar, Actions te permite definir las variables para un flujo de trabajo. Para más información, consulta Almacenamiento de información en variables.

Tanto Travis CI como Actions incluyen variables de ambiente predeterminadas que puedes utilizar en tus archivos de YAML. Puedes ver las variables de Actions enumeradas en Almacenamiento de información en variables.

Travis CI puede usar stages para ejecutar trabajos en paralelo. Del mismo modo, Actions ejecuta jobs en paralelo. Para más información, consulta Acerca de los flujos de trabajo.

Tanto Travis CI como 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, consulta Adición de un distintivo de estado de flujo de trabajo.

Tanto Travis CI como 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 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.

matrix:
  include:
    - rvm: '2.5'
    - rvm: '2.6.3'

jobs:
  build:
    strategy:
      matrix:
        ruby: ['2.5', '2.6.3']

Tanto Travis CI como Actions te permiten apuntar tu IC a una rama específica. Para más información, consulta Sintaxis del flujo de trabajo para Actions.

A continuación encontrarás un ejemplo de la sintaxis para cada sistema.

branches:
  only:
    - main
    - 'mona/octocat'

on:
  push:
    branches:
      - main
      - 'mona/octocat'

Tanto Travis CI como Actions te permiten controlar si los submódulos se incluirán en los clones de los repositorios.

A continuación encontrarás un ejemplo de la sintaxis para cada sistema.

git:
  submodules: false

- uses: actions/checkout@v4
  with:
    submodules: false

Tanto Actions como Travis CI pueden agregar variables personalizadas a una matriz de pruebas, lo cual te permite referirte a la variable en un paso subsecuente.

En 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: '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

Cuando te migres de Travis CI, consider las siguientes características clave en Actions:

Actions te permite almacenar secretos y referenciarlos en tus jobs. Las organizaciones de Actions pueden limitar qué repositorios pueden acceder a sus secretos. 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 Acerca de los secretos.

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, consulta Entender las Actions.

Si tus jobs requieren de hardware o software específico, Actions te permite almacenar tus propios ejecutores y enviar tus jobs para que éstos los procesen. 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, consulta Alojar tus propios corredores.

Los jobs simultáneos y los tiempos de ejecución de los flujos de trabajo en Actions pueden variad dependiendo de tu plan de . Para más información, consulta Límites de uso, facturación y administración.

Cuando trabajas con lenguajes diferentes en 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 Compilación y prueba.

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, consulta Sintaxis del flujo de trabajo para Actions.

Por ejemplo:

steps:
  - name: Run build script
    run: ././scripts/build.sh
    shell: bash

Cuando te migras a Actions, hay varios acercamientos al manejo de errores que puede que necesites tener en mente.

Actions detiene un job inmediatamente si alguno de los pasos regresa un código de error. Para más información, consulta Sintaxis del flujo de trabajo para Actions.

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, consulta Sintaxis del flujo de trabajo para 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.

Para ejecutar trabajos con expresiones condicionales, Travis CI y Actions comparten una sintaxis de condición if similar. 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, 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

Donde Travis CI usa fases para ejecutar pasos, Actions tiene pasos que ejecutan acciones. Puede encontrar acciones precompiladas en Marketplace, o bien puede crear sus propias acciones. Para más información, consulta Uso compartido de automatizaciones.

A continuación encontrarás un ejemplo de la sintaxis para cada sistema.

language: python
python:
  - "3.7"

script:
  - python script.py

jobs:
  run_python:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/setup-python@v5
        with:
          python-version: '3.7'
          architecture: 'x64'
      - run: python script.py

Travis CI y Actions te permiten guardar dependencias en caché manualmente para reutilizarlas posteriormente.

En estos ejemplos se muestra la sintaxis de caché de cada sistema.

language: node_js
cache: npm

- name: Cache node modules
  uses: actions/cache@v4
  with:
    path: ~/.npm
    key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}
    restore-keys: v1-npm-deps-

Esta sección compara cómo Actions y Travis CI realizan tareas en común.

Puedes crear variables de ambiente personalizadas en un job de Actions.

env:
  - MAVEN_PATH="/usr/local/maven"

jobs:
  maven-build:
    env:
      MAVEN_PATH: '/usr/local/maven'

install:
  - npm install
script:
  - npm run build
  - npm test

name: Node.js CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '16.x'
      - run: npm install
      - run: npm run build
      - run: npm test

Para continuar el aprendizaje sobre las características principales de Actions, consulta Escritura de flujos de trabajo.