{"meta":{"title":"Migrando de Travis CI para GitHub Actions","intro":"GitHub Actions e Travis CI compartilham várias semelhanças, o que ajuda a tornar relativamente simples migrar para GitHub Actions.","product":"GitHub Actions","breadcrumbs":[{"href":"/pt/actions","title":"GitHub Actions"},{"href":"/pt/actions/tutorials","title":"Tutoriais"},{"href":"/pt/actions/tutorials/migrate-to-github-actions","title":"Migrar para o GitHub Actions"},{"href":"/pt/actions/tutorials/migrate-to-github-actions/manual-migrations","title":"Migrações manuais"},{"href":"/pt/actions/tutorials/migrate-to-github-actions/manual-migrations/migrate-from-travis-ci","title":"Migrar do Travis CI"}],"documentType":"article"},"body":"# Migrando de Travis CI para GitHub Actions\n\nGitHub Actions e Travis CI compartilham várias semelhanças, o que ajuda a tornar relativamente simples migrar para GitHub Actions.\n\n## Introdução\n\nEste guia ajuda você a migrar de Travis CI para GitHub Actions. Ele compara os seus conceitos e sintaxe, descreve as semelhanças e demonstra as suas diferentes abordagens em relação às tarefas comuns.\n\n## Antes de começar\n\nAntes de iniciar sua migração para GitHub Actions, seria útil se familiarizar com a forma como ele funciona:\n\n* Para obter um exemplo rápido que demonstra um trabalho do GitHub Actions, consulte [Guia Rápido do GitHub Actions](/pt/actions/get-started/quickstart).\n* Para aprender os conceitos essenciais GitHub Actions , consulte [Armazenar e compartilhar dados com artefatos de fluxo de trabalho](/pt/actions/tutorials/store-and-share-data#passing-data-between-jobs-in-a-workflow).\n\n## Comparar a execução do trabalho\n\nPara fornecer controle sobre quando as tarefas de CI são executadas, um GitHub Actions\\_fluxo de trabalho\\_ usa *trabalhos* executados em paralelo por padrão. Cada trabalho contém *etapas* que são executadas em uma sequência definida por você. Se você precisa executar ações de configuração e limpeza para um trabalho, pode definir etapas em cada trabalho para realizar essas ações.\n\n## Principais semelhanças\n\nGitHub Actions e Travis CI compartilham certas semelhanças, e compreendê-las antecipadamente pode ajudar a suavizar o processo de migração.\n\n### Usar a sintaxe de YAML\n\nTravis CI e GitHub Actions ambos usam YAML para criar trabalhos e fluxos de trabalho, e esses arquivos são armazenados no repositório do código. Para obter mais informações sobre como GitHub Actions usa o YAML, consulte [Criando um exemplo de fluxo de trabalho](/pt/actions/tutorials/create-an-example-workflow).\n\n### Variáveis personalizadas\n\nO Travis CI permite que você defina variáveis e as compartilhe entre fases. Da mesma forma, GitHub Actions permite definir variáveis para um fluxo de trabalho. Para saber mais, confira [Armazenar informações em variáveis](/pt/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables).\n\n### Variáveis padrão\n\nTravis CI e GitHub Actions ambos incluem variáveis de ambiente padrão que você pode usar em seus arquivos YAML. Para GitHub Actions, você pode vê-los listados em [Referência de variáveis](/pt/actions/reference/workflows-and-actions/variables#default-environment-variables).\n\n### Processamento paralelo do trabalho\n\nO Travis CI pode usar `stages` para executar trabalhos em paralelo. Da mesma forma, GitHub Actions é executado `jobs` em paralelo. Para saber mais, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idneeds).\n\n### Distintivos de status\n\nTravis CI e GitHub Actions ambos oferecem suporte a emblemas de status, que permitem mostrar se uma compilação foi bem-sucedida ou falhou.\nPara saber mais, confira [Adicionar um selo de status de fluxo de trabalho](/pt/actions/how-tos/monitor-workflows/add-a-status-badge).\n\n### Usando uma matriz\n\nTravis CI e GitHub Actions ambos dão suporte a uma matriz, permitindo que você execute testes usando combinações de sistemas operacionais e pacotes de software. Para saber mais, confira [Executando variações de tarefas em um workflow](/pt/actions/how-tos/write-workflows/choose-what-workflows-do/run-job-variations).\n\nAbaixo, há um exemplo de comparação da sintaxe para cada sistema.\n\n#### Sintaxe de CI do Travis para uma matriz\n\n```yaml\nmatrix:\n  include:\n    - rvm: '2.5'\n    - rvm: '2.6.3'\n```\n\n#### GitHub Actions sintaxe para uma matriz\n\n```yaml\njobs:\n  build:\n    strategy:\n      matrix:\n        ruby: ['2.5', '2.6.3']\n```\n\n### Apontar para ramificações específicas\n\nTravis CI e GitHub Actions permitem que você configure sua CI para um ramo específico. Para saber mais, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/reference/workflows-and-actions/workflow-syntax#onpushbranchestagsbranches-ignoretags-ignore).\n\nAbaixo, há um exemplo da sintaxe para cada sistema.\n\n#### Sintaxe de CI do Travis para direcionar ramificações específicas\n\n```yaml\nbranches:\n  only:\n    - main\n    - 'mona/octocat'\n```\n\n#### GitHub Actions sintaxe para direcionar ramificações específicas\n\n```yaml\non:\n  push:\n    branches:\n      - main\n      - 'mona/octocat'\n```\n\n### Verificar submódulos\n\nTravis CI e GitHub Actions ambos permitem que você controle se os submódulos estão incluídos no clone do repositório.\n\nAbaixo, há um exemplo da sintaxe para cada sistema.\n\n#### Sintaxe do Travis CI para verificação de submódulos\n\n```yaml\ngit:\n  submodules: false\n```\n\n#### GitHub Actions sintaxe para verificar submódulos\n\n```yaml\n- uses: actions/checkout@v6\n  with:\n    submodules: false\n```\n\n### Usando variáveis de ambiente em uma matriz\n\nTravis CI e GitHub Actions pode adicionar variáveis personalizadas a uma matriz de teste, o que permite que você se refira à variável em uma etapa posterior.\n\nEm GitHub Actions, você pode usar a `include` chave para adicionar variáveis de ambiente personalizadas a uma matriz. Neste exemplo, as entradas de matriz para `node-version` cada uma são configuradas para usar valores diferentes para as variáveis e `site` de `datacenter` ambiente. Em `Echo site details` seguida, a etapa usa `env: ${{ matrix.env }}` para se referir às variáveis 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## Principais recursos em GitHub Actions\n\nAo migrar do Travis CI, considere os seguintes principais recursos em GitHub Actions:\n\n### Armazenar segredos\n\nGitHub Actions permite armazenar segredos e referenciá-los em seus trabalhos.\nGitHub Actions as organizações podem limitar quais repositórios podem acessar segredos da organização. As regras de proteção de implantação podem exigir a aprovação manual de um fluxo de trabalho para acessar segredos de um ambiente. Para saber mais, confira [Segredos](/pt/actions/concepts/security/secrets).\n\n### Compartilhar arquivos entre trabalhos e fluxos de trabalho\n\nGitHub Actions inclui suporte integrado para armazenamento de artefatos, permitindo que você compartilhe arquivos entre trabalhos em um fluxo de trabalho. Você também pode salvar os arquivos resultantes e compartilhá-los com outros fluxos de trabalho. Para saber mais, confira [Noções básicas sobre GitHub Actions](/pt/actions/get-started/understand-github-actions).\n\n### Hospedar seus próprios executores\n\nSe seus trabalhos exigirem hardware ou software específico, GitHub Actions permitirá que você hospede seus próprios executores e envie seus trabalhos para eles para processamento.               O GitHub Actions também permite que você use políticas para controlar como esses executores podem ser acessados, concedendo acesso em nível de organização ou repositório. Para saber mais, confira [Como gerenciar executores auto-hospedados](/pt/actions/how-tos/manage-runners/self-hosted-runners).\n\n### Trabalhos simultâneos e tempo de execução\n\nOs trabalhos simultâneos e os tempos GitHub Actions de execução do fluxo de trabalho podem variar dependendo do seu GitHub plano. Para saber mais, confira [Cobrança e uso](/pt/actions/concepts/billing-and-usage).\n\n### Usando idiomas diferentes em GitHub Actions\n\nAo trabalhar com diferentes linguagens no GitHub Actions, você pode criar uma etapa no trabalho para configurar as dependências de linguagem. Para obter mais informações sobre como trabalhar com uma linguagem em particular, confira [Criar e testar seu código](/pt/actions/tutorials/build-and-test-code).\n\n## Execução de scripts\n\nGitHub Actions pode usar `run` etapas para executar scripts ou comandos de shell. Para usar um shell específico, você pode especificar o tipo `shell` ao fornecer o caminho para o script. Para saber mais, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstepsrun).\n\nPor exemplo:\n\n```yaml\nsteps:\n  - name: Run build script\n    run: ./.github/scripts/build.sh\n    shell: bash\n```\n\n## Tratamento de erros em GitHub Actions\n\nAo migrar para GitHub Actions, há diferentes abordagens para tratamento de erros que talvez você precise estar ciente.\n\n### Manipulação de erros de script\n\nGitHub Actions interromperá um trabalho imediatamente se uma das etapas retornar um código de erro. Para saber mais, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/reference/workflows-and-actions/workflow-syntax#exit-codes-and-error-action-preference).\n\n### Manipulação de erro de trabalho\n\nGitHub Actions\n`if` usa condicionais para executar trabalhos ou etapas em determinadas situações. Por exemplo, você poderá executar uma etapa quando outra etapa resultar em uma `failure()`. Para saber mais, confira [Sintaxe de fluxo de trabalho para o GitHub Actions](/pt/actions/reference/workflows-and-actions/workflow-syntax#example-using-status-check-functions). Use também [`continue-on-error`](/pt/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontinue-on-error) para impedir que uma execução de fluxo de trabalho seja interrompida em caso de falha de um trabalho.\n\n## Migrar a sintaxe para condicionais e expressões\n\nPara executar trabalhos com base em expressões condicionais, Travis CI e GitHub Actions compartilham uma sintaxe de condição semelhante `if`.               O GitHub Actions permite que você use o condicional `if` para impedir que uma etapa ou trabalho sejam executados, a não ser que uma condição seja atendida. Para saber mais, confira [Avaliar expressões em fluxos de trabalho e ações](/pt/actions/reference/workflows-and-actions/expressions).\n\nEste exemplo demonstra como um condicional `if` pode controlar o fato de uma etapa ser executada:\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 fases para etapas\n\nOnde o Travis CI usa *fases* para executar *etapas*, GitHub Actions tem *etapas* que executam *ações*. Você pode encontrar ações predefinidas no [GitHub Marketplace](https://github.com/marketplace?type=actions), ou você pode criar suas próprias ações. Para saber mais, confira [Reutilização de automações](/pt/actions/how-tos/reuse-automations).\n\nAbaixo, há um exemplo da sintaxe para cada sistema.\n\n### Sintaxe do Travis CI para fases e etapas\n\n```yaml\nlanguage: python\npython:\n  - \"3.7\"\n\nscript:\n  - python script.py\n```\n\n### GitHub Actions sintaxe para etapas e ações\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## Memorizar dependências\n\nTravis CI e GitHub Actions permitem que você armazene dependências manualmente em cache para reutilização posterior.\n\nEsses exemplos demonstram a sintaxe de cache para cada sistema.\n\n### Sintaxe do Travis CI para cacheamento\n\n```yaml\nlanguage: node_js\ncache: npm\n```\n\n### A sintaxe do GitHub Actions para cache\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## Exemplos de tarefas comuns\n\nEsta seção compara como GitHub Actions e Travis CI executam tarefas comuns.\n\n### Configurar variáveis de ambiente\n\nVocê pode criar variáveis de ambiente personalizadas em um job GitHub Actions.\n\n#### Sintaxe de CI do Travis para uma variável de ambiente\n\n```yaml\nenv:\n  - MAVEN_PATH=\"/usr/local/maven\"\n```\n\n#### GitHub Actions fluxo de trabalho com uma variável de ambiente\n\n```yaml\njobs:\n  maven-build:\n    env:\n      MAVEN_PATH: '/usr/local/maven'\n```\n\n### Criar com Node.js\n\n#### Travis CI para construir com Node.js\n\n```yaml\ninstall:\n  - npm install\nscript:\n  - npm run build\n  - npm test\n```\n\n#### GitHub Actions fluxo de trabalho para compilação com 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## Próximas etapas\n\nPara continuar aprendendo sobre os principais recursos de GitHub Actions, consulte [Escrevendo fluxos de trabalho](/pt/actions/how-tos/write-workflows)."}