Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Erro no LINT.

Observem minha pipeline abaixo:

name: Integração Contínua

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

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: Banco de dados
    run: docker compose up -d postgres

  - name: lint
    uses: golangci/golangci-lint-action@v8
    with:
      version: v2.1

  - name: Test
    run: go test main_test.go

Durante o processo do github actions, o LINT apresenta a seguinte mensagem:

Run go test main_test.go
go test main_test.go
shell: /usr/bin/bash -e {0}

[GIN] 2025/11/12 - 01:37:20 | 200 | 55.303µs | | GET "/gui"
2025/11/12 01:37:20 /home/runner/work/ci-pipeline-lab/ci-pipeline-lab/database/db.go:23
[error] failed to initialize database, got error cannot parse host= user= *** dbname= port= sslmode=disable: invalid port (strconv.ParseUint: parsing "sslmode=disable": invalid syntax)
2025/11/12 01:37:20 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
goroutine 20 [running]:
testing.tRunner.func1.2({0xba0620, 0xc000480210})
/opt/hostedtoolcache/go/1.22.12/x64/src/testing/testing.go:1631 +0x24a
testing.tRunner.func1()
/opt/hostedtoolcache/go/1.22.12/x64/src/testing/testing.go:1634 +0x377
panic({0xba0620?, 0xc000480210?})
/opt/hostedtoolcache/go/1.22.12/x64/src/runtime/panic.go:770 +0x132
log.Panic({0xc0005a5e08?, 0xc000510088?, 0x0?})
/opt/hostedtoolcache/go/1.22.12/x64/src/log/log.go:432 +0x5a
github.com/guilhermeonrails/api-go-gin/database.ConectaComBancoDeDados()
/home/runner/work/ci-pipeline-lab/ci-pipeline-lab/database/db.go:25 +0x30c
command-line-arguments.TestListaTodosOsAlunosHanlder(0xc000528680)
/home/runner/work/ci-pipeline-lab/ci-pipeline-lab/main_test.go:51 +0x36
testing.tRunner(0xc000528680, 0xcfe1c8)
/opt/hostedtoolcache/go/1.22.12/x64/src/testing/testing.go:1689 +0xfb
created by testing.(*T).Run in goroutine 1
/opt/hostedtoolcache/go/1.22.12/x64/src/testing/testing.go:1742 +0x390
FAIL command-line-arguments 0.011s
FAIL
Error: Process completed with exit code 1.

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta
solução!

Ola! Boa tarde

O erro não está no lint, mas sim na execução dos testes Go. A mensagem indica que o teste falhou ao tentar se conectar ao banco de dados, porque a string de conexão está incorreta.

A parte importante do log é esta:

cannot parse host= user= *** dbname= port= sslmode=disable: invalid port (strconv.ParseUint: parsing "sslmode=disable": invalid syntax)

Isso mostra que a variável de ambiente usada para a conexão com o banco não contém os valores corretos — o Go está tentando interpretar "sslmode=disable" como se fosse o valor da porta, o que é inválido.

Causa provável?

Durante a execução no GitHub Actions, a aplicação está lendo variáveis de ambiente (como DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME) que não estão definidas no ambiente da pipeline. Assim, a string de conexão fica incompleta, algo como:

host= user= password= dbname= port= sslmode=disable
  • Como corrigir?

Você precisa definir as variáveis de ambiente na etapa do banco ou antes de rodar os testes.
Um exemplo funcional seria:

name: Integração Contínua

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

jobs:
  ci:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:15
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: alunos
        ports:
          - 5432:5432
        options: >-
          --health-cmd "pg_isready -U postgres"
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v4

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

      - name: Set environment variables
        run: |
          echo "DB_HOST=localhost" >> $GITHUB_ENV
          echo "DB_PORT=5432" >> $GITHUB_ENV
          echo "DB_USER=postgres" >> $GITHUB_ENV
          echo "DB_PASSWORD=postgres" >> $GITHUB_ENV
          echo "DB_NAME=alunos" >> $GITHUB_ENV

      - name: Lint
        uses: golangci/golangci-lint-action@v8
        with:
          version: v2.1

      - name: Run tests
        run: go test ./...
  • O erro ocorre porque o banco de dados não foi configurado corretamente no ambiente do GitHub Actions.
  • É necessário definir variáveis de ambiente antes de rodar os testes.
  • O lint apenas passa normalmente, mas a falha aparece no go test.