Primeiros Passos com GitHub Actions: Automatizando seu Workflow
GitHub Actions é uma plataforma de automação de workflow e integração contínua (CI/CD) diretamente integrada ao GitHub. Ela permite automatizar tarefas como testes, compilação, publicação e muito mais, tudo no seu repositório. Este artigo é um guia prático para começar a usar GitHub Actions, ideal para iniciantes que querem otimizar seu fluxo de desenvolvimento.
O que são GitHub Actions?
GitHub Actions são eventos disparados por eventos em seu repositório, como um push de código, a criação de um pull request ou um agendamento regular. Esses eventos disparam workflows, que são arquivos YAML que definem uma série de jobs que serão executados.
Principais conceitos:
- Workflow: Um arquivo YAML (geralmente em
.github/workflows/) que define um processo automatizado. - Job: Uma unidade de trabalho dentro de um workflow. Pode conter múltiplos passos.
- Step: Uma única tarefa que é executada dentro de um job. Pode ser um script shell ou uma ação pré-definida.
- Action: Um componente reutilizável que executa uma tarefa específica. Existem actions oficiais do GitHub e actions criadas pela comunidade.
- Runner: O servidor (virtual ou físico) que executa os jobs. GitHub oferece runners hospedados ou você pode usar seus próprios (self-hosted runners).
Criando seu Primeiro Workflow
Vamos criar um workflow simples que imprime “Olá, Mundo!” quando houver um push no branch main.
- Crie um diretório
.github/workflowsno seu repositório. Geralmente, você criará esse diretório na raiz do seu repositório. - Crie um arquivo chamado
main.yml(ou qualquer nome que desejar com a extensão.yml) dentro do diretório.github/workflows. A extensão.ymlé importante para que o GitHub reconheça o arquivo como um workflow. - Cole o seguinte código YAML no arquivo:
name: Hello World
on:
push:
branches: [ main ]
jobs:
hello:
runs-on: ubuntu-latest
steps:
- name: Imprime Olá Mundo!
run: echo "Olá, Mundo!"
Explicando o código:
name: Hello World: Define o nome do workflow. Este nome aparecerá na aba “Actions” do seu repositório.on:: Define quando o workflow será disparado. Neste caso, em um push para o branchmain. Você pode configurar para disparar em outros eventos, como pull requests.jobs:: Define os jobs que serão executados. Temos um job chamadohello. Um workflow pode ter múltiplos jobs que rodam em paralelo ou em sequência.runs-on: ubuntu-latest: Especifica que o job será executado em uma máquina Ubuntu fornecida pelo GitHub. Existem outras opções comowindows-latestemacos-latest.steps:: Define os passos que serão executados dentro do job. Temos um passo que executa o comandoecho "Olá, Mundo!". Cada passo representa uma ação ou um comando a ser executado.
Testando seu Workflow
- Faça um commit e push das alterações para o branch
maindo seu repositório. Este passo dispara o workflow que você definiu. - Acesse a aba “Actions” no seu repositório do GitHub. Você encontrará a aba “Actions” na barra de navegação do seu repositório.
- Você verá o workflow “Hello World” sendo executado. Clique nele para ver os detalhes da execução. O nome do workflow será o que você definiu em
name:no arquivo YAML. - Dentro do workflow, você verá o job “hello” e o passo “Imprime Olá Mundo!”. Clique no passo para ver a saída do comando, que deve ser “Olá, Mundo!”. Aqui você pode ver os logs da execução do seu workflow.
Próximos Passos
Este é apenas o começo! Com GitHub Actions, você pode automatizar praticamente qualquer tarefa. Explore as seguintes opções:
- Actions da comunidade: Use actions pré-definidas para tarefas comuns como deploy, linting e testes. Explore o Marketplace de Actions. Por exemplo, você pode usar uma action para fazer deploy do seu código para um servidor.
- Variáveis de ambiente e secrets: Acesse informações sensíveis com segurança usando secrets. Secrets são usados para armazenar chaves de API, senhas e outros dados confidenciais.
- Testes automatizados: Configure testes automatizados para garantir a qualidade do seu código. Por exemplo, você pode usar actions para rodar testes unitários e de integração automaticamente.
- Deploy automatizado: Automatize o processo de deploy para diversos ambientes. Isso garante que seu código seja entregue de forma rápida e eficiente.
- Matrix Builds: Execute jobs em paralelo com diferentes configurações (por exemplo, diferentes versões de Node.js). Isso é útil para testar seu código em diferentes ambientes simultaneamente.
Exemplo: Workflow para Testes com Node.js
Aqui está um exemplo de workflow que configura o Node.js e executa testes:
name: Node.js CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x, 18.x]
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
- run: npm install
- run: npm run test
Neste exemplo:
matrix:define que os testes serão executados para diferentes versões de Node.js.actions/checkout@v3faz o checkout do código do repositório.actions/setup-node@v3configura o Node.js com a versão especificada.npm installinstala as dependências do projeto.npm run testexecuta os testes.
Recursos Adicionais
- Documentação oficial do GitHub Actions
- Repositório GitHub Actions
- GitHub Learning Lab – Introdução ao GitHub Actions
Com GitHub Actions, você pode otimizar seu fluxo de trabalho e focar no que realmente importa: o desenvolvimento do seu projeto!
“`