ajustes novos

This commit is contained in:
Marcus 2026-01-31 15:40:54 -03:00
parent 811ca388b9
commit f5d58d0c91
2 changed files with 27 additions and 27 deletions

View file

@ -12,17 +12,12 @@ env:
jobs: jobs:
build-and-push: build-and-push:
# AJUSTE: Use as labels EXATAS do Runner ID 50 para sair do estado "Waiting"
runs-on: [self-hosted, linux-amd64] runs-on: [self-hosted, linux-amd64]
defaults: defaults:
run: run:
shell: sh shell: sh
steps: steps:
- name: Install Runtime Dependencies
run: |
apk add --no-cache git docker-cli nodejs
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
@ -33,25 +28,30 @@ jobs:
- name: Build & Push Backend - name: Build & Push Backend
run: | run: |
# Usamos --quiet no push para não inundar o Forgejo com logs de progresso (evita Erro 500)
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
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }} && \
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:latest docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:${{ github.sha }}
docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/gohorsejobs:latest
- name: Build & Push Backoffice - name: Build & Push Backoffice
run: | run: |
# O build do Backoffice (NestJS) é o que mais trava.
# Reduzimos o log e focamos no push silencioso.
docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:${{ github.sha }} \ docker build -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:${{ github.sha }} \
-t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:latest ./backoffice && \ -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:latest ./backoffice
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:${{ github.sha }} && \
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:latest docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:${{ github.sha }}
docker push --quiet ${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/backoffice:latest
deploy: deploy:
needs: build-and-push needs: build-and-push
# AJUSTE: Mesmas labels aqui
runs-on: [self-hosted, linux-amd64] runs-on: [self-hosted, linux-amd64]
steps: steps:
- name: Install Deploy Tools - name: Install Deploy Tools
run: apk add --no-cache curl kubectl git nodejs # Removido nodejs daqui (não parece necessário para rodar kubectl)
run: apk add --no-cache curl kubectl
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
@ -61,8 +61,12 @@ jobs:
kubectl create namespace gohorsejobsdev --dry-run=client -o yaml | kubectl apply -f - kubectl create namespace gohorsejobsdev --dry-run=client -o yaml | kubectl apply -f -
kubectl apply -f k8s/dev/ -n gohorsejobsdev kubectl apply -f k8s/dev/ -n gohorsejobsdev
# Rollout progressivo: garante que o K8s não derrube tudo de uma vez
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 }}
# Verifica se o deploy deu certo (se travar aqui, o problema é no K3s, não no Forgejo)
kubectl -n gohorsejobsdev rollout status deployment/gohorse-backend-dev --timeout=90s

View file

@ -1,38 +1,34 @@
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 para não travar o APK e instalação de deps
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
# PASSO 1: Copia apenas os arquivos de dependência
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
# PASSO 2: Baixa as dependências (Cacheado)
RUN go mod download && go mod verify
# PASSO 3: Copia o código fonte
COPY . . COPY . .
# PASSO 4: Build Otimizado # Ajuste: -p 2 para não estressar a CPU do servidor e causar Erro 500 no Forgejo
# Removi o -gcflags para produção (melhora performance) e usei -p 4 (se o runner tiver 4 cores) RUN --mount=type=cache,target=/root/.cache/go-build \
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-p 4 \ -p 2 \
-ldflags="-s -w" \ -ldflags="-s -w" \
-trimpath \ -trimpath \
-o /app/main ./cmd/api -o /app/main ./cmd/api
# --- Estágio Final ---
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
# Certifique-se que a pasta migrations existe no seu projeto!
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 \