ajustes novos

This commit is contained in:
Marcus 2026-01-31 15:44:44 -03:00
parent fc8034ed4e
commit 99b787056a
2 changed files with 21 additions and 13 deletions

View file

@ -9,12 +9,11 @@ env:
REGISTRY: pipe.gohorsejobs.com REGISTRY: pipe.gohorsejobs.com
IMAGE_NAMESPACE: bohessefm IMAGE_NAMESPACE: bohessefm
DOCKER_HOST: unix:///run/docker.sock DOCKER_HOST: unix:///run/docker.sock
# ATIVA O BUILDKIT: Necessário para usar --mount (cache) no Dockerfile # AJUSTE: BuildKit desativado para compatibilidade com o Docker do seu Runner
DOCKER_BUILDKIT: 1 DOCKER_BUILDKIT: 0
jobs: jobs:
build-and-push: build-and-push:
# Ajustado para usar as labels que aparecem no seu Runner ID 50
runs-on: [self-hosted, linux-amd64] runs-on: [self-hosted, linux-amd64]
defaults: defaults:
run: run:
@ -31,11 +30,11 @@ jobs:
- name: Build & Push Backend - name: Build & Push Backend
run: | run: |
# Build usando BuildKit (suporta o cache do seu Dockerfile) # Build usando o builder padrão (legacy)
docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }} \ docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }} \
-t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:latest ./backend -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:latest ./backend
# Push --quiet evita o flood de logs que derruba o Forgejo # Push --quiet para não sobrecarregar o banco do Forgejo com logs
docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }} docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }}
docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:latest docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:latest
@ -59,13 +58,18 @@ jobs:
- name: Deploy to K3s - name: Deploy to K3s
run: | run: |
# Garante o namespace
kubectl create namespace gohorsejobsdev --dry-run=client -o yaml | kubectl apply -f - kubectl create namespace gohorsejobsdev --dry-run=client -o yaml | kubectl apply -f -
# Aplica os manifestos do diretório
kubectl apply -f k8s/dev/ -n gohorsejobsdev kubectl apply -f k8s/dev/ -n gohorsejobsdev
# Atualiza as imagens nos deployments
kubectl -n gohorsejobsdev set image deployment/gohorse-backend-dev \ kubectl -n gohorsejobsdev set image deployment/gohorse-backend-dev \
backend=${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }} backend=${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }}
kubectl -n gohorsejobsdev set image deployment/gohorse-backoffice-dev \ kubectl -n gohorsejobsdev set image deployment/gohorse-backoffice-dev \
backoffice=${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:${{ github.sha }} backoffice=${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:${{ github.sha }}
# Aguarda o rollout para confirmar o sucesso
kubectl -n gohorsejobsdev rollout status deployment/gohorse-backend-dev --timeout=120s kubectl -n gohorsejobsdev rollout status deployment/gohorse-backend-dev --timeout=120s

View file

@ -1,34 +1,38 @@
FROM mirror.gcr.io/library/golang:1.24-alpine AS builder FROM mirror.gcr.io/library/golang:1.24-alpine AS builder
# Ajuste de Mirror e instalação de dependências
RUN sed -i 's/dl-cdn.alpinelinux.org/uk.alpinelinux.org/g' /etc/apk/repositories && \ RUN sed -i 's/dl-cdn.alpinelinux.org/uk.alpinelinux.org/g' /etc/apk/repositories && \
apk add --no-cache git ca-certificates tzdata apk add --no-cache git ca-certificates tzdata
WORKDIR /build WORKDIR /build
# Copia apenas os arquivos de dependência primeiro para aproveitar o cache de camadas do Docker
COPY go.mod go.sum ./ COPY go.mod go.sum ./
# --mount=type=cache permite que o Go use cache de módulos entre builds sem inflar a imagem
RUN --mount=type=cache,target=/go/pkg/mod \
go mod download && go mod verify
# REMOVIDO --mount: Usando o download padrão compatível com Docker Legacy
RUN go mod download && go mod verify
# Copia o restante do código fonte
COPY . . COPY . .
# Ajuste: -p 2 para não estressar a CPU do servidor e causar Erro 500 no Forgejo # Build Otimizado:
RUN --mount=type=cache,target=/root/.cache/go-build \ # -p 2 para evitar picos de CPU que causam Erro 500 no Forgejo
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ # REMOVIDO --mount para compatibilidade
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-p 2 \ -p 2 \
-ldflags="-s -w" \ -ldflags="-s -w" \
-trimpath \ -trimpath \
-o /app/main ./cmd/api -o /app/main ./cmd/api
# --- Estágio Final (Imagem de Produção) ---
FROM scratch AS runner FROM scratch AS runner
# Copia apenas o necessário do builder
COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=builder /app/main /main COPY --from=builder /app/main /main
COPY --from=builder /build/migrations /migrations COPY --from=builder /build/migrations /migrations
# GOGC=50 é agressivo (bom para economizar RAM), mas aumenta uso de CPU.
# Se o servidor estiver travando por CPU, tente GOGC=100.
ENV PORT=8521 \ ENV PORT=8521 \
TZ=America/Sao_Paulo \ TZ=America/Sao_Paulo \
GODEBUG=netdns=go \ GODEBUG=netdns=go \