Entender fluxos de trabalho

Concluído

Fluxos de trabalho são processos automatizados que você define para criar, testar, empacotar, liberar ou implantar seu projeto. Eles consistem em um ou mais trabalhos executados em resposta a eventos específicos em seu repositório.

Estrutura de fluxo de trabalho

Cada fluxo de trabalho inclui estes componentes principais:

Gatilhos (Eventos)

Definir quando seu fluxo de trabalho deve ser executado – em push, solicitação pull, agendamento ou acionamento manual.

Jobs

Um conjunto de etapas que são executadas no mesmo executor. Os trabalhos são executados em paralelo por padrão, mas podem ser configurados para serem executados sequencialmente.

Steps

Tarefas individuais em um trabalho que podem executar comandos, tarefas de instalação ou usar ações.

Executores

O ambiente de computação em que seus trabalhos são executados – hospedados pelo GitHub ou auto-hospedados.

Localização e nomenclatura do fluxo de trabalho

Os fluxos de trabalho são armazenados como arquivos YAML no .github/workflows diretório do repositório. O nome do arquivo torna-se o identificador de fluxo de trabalho na interface do usuário do GitHub.

Exemplo de fluxo de trabalho moderno

Aqui está um exemplo abrangente usando as práticas recomendadas atuais:

# .github/workflows/ci.yml
name: CI Pipeline

on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]
  schedule:
    - cron: "0 2 * * 0" # Weekly dependency check

env:
  NODE_VERSION: "20"

jobs:
  test:
    name: Test and Lint
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Run linting
        run: npm run lint

      - name: Run tests with coverage
        run: npm run test:coverage

      - name: Upload coverage reports
        uses: codecov/codecov-action@v3
        with:
          token: ${{ secrets.CODECOV_TOKEN }}

  build:
    name: Build Application
    runs-on: ubuntu-latest
    needs: test

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ env.NODE_VERSION }}
          cache: "npm"

      - name: Install dependencies
        run: npm ci

      - name: Build application
        run: npm run build

      - name: Upload build artifacts
        uses: actions/upload-artifact@v4
        with:
          name: build-files
          path: dist/

Principais melhorias nos fluxos de trabalho modernos

Este exemplo demonstra as práticas recomendadas atuais:

  • Versões de ação mais recentes: usando @v4 versões de ações populares
  • Cache de dependência: acelera a execução do fluxo de trabalho
  • Variáveis de ambiente: gerenciamento de configuração centralizado
  • Dependências de tarefa: build a tarefa é executada somente após o test êxito
  • Manipulação de artefatos: Armazenamento e compartilhamento adequados dos resultados de compilação
  • Segurança: usando segredos para dados confidenciais, como tokens

Recursos adicionais

Explore esses recursos para aprimorar seu conhecimento de fluxo de trabalho: