1
resposta

NÃO FUNCIONOU

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

O banco de dados não está funcionando. Estou fazendo EXATAMENTE como o professor está fazendo na aula e nada dá crto, isso chega até ser desmotivacional aprender pipeline na ALURA.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Tive que recorrer a uso de IA e elas indicam que o erro foi não ter coloado:

  - name: Preparar volume do Postgres
    run: mkdir -p ./postgres-data

Mesmo colocando isso na pipeline não funciona:

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: [ "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: Preparar volume do Postgres
    run: mkdir -p ./postgres-data

  - name: Inicia Banco de dados
    run: docker compose up -d

  - name: lint
    run: docker run --rm -itv $(CURDIR):/app -w /app golangci/golangci-lint golangci-lint run controllers/ database/ models/ routes/

  - name: Test
    run: go test main_test.go

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

O erro que aparece nos logs é este:

error during container init: error mounting "/home/runner/work/CI/CI/postgres-data" to rootfs at "/var/lib/postgresql/data": 
no such file or directory: unknown

Ou seja, o volume que você está criando (./postgres-data) não está sendo encontrado no GitHub Actions porque a pasta local não é persistida da mesma forma que na sua máquina.

No GitHub Actions, quando você sobe banco com Docker, não precisa mapear volume físico. Basta deixar o Postgres usar o volume interno do container.

No seu docker-compose.yml, provavelmente tem algo assim:

services:
  postgres:
    image: postgres:15
    volumes:
      - ./postgres-data:/var/lib/postgresql/data

Remova essa linha do volumes ou troque para um volume nomeado, por exemplo:

services:
  postgres:
    image: postgres:15
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Assim, o Docker cria um volume interno chamado postgres_data, sem depender da pasta ./postgres-data.

No GitHub Actions, isso funciona melhor e evita esse erro.