Skip to content
Latchkey

O Que É um Service Container no GitHub Actions?

Um service container é um container Docker que o GitHub roda ao lado do seu job, normalmente um banco de dados ou fila que seus testes acessam.

Testes de integração muitas vezes precisam de um Postgres ou Redis real. Os service containers sobem essas dependências como containers durante toda a vida do job, em rede para que seus steps consigam alcançá-los.

O que é

Um container declarado sob a chave services: de um job. O GitHub o inicia antes dos steps rodarem e o torna acessível pela rede do job.

A Postgres service
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:16
        env:
          POSTGRES_PASSWORD: pw
        ports: ['5432:5432']
    steps:
      - run: psql -h localhost -U postgres -c '\\l'

Como funciona

O GitHub sobe cada service container, mapeia as portas que você pede e espera antes de rodar os steps. Seus steps conectam via localhost e a porta mapeada (ou pelo nome do serviço em jobs em container).

Saúde e prontidão

Você pode adicionar opções de health check para o GitHub esperar até o serviço estar de fato pronto, evitando erros de conexão instáveis no início de um job.

Por que importa

Os service containers dão aos testes uma dependência real sem provisionar infraestrutura externa. Eles são reproduzíveis, isolados e destruídos automaticamente quando o job termina.

Conceitos relacionados

Os service containers rodam no mesmo runner que o job e complementam actions como actions/checkout para setups completos de integração.

Principais conclusões

  • Um service container é uma dependência Docker rodada ao lado do job.
  • Declare-o em services: com uma imagem e portas.
  • Use health checks para os steps esperarem até estar pronto.

Guias relacionados