Observação: GitHub Actions estava disponível para GitHub Enterprise Server 2.22 como um beta limitado. O beta terminou. GitHub Actions está agora geralmente disponível em GitHub Enterprise Server 3.0 ou posterior. Para obter mais informações, consulte as observações sobre a versão GitHub Enterprise Server 3.0.
- Para obter mais informações sobre a atualização para GitHub Enterprise Server 3.0 ou posterior, consulte "Atualizar GitHub Enterprise Server".
- Para obter mais informações sobre a configuração de GitHub Actions após atualizar, consulte a documentação para GitHub Enterprise Server 3.0.
Observação: Executores hospedados em GitHub não são atualmente compatíveis com GitHub Enterprise Server. Você pode ver mais informações sobre suporte futuro planejado no Itinerário público do GitHub.
Introdução
Este guia ajuda a você a fazer a migração do 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.
Antes de começar
Antes de iniciar sua migração para GitHub Actions, seria importante familiarizar-se com a forma como funciona:
- Para um exemplo rápido que demonstra um trabalho de GitHub Actions, consulte "Início rápido para GitHub Actions".
- Para aprender os conceitos básicos de GitHub Actions, consulte "Introdução ao GitHub Actions".
Comparar a execução do trabalho
Para dar controle a você sobre quando as tarefas de CI são executadas, um fluxo de trabalho de GitHub Actions usa trabalhos que são executados em paralelo por padrão. Cada trabalho contém etapas que são executadas em uma sequência que você define. Se você precisa executar a configuração e a limpeza de ações para um trabalho, você pode definir etapas em cada trabalho para executá-las.
Principais semelhanças
GitHub Actions e o Travis CI compartilham certas semelhanças e entendê-las antecipadamente pode ajudar a agilizar o processo de migração.
Usar a sintaxe de YAML
O Travis CI e o GitHub Actions usam o 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 o GitHub Actions usa o YAML, consulte "Criar um arquivo de fluxo de trabalho".
Variáveis de ambiente personalizadas
O Travis CI permite que você defina variáveis de ambiente e compartilhe-as entre stages. Da mesma forma, GitHub Actions permite definir variáveis de ambiente para uma etapa, um trabalho ou um fluxo de trabalho. Para obter mais informações, consulte "Variáveis de ambiente".
Variáveis padrão de ambiente
O Travis CI e GitHub Actions incluem variáveis de ambiente padrão que você pode usar nos seus arquivos de YAML. Para GitHub Actions, você pode ver estes listados em "Variáveis de ambiente padrão".
Processamento paralelo do trabalho
O Travis CI pode usar stages
para executar trabalhos em paralelo. Da mesma forma, GitHub Actions executa trabalhos
em paralelo. Para obter mais informações, consulte "Criar trabalhos dependentes".
Selos de status
O Travis CI e GitHub Actions são compatíveis com selos de status, o que permite que você indique se uma criação está sendo aprovada ou falhando. Para obter mais informações, consulte "Adicionar um selo de status de fluxo de trabalho ao seu repositório".
Usar uma matriz de criação
O Travis CI e GitHub Actions são compatíveis com uma matriz de criação, o que permite que você realize testes usando combinações de sistemas operacionais e pacotes de software. Para obter mais informações, consulte "Usar uma matriz de criação".
Abaixo, há um exemplo de comparação da sintaxe para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Apontar para branches específicos
O Travis CI e GitHub Actions permitem que você aponte a sua CI para um branch específico. Para obter mais informações, consulte "Sintaxe do fluxo de trabalho para o GitHub Actions".
Abaixo, há um exemplo da sintaxe para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Verificar submódulos
O Travis CI e GitHub Actions permitem que você controle se os submódulos estão incluídos no clone do repositório.
Abaixo, há um exemplo da sintaxe para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Usando variáveis de ambiente em uma matriz
O Travis CI e GitHub Actions podem adicionar variáveis de ambiente personalizadas a uma matriz de teste, que permite que você faça referência à variável em uma etapa posterior.
Em GitHub Actions, você pode usar a chave incluir
para adicionar variáveis de ambiente personalizadas a uma matriz. Neste exemplo, as entradas da matriz de node-version
são configuradas para usar valores diferentes para as variáveis de ambiente do site
e dos centros de dados
. Em seguida, a etapa de Echo site details
usa env: ${{ matrix.env }}
para referir-se às variáveis 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
Principais recursos em GitHub Actions
Ao fazer a migração do Travis CI, considere os recursos principais a seguir em GitHub Actions:
Armazenar segredos
GitHub Actions permite armazenar segredos e referenciá-los em seus trabalhos. Organizações de GitHub Actions podem limitar quais repositórios podem acessar segredos da organização. Para obter mais informações, consulte "Segredos criptografados".
Compartilhar arquivos entre trabalhos e fluxos de trabalho
GitHub Actions inclui suporte integrado para o armazenamento de artefatos, permitindo que você compartilhe arquivos entre os trabalhos de um fluxo de trabalho. Você também pode salvar os arquivos resultantes e compartilhá-los com outros fluxos de trabalho. Para obter mais informações, consulte "Compartilhar dados entre trabalhos".
Hospedar seus próprios executores
Se os seus trabalhos exigirem hardware ou software específico, GitHub Actions permitirá que você hospede seus próprios executores e envie seus trabalhos para eles processarem. GitHub Actions também permite usar políticas para controlar como esses executores são acessados, concedendo acesso ao nível da organização ou do repositório. Para obter mais informações, consulte "Hospedar seus próprios executores".
Trabalhos simultâneos e tempo de execução
Os trabalhos simultâneos e os tempos de execução do fluxo de trabalho em GitHub Actions podem variar dependendo do seu plano de GitHub. Para obter mais informações, consulte "Limites de uso, cobrança e administração".
Usar diferentes linguagens em GitHub Actions
Ao trabalhar com diferentes linguagens em GitHub Actions, você pode criar uma etapa no seu trabalho para configurar as dependências da sua linguagem. Para obter mais informações sobre como trabalhar com uma linguagem em particular, consulte o guia específico:
- Criar e testar Node.js ou Python
- Criar e testar PowerShell
- Criar e estar o Java com o Maven
- Criar e estar o Java com o Gradle
- Criar e estar o Java com o Ant
Executar scripts
GitHub Actions pode usar as etapas de executar
para executar scripts ou comandos de shell. Para usar um shell específico, você pode especificar o tipo de shell
ao fornecer o caminho para o script. Para obter mais informações, consulte "Sintaxe de fluxo de trabalho para o GitHub Actions".
Por exemplo:
steps:
- name: Run build script
run: ./.github/scripts/build.sh
shell: bash
Manuseio de erros em GitHub Actions
Ao migrar para GitHub Actions, existem diferentes abordagens para a manipulação de erros das quais você precisa estar ciente.
Manipulação de erros de script
GitHub Actions interrompe um trabalho imediatamente se uma das etapas retornar um código de erro. Para obter mais informações, consulte "Sintaxe de fluxo de trabalho para o GitHub Actions".
Manipulação de erro de trabalho
GitHub Actions usa condicionais do tipo se
para executar trabalhos ou etapas em certas situações. Por exemplo, você pode executar um passo quando outro passo resulta em uma failure()
. Para obter mais informações, consulte "Sintaxe de fluxo de trabalho para o GitHub Actions". Você também pode usar continue-on-error
para impedir que uma execução de um fluxo de trabalho seja interrompida quando um trabalho falhar.
Migrar a sintaxe para condicionais e expressões
Para executar trabalhos sob expressões condicionais, o Travis CI e GitHub Actions compartilham uma sintaxe condicional do tipo se
similar. GitHub Actions permite que você use a condicional do tipo se
para evitar que um trabalho ou etapa seja executado, a menos que uma condição seja atendida. Para obter mais informações, consulte "Expressões".
Este exemplo demonstra como uma condicional do tipo se
pode controlar se uma etapa é executada:
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 fases para etapas
Quando o Travis CI usa fases para executar etapas, GitHub Actions tem etapas que executam ações. Você pode encontrar ações pré-criadas no GitHub Marketplace, ou você pode criar as suas próprias ações. Para obter mais informações, consulte "Criar ações".
Abaixo, há um exemplo da sintaxe para cada sistema:
Travis CI | GitHub Actions |
---|---|
|
|
Memorizar dependências
O Travis CI e GitHub Actions permitem que você armazene as as dependências em cache manualmente para reutilização posterior. Esse exemplo demonstra a sintaxe do cache para cada sistema.
Travis CI | GitHub Actions |
---|---|
|
|
O armazenamento em cache de GitHub Actions só é aplicável a executores hospedados em GitHub. Para obter mais informações, consulte "Memorizar dependências para acelerar fluxos de trabalho".
Exemplos de tarefas comuns
Esta seção compara como GitHub Actions e o Travis CI realizam tarefas comuns.
Configurar variáveis de ambiente
Você pode criar variáveis de ambiente personalizadas em uma tarefa de GitHub Actions. Por exemplo:
Travis CI | Fluxo de trabalho do GitHub Actions |
---|---|
|
|
Criar com Node.js
Travis CI | Fluxo de trabalho do GitHub Actions |
---|---|
|
|
Próximas etapas
Para continuar aprendendo sobre os principais recursos de GitHub Actions, consulte "Aprender GitHub Actions".