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 branchmain
.
- Crie um diretório
.github/workflows
no 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-latest
emacos-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
main
do 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@v3
faz o checkout do código do repositório.actions/setup-node@v3
configura o Node.js com a versão especificada.npm install
instala as dependências do projeto.npm run test
executa os testes.
Sem comentários