202 lines
8.9 KiB
YAML
202 lines
8.9 KiB
YAML
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# PIPELINE 1: DEV (branch dev)
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend-dev
|
|
|
|
namespace: drone
|
|
service_account_name: drone-deployer
|
|
|
|
trigger:
|
|
event:
|
|
- custom
|
|
|
|
steps:
|
|
- name: build-and-push-backend
|
|
image: plugins/docker:latest
|
|
settings:
|
|
privileged: true
|
|
buildkit: true
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobsdev/gohorsejobs-backend
|
|
tags: [ latest, "${DRONE_COMMIT_SHA:0:8}" ]
|
|
mtu: 1200
|
|
context: backend
|
|
dockerfile: backend/Dockerfile
|
|
purge: true
|
|
username: { from_secret: HARBOR_USERNAME }
|
|
password: { from_secret: HARBOR_PASSWORD }
|
|
|
|
- name: build-and-push-backoffice
|
|
image: plugins/docker:latest
|
|
settings:
|
|
privileged: true
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobs-backoffice-dev/backoffice
|
|
tags: [ latest, "${DRONE_COMMIT_SHA:0:8}" ]
|
|
mtu: 1200
|
|
custom_config:
|
|
max-concurrent-uploads: 1
|
|
context: backoffice
|
|
dockerfile: backoffice/Dockerfile
|
|
purge: true
|
|
username: { from_secret: HARBOR_USERNAME }
|
|
password: { from_secret: HARBOR_PASSWORD }
|
|
|
|
- name: export-envs-to-k8s
|
|
image: bitnami/kubectl:latest
|
|
environment:
|
|
AWS_ACCESS_KEY_ID: { from_secret: AWS_ACCESS_KEY_ID }
|
|
AWS_ENDPOINT: { from_secret: AWS_ENDPOINT }
|
|
AWS_REGION: { from_secret: AWS_REGION }
|
|
AWS_SECRET_ACCESS_KEY: { from_secret: AWS_SECRET_ACCESS_KEY }
|
|
BACKEND_HOST: { from_secret: BACKEND_HOST }
|
|
ENV: { from_secret: ENV }
|
|
CORS_ORIGINS: { from_secret: CORS_ORIGINS }
|
|
S3_BUCKET: { from_secret: S3_BUCKET }
|
|
DATABASE_URL: { from_secret: DATABASE_URL }
|
|
HARBOR_USER: { from_secret: HARBOR_USERNAME }
|
|
HARBOR_PASS: { from_secret: HARBOR_PASSWORD }
|
|
JWT_SECRET: { from_secret: JWT_SECRET }
|
|
COOKIE_SECRET: { from_secret: COOKIE_SECRET }
|
|
COOKIE_DOMAIN: { from_secret: COOKIE_DOMAIN }
|
|
BACKEND_PORT: { from_secret: BACKEND_PORT }
|
|
PASSWORD_PEPPER: { from_secret: PASSWORD_PEPPER }
|
|
NEXT_PUBLIC_API_URL: { from_secret: NEXT_PUBLIC_API_URL }
|
|
NEXT_PUBLIC_BACKOFFICE_URL: { from_secret: NEXT_PUBLIC_BACKOFFICE_URL }
|
|
MTU: { from_secret: MTU }
|
|
|
|
commands:
|
|
# 1. Gera o arquivo .env garantindo que contenha as variáveis necessárias (incluindo as _DEV)
|
|
- touch .env.k8s
|
|
# O filtro abaixo agora captura tanto prefixos globais quanto o sufixo _DEV
|
|
- env | grep -E '(MTU|AWS_|DB_|^ENV\b|CORS_|JWT_|MAX_|PORT|S3_|UPLOAD_|STRIPE_|WEBHOOK_|DATABASE_|CLOUDFLARE_|CPANEL_|HARBOR_|COOKIE_)' > .env.k8s
|
|
|
|
# 2. Atualiza o secret de variáveis de ambiente no namespace de destino
|
|
- kubectl -n gohorsejobsdev delete secret backend-secrets --ignore-not-found
|
|
- kubectl -n gohorsejobsdev create secret generic backend-secrets --from-env-file=.env.k8s
|
|
|
|
# 3. Atualiza o secret de autenticação do registro Harbor
|
|
- kubectl -n gohorsejobsdev delete secret harbor-registry --ignore-not-found
|
|
- kubectl -n gohorsejobsdev create secret docker-registry harbor-registry --docker-server=in.gohorsejobs.com --docker-username=$${HARBOR_USER} --docker-password=$${HARBOR_PASS}
|
|
|
|
- name: deploy-apps
|
|
image: bitnami/kubectl:latest
|
|
commands:
|
|
# Força a atualização removendo os deployments antigos (opcional, mas garante limpeza)
|
|
- kubectl delete deployment gohorse-backend-dev -n gohorsejobsdev --ignore-not-found
|
|
- kubectl delete deployment gohorse-backoffice-dev -n gohorsejobsdev --ignore-not-found
|
|
# Aplica as novas configurações
|
|
- kubectl apply -f k8s/dev/backend-deployment-dev.yaml -n gohorsejobsdev
|
|
- kubectl apply -f k8s/dev/backend-service-dev.yaml -n gohorsejobsdev
|
|
- kubectl apply -f k8s/dev/backend-ingress-dev.yaml -n gohorsejobsdev
|
|
- kubectl apply -f k8s/dev/backoffice-deployment-dev.yaml -n gohorsejobsdev
|
|
- kubectl apply -f k8s/dev/backoffice-service-dev.yaml -n gohorsejobsdev
|
|
- kubectl apply -f k8s/dev/backoffice-ingress-dev.yaml -n gohorsejobsdev
|
|
|
|
---
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# PIPELINE 2: HML (branch hml)
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend-hml
|
|
|
|
namespace: drone
|
|
service_account_name: drone-deployer
|
|
|
|
trigger:
|
|
branch:
|
|
- hml
|
|
|
|
steps:
|
|
- name: build-and-push-backend
|
|
image: plugins/docker:latest
|
|
settings:
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobshml/gohorsejobs-backend
|
|
tags: [ latest, "${DRONE_COMMIT_SHA:0:8}" ]
|
|
context: backend
|
|
dockerfile: backend/Dockerfile
|
|
insecure: true
|
|
username: { from_secret: HARBOR_USERNAME }
|
|
password: { from_secret: HARBOR_PASSWORD }
|
|
|
|
- name: build-and-push-backoffice
|
|
image: plugins/docker:latest
|
|
settings:
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobs-backoffice-hml/backoffice
|
|
tags: [ latest, "${DRONE_COMMIT_SHA:0:8}" ]
|
|
context: backoffice
|
|
dockerfile: backoffice/Dockerfile
|
|
insecure: true
|
|
username: { from_secret: HARBOR_USERNAME }
|
|
password: { from_secret: HARBOR_PASSWORD }
|
|
|
|
- name: deploy-apps
|
|
image: bitnami/kubectl:latest
|
|
commands:
|
|
- kubectl delete deployment gohorse-backend-hml -n gohorsejobshml --ignore-not-found
|
|
- kubectl delete deployment gohorse-backoffice-hml -n gohorsejobshml --ignore-not-found
|
|
- kubectl apply -f k8s/hml/backend-deployment-hml.yaml -n gohorsejobshml
|
|
- kubectl apply -f k8s/hml/backend-service-hml.yaml -n gohorsejobshml
|
|
- kubectl apply -f k8s/hml/backend-ingress-hml.yaml -n gohorsejobshml
|
|
- kubectl apply -f k8s/hml/backoffice-hml.yaml -n gohorsejobshml
|
|
- kubectl apply -f k8s/hml/backoffice-service-hml.yaml -n gohorsejobshml
|
|
- kubectl apply -f k8s/hml/backoffice-ingress-hml.yaml -n gohorsejobshml
|
|
|
|
---
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# PIPELINE 3: PRD (branch main)
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend-prd
|
|
|
|
namespace: drone
|
|
service_account_name: drone-deployer
|
|
|
|
trigger:
|
|
branch:
|
|
- main
|
|
|
|
steps:
|
|
- name: build-and-push-backend
|
|
image: plugins/docker:latest
|
|
settings:
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobs/gohorsejobs-backend
|
|
tags: [ latest, "${DRONE_COMMIT_SHA:0:8}" ]
|
|
context: backend
|
|
dockerfile: backend/Dockerfile
|
|
insecure: true
|
|
username: { from_secret: HARBOR_USERNAME }
|
|
password: { from_secret: HARBOR_PASSWORD }
|
|
|
|
- name: build-and-push-backoffice
|
|
image: plugins/docker:latest
|
|
settings:
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobs/backoffice
|
|
tags: [ latest, "${DRONE_COMMIT_SHA:0:8}" ]
|
|
context: backoffice
|
|
dockerfile: backoffice/Dockerfile
|
|
insecure: true
|
|
username: { from_secret: HARBOR_USERNAME }
|
|
password: { from_secret: HARBOR_PASSWORD }
|
|
|
|
- name: deploy-apps
|
|
image: bitnami/kubectl:latest
|
|
commands:
|
|
- kubectl delete deployment gohorse-backend -n gohorsejobs --ignore-not-found
|
|
- kubectl delete deployment gohorse-backoffice -n gohorsejobs --ignore-not-found
|
|
- kubectl apply -f k8s/prd/backend-deployment.-prd.yaml -n gohorsejobs
|
|
- kubectl apply -f k8s/prd/backend-service-prd.yaml -n gohorsejobs
|
|
- kubectl apply -f k8s/prd/backend-ingress-prd.yaml -n gohorsejobs
|
|
- kubectl apply -f k8s/prd/backoffice-deployment-prd.yaml -n gohorsejobs
|
|
- kubectl apply -f k8s/prd/backoffice-service-prd.yaml -n gohorsejobs
|
|
- kubectl apply -f k8s/prd/backoffice-ingress-prd.yaml -n gohorsejobs
|
|
- kubectl rollout status deployment/gohorse-backend -n gohorsejobs
|
|
- kubectl rollout status deployment/gohorse-backoffice -n gohorsejobs
|