From 7543805b400a8ed7f7e2892e76f5b25fcdabfc01 Mon Sep 17 00:00:00 2001 From: Marcus Date: Sat, 31 Jan 2026 11:00:44 -0300 Subject: [PATCH] ajustes --- k8s/dev/backoffice-deployment-dev.yaml | 145 ++++++++++++++++--------- 1 file changed, 95 insertions(+), 50 deletions(-) diff --git a/k8s/dev/backoffice-deployment-dev.yaml b/k8s/dev/backoffice-deployment-dev.yaml index fc636bd..faea836 100644 --- a/k8s/dev/backoffice-deployment-dev.yaml +++ b/k8s/dev/backoffice-deployment-dev.yaml @@ -1,50 +1,95 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: gohorse-backoffice-dev - namespace: gohorsejobsdev -spec: - replicas: 1 - selector: - matchLabels: - app: gohorse-backoffice-dev - template: - metadata: - labels: - app: gohorse-backoffice-dev - env: development - spec: - imagePullSecrets: - - name: registry-auth - initContainers: - - name: set-mtu - image: busybox - # CORREÇÃO: Usando $(VAR) para o Kubernetes injetar o valor corretamente - command: ['sh', '-c', 'ifconfig eth0 mtu $(MTU_VALUE) || true'] - env: - - name: MTU_VALUE - valueFrom: - secretKeyRef: - name: backend-secrets - key: MTU - securityContext: - privileged: true - containers: - - name: backoffice - image: pipe.gohorsejobs.com/bohessefm/backoffice:latest - imagePullPolicy: Always - ports: - - containerPort: 3001 - envFrom: - - secretRef: - name: backend-secrets - env: - - name: NODE_TLS_REJECT_UNAUTHORIZED - value: "0" - resources: - requests: - memory: "512Mi" # Reduzi um pouco o request para facilitar o agendamento no nó - cpu: "300m" - limits: - memory: "2Gi" - cpu: "800m" \ No newline at end of file +name: Deploy Backend and Backoffice Dev + +on: + workflow_dispatch: + push: + branches: + - dev + +jobs: + build-and-push: + runs-on: docker-ready + env: + REGISTRY: pipe.gohorsejobs.com + DOCKER_API_VERSION: "1.43" + defaults: + run: + shell: sh + steps: + - name: Install Dependencies + run: | + sed -i 's/dl-cdn.alpinelinux.org/mirror.leaseweb.com/g' /etc/apk/repositories + apk add --no-cache git docker-cli nodejs + + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Login to Registry + run: | + echo "${{ secrets.FORGEJO_TOKEN }}" | docker login ${{ env.REGISTRY }} -u bohessefm --password-stdin + + - name: Build and Push Backend + run: | + cd backend + docker build -t ${{ env.REGISTRY }}/bohessefm/gohorsejobs:latest -t ${{ env.REGISTRY }}/bohessefm/gohorsejobs:${{ github.sha }} . + docker push ${{ env.REGISTRY }}/bohessefm/gohorsejobs:latest + docker push ${{ env.REGISTRY }}/bohessefm/gohorsejobs:${{ github.sha }} + + - name: Build and Push Backoffice + run: | + cd backoffice + docker build -t ${{ env.REGISTRY }}/bohessefm/backoffice:latest -t ${{ env.REGISTRY }}/bohessefm/backoffice:${{ github.sha }} . + docker push ${{ env.REGISTRY }}/bohessefm/backoffice:latest + docker push ${{ env.REGISTRY }}/bohessefm/backoffice:${{ github.sha }} + + deploy-to-k3s: + needs: build-and-push + runs-on: docker-ready + defaults: + run: + shell: sh # <--- CRUCIAL: Adicionado para evitar erro de 'bash not found' + steps: + - name: Install Tools + run: | + sed -i 's/dl-cdn.alpinelinux.org/mirror.leaseweb.com/g' /etc/apk/repositories + apk add --no-cache git curl + if [ ! -f /usr/local/bin/kubectl ]; then + KVER=$(curl -L -s https://dl.k8s.io/release/stable.txt) + curl -LO "https://dl.k8s.io/release/${KVER}/bin/linux/amd64/kubectl" + chmod +x kubectl + mv kubectl /usr/local/bin/ + fi + + - name: Checkout code + uses: actions/checkout@v4 + + - name: Deploy to K3s + run: | + mkdir -p $HOME/.kube + echo "${{ secrets.KUBECONFIG }}" > $HOME/.kube/config + chmod 600 $HOME/.kube/config + export KUBECONFIG=$HOME/.kube/config + + # 1. Namespace + kubectl create namespace gohorsejobsdev --dry-run=client -o yaml | kubectl apply -f - + + # 2. Secret de Pull (Nomeado como registry-auth conforme sua preferência) + kubectl -n gohorsejobsdev create secret docker-registry registry-auth \ + --docker-server=${{ env.REGISTRY }} \ + --docker-username=bohessefm \ + --docker-password='${{ secrets.FORGEJO_TOKEN }}' \ + --dry-run=client -o yaml | kubectl apply -f - + + # 3. Secrets da Aplicação (Idempotente) + kubectl -n gohorsejobsdev create secret generic backend-secrets \ + --from-literal=DATABASE_URL='${{ vars.DATABASE_URL }}' \ + --dry-run=client -o yaml | kubectl apply -f - + + # 4. Aplicar Manifestos + kubectl apply -f k8s/dev/ -n gohorsejobsdev + + # 5. Atualização Direta de Imagem + kubectl -n gohorsejobsdev set image deployment/gohorse-backend-dev backend=${{ env.REGISTRY }}/bohessefm/gohorsejobs:${{ github.sha }} + kubectl -n gohorsejobsdev set image deployment/gohorse-backoffice-dev backoffice=${{ env.REGISTRY }}/bohessefm/backoffice:${{ github.sha }} \ No newline at end of file