GitHub Actions
Tags: webdev, javascript, beginners
Published: 2024-04-10 15:10:58

GitHub Actions é uma poderosa ferramenta de CI/CD (Integração Contínua e Entrega Contínua) que permite automatizar workflows dentro do seu repositório GitHub. Com ela, é possível executar uma série de comandos após um evento específico no repositório, como um push, um pull request ou até mesmo a criação de uma issue. Isso facilita muito o teste, a construção, a integração e a implantação de código em qualquer projeto.

## O que são Workflows?

Workflows são processos automatizados configurados através de arquivos YAML (.yml ou .yaml) armazenados na pasta **.github/workflows** no seu repositório. Um workflow é composto por um ou mais jobs, que podem executar passos sequenciais ou em paralelo. Cada passo em um job pode executar comandos ou ações, que são conjuntos reutilizáveis de comandos configurados por você ou pela comunidade.

## Exemplo Prático: CI para Projeto Node.js

Vamos criar um workflow simples de integração contínua para um projeto Node.js. Este workflow será responsável por instalar dependências, executar testes e construir o projeto sempre que houver um novo push na branch principal.

1. **Criando o Arquivo de Workflow**
Primeiro, você precisa criar um arquivo YAML dentro da pasta **.github/workflows** do seu repositório. Você pode nomear esse arquivo como preferir, por exemplo, **ci.yml**.
2.**Configurando o Workflow**
Aqui está um exemplo de como configurar o seu workflow:

```yaml
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@v2
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v1
      with:
        node-version: ${{ matrix.node-version }}
    - run: npm ci
    - run: npm run build --if-present
    - run: npm test
```

## Descrição do Workflow

- **name**: Define o nome do workflow, neste caso, "Node.js CI".
- **on**: Especifica os eventos que acionarão o workflow. Neste exemplo, o workflow é acionado por pushes e pull requests para a branch main.
- **jobs**: Define os trabalhos que serão executados. Aqui temos um único job chamado build.
- **runs-on**: Especifica o tipo de máquina virtual que será usada para executar o job. ubuntu-latest significa a versão mais recente do Ubuntu.
- **strategy**: Define uma matriz de estratégias para testar o projeto em múltiplas versões do Node.js.
- **steps**: Lista os passos que serão executados no job. Isso inclui checar o código fonte, configurar o Node.js, instalar dependências, construir o projeto e rodar testes.


GitHub Actions oferece uma integração profunda com o GitHub, permitindo a automação de workflows diretamente dentro do seu repositório. Com um pouco de prática, você pode facilmente expandir o exemplo acima para atender às necessidades específicas do seu projeto, como implantação automática em servidores ou serviços de nuvem, verificação de qualidade de código, e muito mais. Explore a documentação e a comunidade GitHub para descobrir outras ações e criar workflows complexos e poderosos.