1
resposta

[Dúvida] Erro no teste

No github actions, ele dá erro ao se conectar com o banco de dados na realização dos testes

=== RUN TestListaTodosOsAlunosHanlder
2025/12/10 15:28:26 /home/runner/work/pipelines-e-testes-automatizados-com-github-actions/pipelines-e-testes-automatizados-com-github-actions/database/db.go:23
[error] failed to initialize database, got error failed to connect to host=*** user=*** database=***: dial error (dial tcp [::1]:***: connect: connection refused)
2025/12/10 15:28:26 Erro ao conectar com banco de dados
--- FAIL: TestListaTodosOsAlunosHanlder (0.00s)
panic: Erro ao conectar com banco de dados [recovered]
panic: Erro ao conectar com banco de dados

Meu arquivo de workflow:

This workflow will build a golang project

For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go

name: Integração Contínua

on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]

jobs:

ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Go
  uses: actions/setup-go@v4
  with:
    go-version: '1.22'

- name: Inicia banco
  run: docker compose up -d postgres

- name: Lint
  uses: golangci/golangci-lint-action@v6
  with:
    version: v1.59
    args: controllers/ database/ models/ routes/

- name: Test
  run: DB_HOST=${{ secrets.DB_HOST }} DB_PASSWORD=${{ secrets.DB_PASSWORD }} DB_USER=${{ secrets.DB_USER }} DB_NAME=${{ secrets.DB_NAME }} DB_PORT=${{ secrets.DB_PORT }} go test -v main_test.go

O docker-compose.yml:
services:
postgres:
image: "postgres"
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=root
- POSTGRES_DB=root
ports:
- 5432:5432
volumes:
- ./postgres-data:/var/lib/postgresql/data

app:
image: golang:1.22
command:
- go
- run
- main.go
volumes:
- ./:/app
working_dir: /app
ports:
- 8080:8080
depends_on:
- postgres
environment:
- DB_HOST=postgres
- DB_USER=root
- DB_PASSWORD=root
- DB_NAME=root
- DB_PORT=5432

1 resposta

Oi Marcelo! Tudo bem?

Pelo erro que você compartilhou, parece que a conexão com o banco de dados está sendo recusada. Vamos tentar algumas abordagens para resolver isso.

  1. Verifique as Credenciais e Secrets: Certifique-se de que todas as credenciais do banco de dados estão corretamente configuradas nos GitHub Secrets. Isso inclui DB_HOST, DB_USER, DB_PASSWORD, DB_NAME e DB_PORT. Pelo seu docker-compose.yml, essas variáveis devem corresponder aos valores definidos no serviço postgres.

  2. Configuração do Host: No seu docker-compose.yml, o serviço do banco de dados está configurado para rodar no host postgres. Certifique-se de que a variável DB_HOST nos GitHub Secrets está definida como postgres, e não localhost.

  3. Aguarde o Banco de Dados Inicializar: Às vezes, o banco de dados pode não estar pronto para conexões imediatamente após ser iniciado. Uma solução comum é adicionar um script de espera antes de executar os testes. Você pode usar uma ação como dockerize para esperar até que o banco de dados esteja pronto.

    Exemplo de como usar dockerize:

    - name: Wait for Postgres
      run: dockerize -wait tcp://postgres:5432 -timeout 60s
    
  4. Verifique as Portas: Certifique-se de que a porta 5432 está correta e que não há conflitos. No seu docker-compose.yml, a porta está mapeada corretamente, mas é sempre bom conferir se não há outro serviço usando a mesma porta.

  5. Logs do Banco de Dados: Verifique os logs do serviço do banco de dados para ver se há mensagens de erro adicionais que possam ajudar a diagnosticar o problema.

Espero que essas dicas ajudem a resolver o problema de conexão com o banco de dados. Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.