Pular para o conteúdo principal

Eventos de Trigger no GitHub Actions

Introdução

Os eventos de trigger (ou gatilhos) são fundamentais para determinar quando e como seus workflows do GitHub Actions devem ser executados. Eles definem as condições específicas que iniciam a execução automatizada dos seus pipelines, oferecendo total controle sobre quando suas ações devem acontecer.

Definição

Os eventos de trigger são configurações declarativas no arquivo YAML do workflow que especificam em quais circunstâncias o GitHub deve executar suas automações. Cada evento possui suas próprias características e pode ser combinado com filtros para criar gatilhos mais específicos e eficientes.

Explicação Técnica

1. Evento push - Executar em Commits

O evento push é acionado sempre que há commits enviados para o repositório.

on:
push:
branches: [ main, develop ]
paths:
- 'src/**'
- '!src/tests/**'

2. Evento pull_request - Executar em PRs

Acionado quando pull requests são abertos, atualizados ou fechados.

on:
pull_request:
types: [opened, synchronize, closed]
branches: [ main ]
paths-ignore:
- 'docs/**'
- '*.md'

3. Evento schedule - Execução Agendada

Permite execução baseada em cronograma usando sintaxe cron.

on:
schedule:
- cron: '0 2 * * 1-5' # Segunda a sexta, 2h da manhã
- cron: '0 0 * * 0' # Domingo à meia-noite

4. Evento workflow_dispatch - Execução Manual

Habilita execução manual com parâmetros opcionais.

on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy'
required: true
default: 'staging'
type: choice
options:
- staging
- production
version:
description: 'Version number'
required: false
type: string

5. Evento issues - Automação Baseada em Issues

Responde a ações realizadas em issues do repositório.

on:
issues:
types: [opened, labeled, closed]

Filtros de Branches e Paths

Os filtros permitem especificar exatamente quando o workflow deve executar:

on:
push:
branches:
- main
- 'release/**'
- '!feature/experimental'
paths:
- 'src/**'
- 'package*.json'
paths-ignore:
- 'docs/**'
- '**.md'

Exemplo Prático

Aqui está um workflow completo demonstrando múltiplos eventos:

name: Multi-Trigger Pipeline

on:
push:
branches: [ main ]
paths: [ 'src/**', 'package*.json' ]

pull_request:
branches: [ main ]
types: [opened, synchronize]

schedule:
- cron: '0 9 * * 1' # Segunda-feira às 9h

workflow_dispatch:
inputs:
run_tests:
description: 'Execute tests'
type: boolean
default: true

jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '18'

- name: Install dependencies
run: npm ci

- name: Run tests
if: github.event_name == 'pull_request' || inputs.run_tests
run: npm test

- name: Build project
run: npm run build

Conclusão

Os eventos de trigger fornecem flexibilidade total para automatizar seus workflows. Combinando diferentes eventos com filtros apropriados, você pode criar pipelines eficientes que executam apenas quando necessário, economizando recursos e tempo. A chave está em escolher os eventos corretos e configurar os filtros adequados para cada cenário específico do seu projeto.