{"meta":{"title":"Migración de Travis CI a Acciones de GitHub","intro":"GitHub Actions y Travis CI comparten varias similitudes, lo que ayuda a que sea relativamente sencillo migrar a GitHub Actions.","product":"GitHub Actions","breadcrumbs":[{"href":"/es/actions","title":"GitHub Actions"},{"href":"/es/actions/tutorials","title":"Tutoriales"},{"href":"/es/actions/tutorials/migrate-to-github-actions","title":"Migrar a GitHub Actions"},{"href":"/es/actions/tutorials/migrate-to-github-actions/manual-migrations","title":"Migraciones manuales"},{"href":"/es/actions/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-travis-ci","title":"Migración desde Travis CI"}],"documentType":"article"},"body":"# Migración de Travis CI a Acciones de GitHub\n\nGitHub Actions y Travis CI comparten varias similitudes, lo que ayuda a que sea relativamente sencillo migrar a GitHub Actions.\n\n## Introducción\n\nEsta 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.\n\n## Antes de comenzar\n\nAntes de iniciar la migración a GitHub Actions, sería útil familiarizarse con cómo funciona:\n\n* Para obtener un ejemplo rápido que muestre un GitHub Actions trabajo, consulte [Inicio rápido para Acciones de GitHub](/es/actions/get-started/quickstart).\n* Para obtener información sobre los conceptos esenciales GitHub Actions , consulte [Almacenamiento y uso compartido de datos con artefactos de flujo de trabajo](/es/actions/tutorials/store-and-share-data#passing-data-between-jobs-in-a-workflow).\n\n## Comparar la ejecución de tareas\n\nPara 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.\n\n## Similitudes Clave\n\nGitHub Actions y Travis CI comparten ciertas similitudes y comprenderlas con antelación pueden ayudar a suavizar el proceso de migración.\n\n### Utilizar la sintaxis de YAML\n\nTravis 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](/es/actions/tutorials/create-an-example-workflow).\n\n### Variables personalizadas\n\nTravis 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](/es/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables).\n\n### Variables predeterminadas\n\nTravis CI e GitHub Actions incluyen variables de entorno predeterminadas que puede usar en los archivos YAML. Para GitHub Actions, puede verlos en [Referencia de variables](/es/actions/reference/workflows-and-actions/variables#default-environment-variables).\n\n### Procesamiento paralelo de trabajos\n\nTravis 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](/es/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idneeds).\n\n### Insignias de estado\n\nTravis CI y GitHub Actions son compatibles con insignias de estado, que permiten indicar si una compilación se completa correctamente o falla.\nPara más información, consulta [Adición de un distintivo de estado de flujo de trabajo](/es/actions/how-tos/monitor-workflows/add-a-status-badge).\n\n### Uso de una matriz\n\nTravis 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](/es/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations).\n\nA continuación, podrás encontrar un ejemplo que compara la sintaxis de cada sistema.\n\n#### Sintaxis de Travis CI en una matriz\n\n```yaml\nmatrix:\n  include:\n    - rvm: '2.5'\n    - rvm: '2.6.3'\n```\n\n#### GitHub Actions sintaxis de una matriz\n\n```yaml\njobs:\n  build:\n    strategy:\n      matrix:\n        ruby: ['2.5', '2.6.3']\n```\n\n### Apuntar a ramas específicas\n\nTanto Travis CI como GitHub Actions le permiten configurar su CI para una rama específica. Para más información, consulta [Sintaxis del flujo de trabajo para Acciones de GitHub](/es/actions/reference/workflows-and-actions/workflow-syntax#onpushbranchestagsbranches-ignoretags-ignore).\n\nA continuación encontrarás un ejemplo de la sintaxis para cada sistema.\n\n#### Sintaxis de Travis CI para dirigirse a ramas específicas\n\n```yaml\nbranches:\n  only:\n    - main\n    - 'mona/octocat'\n```\n\n#### GitHub Actions sintaxis para seleccionar ramas específicas\n\n```yaml\non:\n  push:\n    branches:\n      - main\n      - 'mona/octocat'\n```\n\n### Verificar submódulos\n\nTravis CI y GitHub Actions ambos permiten controlar si los submódulos se incluyen en el clon del repositorio.\n\nA continuación encontrarás un ejemplo de la sintaxis para cada sistema.\n\n#### Sintaxis de Travis CI para extraer submódulos\n\n```yaml\ngit:\n  submodules: false\n```\n\n#### Sintaxis de GitHub Actions para restaurar submódulos\n\n```yaml\n- uses: actions/checkout@v6\n  with:\n    submodules: false\n```\n\n### Utilizar variables de ambiente en una matriz\n\nTravis 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.\n\nEn 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:\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n       include:\n         - node-version: '14.x'\n           site: \"prod\"\n           datacenter: \"site-a\"\n         - node-version: '16.x'\n           site: \"dev\"\n           datacenter: \"site-b\"\n    steps:\n      - name: Echo site details\n        env:\n          SITE: ${{ matrix.site }}\n          DATACENTER: ${{ matrix.datacenter }}\n        run: echo $SITE $DATACENTER\n```\n\n## Características clave de GitHub Actions\n\nAl migrar desde Travis CI, tenga en cuenta las siguientes características clave en GitHub Actions:\n\n### Almacenamiento de secretos\n\nGitHub Actions permite almacenar secretos y hacer referencia a ellos en los trabajos.\nGitHub 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](/es/actions/concepts/security/secrets).\n\n### Compartir archivos entre tareas y flujos de trabajo\n\nGitHub 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](/es/actions/get-started/understand-github-actions).\n\n### Alojar tus propios corredores\n\nSi 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.\nGitHub Actions también permite usar políticas para controlar el modo en que se accede a estos ejecutores, otorgando acceso en el nivel de organización o de repositorio. Para más información, consulta [Administración de ejecutores autohospedados](/es/actions/how-tos/manage-runners/self-hosted-runners).\n\n### Trabajos concurrentes y tiempo de ejecución\n\nLos trabajos simultáneos y los tiempos de ejecución del flujo de trabajo en GitHub Actions pueden variar en función del GitHub plan. Para más información, consulta [Facturación y utilización](/es/actions/concepts/billing-and-usage).\n\n### Uso de idiomas diferentes en GitHub Actions\n\nAl 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](/es/actions/tutorials/build-and-test-code).\n\n## Ejecución de scripts\n\nGitHub Actions puede usar los pasos de `run` para ejecutar scripts o comandos del 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](/es/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun).\n\nPor ejemplo:\n\n```yaml\nsteps:\n  - name: Run build script\n    run: ./.github/scripts/build.sh\n    shell: bash\n```\n\n## Control de errores en GitHub Actions\n\nAl migrar a GitHub Actions, hay diferentes enfoques para el control de errores que es posible que deba tener en cuenta.\n\n### Manejo de errores en scripts\n\nGitHub 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](/es/actions/reference/workflows-and-actions/workflow-syntax#exit-codes-and-error-action-preference).\n\n### Manejo de errores en tareas\n\nGitHub 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](/es/actions/reference/workflows-and-actions/workflow-syntax#example-using-status-check-functions). También puede usar [`continue-on-error`](/es/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontinue-on-error) para evitar que una ejecución de flujo de trabajo se detenga cuando se produce un error en un trabajo.\n\n## Sintaxis de migración para condicionales y expresiones\n\nPara ejecutar trabajos con expresiones condicionales, Travis CI y GitHub Actions comparten una sintaxis de condiciones similar `if`.\nGitHub Actions le permite usar el `if` condicional para evitar que un trabajo o paso se ejecute, a menos que se cumpla una condición. Para más información, consulta [Evaluación de expresiones en flujos de trabajo y acciones](/es/actions/reference/workflows-and-actions/expressions).\n\nEn este ejemplo se muestra cómo un condicional `if` puede controlar si se ejecuta un paso:\n\n```yaml\njobs:\n  conditional:\n    runs-on: ubuntu-latest\n    steps:\n      - run: echo \"This step runs with str equals 'ABC' and num equals 123\"\n        if: env.str == 'ABC' && env.num == 123\n```\n\n## Migrar las fases a pasos\n\nDonde Travis CI usa *fases* para ejecutar *pasos*, GitHub Actions tiene *pasos* que ejecutan *acciones*. Puede encontrar acciones precompiladas en [GitHub Marketplace](https://github.com/marketplace?type=actions)o puede crear sus propias acciones. Para más información, consulta [Reutilización de automatizaciones](/es/actions/how-tos/reuse-automations).\n\nA continuación encontrarás un ejemplo de la sintaxis para cada sistema.\n\n### Sintaxis de Travis CI para fases y pasos\n\n```yaml\nlanguage: python\npython:\n  - \"3.7\"\n\nscript:\n  - python script.py\n```\n\n### GitHub Actions sintaxis de pasos y acciones\n\n```yaml\njobs:\n  run_python:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/setup-python@v5\n        with:\n          python-version: '3.7'\n          architecture: 'x64'\n      - run: python script.py\n```\n\n## Almacenar dependencias en caché\n\nTravis CI y GitHub Actions le permite almacenar en caché manualmente las dependencias para su reutilización posterior.\n\nEn estos ejemplos se muestra la sintaxis de caché de cada sistema.\n\n### Sintaxis de Travis CI para el almacenamiento en caché\n\n```yaml\nlanguage: node_js\ncache: npm\n```\n\n### sintaxis de Acciones de GitHub para el almacenamiento en caché\n\n```yaml\n- name: Cache node modules\n  uses: actions/cache@v4\n  with:\n    path: ~/.npm\n    key: v1-npm-deps-${{ hashFiles('**/package-lock.json') }}\n    restore-keys: v1-npm-deps-\n```\n\n## Ejemplos de tareas comunes\n\nEn esta sección se compara cómo GitHub Actions y Travis CI realizan tareas comunes.\n\n### Configurar variables de ambiente\n\nPuede crear variables de entorno personalizadas en una tarea GitHub Actions.\n\n#### Sintaxis de Travis CI para una variable de entorno\n\n```yaml\nenv:\n  - MAVEN_PATH=\"/usr/local/maven\"\n```\n\n#### GitHub Actions flujo de trabajo con una variable de entorno\n\n```yaml\njobs:\n  maven-build:\n    env:\n      MAVEN_PATH: '/usr/local/maven'\n```\n\n### Compilar con Node.js\n\n#### Travis CI para la compilación con Node.js\n\n```yaml\ninstall:\n  - npm install\nscript:\n  - npm run build\n  - npm test\n```\n\n#### GitHub Actions flujo de trabajo para compilar con Node.js\n\n```yaml\nname: Node.js CI\non: [push]\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - name: Use Node.js\n        uses: actions/setup-node@v7\n        with:\n          node-version: '16.x'\n      - run: npm install\n      - run: npm run build\n      - run: npm test\n```\n\n## Pasos siguientes\n\nPara seguir aprendiendo sobre las características principales de GitHub Actions, consulte [Escritura de flujos de trabajo](/es/actions/how-tos/write-workflows)."}