343 lines
No EOL
15 KiB
YAML
343 lines
No EOL
15 KiB
YAML
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# PIPELINE 1: DEV (branch dev)
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend-dev
|
|
|
|
service_account_name: drone-deployer
|
|
|
|
trigger:
|
|
branch:
|
|
- dev
|
|
|
|
steps:
|
|
- name: build-and-push-backend
|
|
image: plugins/docker:latest
|
|
settings:
|
|
registry: in.gohorsejobs.com
|
|
repo: in.gohorsejobs.com/gohorsejobsdev/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-dev/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: 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 }
|
|
DB_HOST: { from_secret: DB_HOST }
|
|
DB_NAME: { from_secret: DB_NAME_DEV }
|
|
DB_PASSWORD: { from_secret: DB_PASSWORD }
|
|
DB_PORT: { from_secret: DB_PORT }
|
|
DB_SSLMODE: { from_secret: DB_SSLMODE }
|
|
DB_USER: { from_secret: DB_USER }
|
|
ENV: { from_secret: ENV_DEV }
|
|
CORS_ORIGINS: { from_secret: CORS_ORIGINS_DEV }
|
|
JWT_SECRET: { from_secret: JWT_SECRET }
|
|
MAX_UPLOAD_CAD_SIZE: { from_secret: MAX_UPLOAD_SIZE }
|
|
PORT: { from_secret: PORT }
|
|
S3_BUCKET: { from_secret: S3_BUCKET_DEV }
|
|
UPLOAD_DIR: { from_secret: UPLOAD_DIR }
|
|
STRIPE_SECRET_KEY: { from_secret: STRIPE_SECRET_KEY_DEV }
|
|
STRIPE_WEBHOOK_SECRET: { from_secret: STRIPE_WEBHOOK_SECRET_DEV }
|
|
STRIPE_PUBLISHABLE_KEY: { from_secret: STRIPE_PUBLISHABLE_KEY_DEV }
|
|
WEBHOOK_BASE_URL: { from_secret: WEBHOOK_BASE_URL_DEV }
|
|
DATABASE_URL: { from_secret: DATABASE_URL_DEV }
|
|
CLOUDFLARE_API_TOKEN: { from_secret: CLOUDFLARE_API_TOKEN }
|
|
CLOUDFLARE_ZONE_ID: { from_secret: CLOUDFLARE_ZONE_ID }
|
|
CPANEL_HOST: { from_secret: CPANEL_HOST }
|
|
CPANEL_USERNAME: { from_secret: CPANEL_USERNAME }
|
|
CPANEL_API_TOKEN: { from_secret: CPANEL_API_TOKEN }
|
|
commands:
|
|
- |
|
|
cat <<EOF > .env.k8s
|
|
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
|
|
AWS_ENDPOINT=$AWS_ENDPOINT
|
|
AWS_REGION=$AWS_REGION
|
|
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
|
|
CORS_ORIGINS=$CORS_ORIGINS
|
|
DB_HOST=$DB_HOST
|
|
DB_NAME=$DB_NAME
|
|
DB_PASSWORD=$DB_PASSWORD
|
|
DB_PORT=$DB_PORT
|
|
DB_SSLMODE=$DB_SSLMODE
|
|
DB_USER=$DB_USER
|
|
ENV=$ENV
|
|
JWT_SECRET=$JWT_SECRET
|
|
MAX_UPLOAD_CAD_SIZE=$MAX_UPLOAD_CAD_SIZE
|
|
PORT=$PORT
|
|
S3_BUCKET=$S3_BUCKET
|
|
UPLOAD_DIR=$UPLOAD_DIR
|
|
STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY
|
|
STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET
|
|
STRIPE_PUBLISHABLE_KEY=$STRIPE_PUBLISHABLE_KEY
|
|
WEBHOOK_BASE_URL=$WEBHOOK_BASE_URL
|
|
DATABASE_URL=$DATABASE_URL
|
|
CLOUDFLARE_API_TOKEN=$CLOUDFLARE_API_TOKEN
|
|
CLOUDFLARE_ZONE_ID=$CLOUDFLARE_ZONE_ID
|
|
CPANEL_HOST=$CPANEL_HOST
|
|
CPANEL_USERNAME=$CPANEL_USERNAME
|
|
CPANEL_API_TOKEN=$CPANEL_API_TOKEN
|
|
EOF
|
|
- kubectl -n gohorsejobsdev delete secret backend-secrets --ignore-not-found
|
|
- kubectl -n gohorsejobsdev create secret generic backend-secrets --from-env-file=.env.k8s
|
|
|
|
- name: deploy-apps
|
|
image: bitnami/kubectl:latest
|
|
commands:
|
|
- kubectl apply -f k8s/dev/backend-deployment.yaml
|
|
- kubectl apply -f k8s/dev/backend-service.yaml
|
|
- kubectl apply -f k8s/dev/backend-ingress-dev.yaml
|
|
- kubectl apply -f k8s/dev/backoffice-deployment.yaml
|
|
- kubectl apply -f k8s/dev/backoffice-service.yaml
|
|
- kubectl apply -f k8s/dev/backoffice-ingress-dev.yaml
|
|
- kubectl rollout restart deployment/gohorse-backend -n gohorsejobsdev
|
|
- kubectl rollout restart deployment/gohorse-backoffice -n gohorsejobsdev
|
|
|
|
---
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# PIPELINE 2: HML (branch hml)
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend-hml
|
|
|
|
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: 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 }
|
|
DB_HOST: { from_secret: DB_HOST }
|
|
DB_NAME: { from_secret: DB_NAME_HML }
|
|
DB_PASSWORD: { from_secret: DB_PASSWORD }
|
|
DB_PORT: { from_secret: DB_PORT }
|
|
DB_SSLMODE: { from_secret: DB_SSLMODE }
|
|
DB_USER: { from_secret: DB_USER }
|
|
ENV: { from_secret: ENV_DEV }
|
|
CORS_ORIGINS: { from_secret: CORS_ORIGINS_HML }
|
|
JWT_SECRET: { from_secret: JWT_SECRET }
|
|
MAX_UPLOAD_CAD_SIZE: { from_secret: MAX_UPLOAD_SIZE }
|
|
PORT: { from_secret: PORT }
|
|
S3_BUCKET: { from_secret: S3_BUCKET_HML }
|
|
UPLOAD_DIR: { from_secret: UPLOAD_DIR }
|
|
STRIPE_SECRET_KEY: { from_secret: STRIPE_SECRET_KEY_HML }
|
|
STRIPE_WEBHOOK_SECRET: { from_secret: STRIPE_WEBHOOK_SECRET_HML }
|
|
STRIPE_PUBLISHABLE_KEY: { from_secret: STRIPE_PUBLISHABLE_KEY_HML }
|
|
WEBHOOK_BASE_URL: { from_secret: WEBHOOK_BASE_URL_HML }
|
|
DATABASE_URL: { from_secret: DATABASE_URL_HML }
|
|
CLOUDFLARE_API_TOKEN: { from_secret: CLOUDFLARE_API_TOKEN }
|
|
CLOUDFLARE_ZONE_ID: { from_secret: CLOUDFLARE_ZONE_ID }
|
|
CPANEL_HOST: { from_secret: CPANEL_HOST }
|
|
CPANEL_USERNAME: { from_secret: CPANEL_USERNAME }
|
|
CPANEL_API_TOKEN: { from_secret: CPANEL_API_TOKEN }
|
|
commands:
|
|
- |
|
|
cat <<EOF > .env.k8s
|
|
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
|
|
AWS_ENDPOINT=$AWS_ENDPOINT
|
|
AWS_REGION=$AWS_REGION
|
|
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
|
|
CORS_ORIGINS=$CORS_ORIGINS
|
|
DB_HOST=$DB_HOST
|
|
DB_NAME=$DB_NAME
|
|
DB_PASSWORD=$DB_PASSWORD
|
|
DB_PORT=$DB_PORT
|
|
DB_SSLMODE=$DB_SSLMODE
|
|
DB_USER=$DB_USER
|
|
ENV=$ENV
|
|
JWT_SECRET=$JWT_SECRET
|
|
MAX_UPLOAD_CAD_SIZE=$MAX_UPLOAD_CAD_SIZE
|
|
PORT=$PORT
|
|
S3_BUCKET=$S3_BUCKET
|
|
UPLOAD_DIR=$UPLOAD_DIR
|
|
STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY
|
|
STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET
|
|
STRIPE_PUBLISHABLE_KEY=$STRIPE_PUBLISHABLE_KEY
|
|
WEBHOOK_BASE_URL=$WEBHOOK_BASE_URL
|
|
DATABASE_URL=$DATABASE_URL
|
|
CLOUDFLARE_API_TOKEN=$CLOUDFLARE_API_TOKEN
|
|
CLOUDFLARE_ZONE_ID=$CLOUDFLARE_ZONE_ID
|
|
CPANEL_HOST=$CPANEL_HOST
|
|
CPANEL_USERNAME=$CPANEL_USERNAME
|
|
CPANEL_API_TOKEN=$CPANEL_API_TOKEN
|
|
EOF
|
|
- kubectl -n gohorsejobshml delete secret backend-secrets --ignore-not-found
|
|
- kubectl -n gohorsejobshml create secret generic backend-secrets --from-env-file=.env.k8s
|
|
|
|
- name: deploy-apps
|
|
image: bitnami/kubectl:latest
|
|
commands:
|
|
- kubectl apply -f k8s/hml/backend-deployment.yaml
|
|
- kubectl apply -f k8s/hml/backend-service.yaml
|
|
- kubectl apply -f k8s/hml/backend-ingress-hml.yaml
|
|
- kubectl apply -f k8s/hml/backoffice-deployment-hml.yaml
|
|
- kubectl apply -f k8s/hml/backoffice-service-hml.yaml
|
|
- kubectl apply -f k8s/hml/backoffice-ingress-hml.yaml
|
|
- kubectl rollout restart deployment/gohorse-backend -n gohorsejobshml
|
|
- kubectl rollout restart deployment/gohorse-backoffice -n gohorsejobshml
|
|
|
|
---
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
# PIPELINE 3: PRD (branch main)
|
|
# ═══════════════════════════════════════════════════════════════════════════════
|
|
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend-prd
|
|
|
|
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: 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 }
|
|
DB_HOST: { from_secret: DB_HOST }
|
|
DB_NAME: { from_secret: DB_NAME_PRD }
|
|
DB_PASSWORD: { from_secret: DB_PASSWORD }
|
|
DB_PORT: { from_secret: DB_PORT }
|
|
DB_SSLMODE: { from_secret: DB_SSLMODE }
|
|
DB_USER: { from_secret: DB_USER }
|
|
ENV: { from_secret: ENV_PRD }
|
|
CORS_ORIGINS: { from_secret: CORS_ORIGINS_PRD }
|
|
JWT_SECRET: { from_secret: JWT_SECRET }
|
|
MAX_UPLOAD_CAD_SIZE: { from_secret: MAX_UPLOAD_SIZE }
|
|
PORT: { from_secret: PORT }
|
|
S3_BUCKET: { from_secret: S3_BUCKET_PRD }
|
|
UPLOAD_DIR: { from_secret: UPLOAD_DIR }
|
|
STRIPE_SECRET_KEY: { from_secret: STRIPE_SECRET_KEY_PRD }
|
|
STRIPE_WEBHOOK_SECRET: { from_secret: STRIPE_WEBHOOK_SECRET_PRD }
|
|
STRIPE_PUBLISHABLE_KEY: { from_secret: STRIPE_PUBLISHABLE_KEY_PRD }
|
|
WEBHOOK_BASE_URL: { from_secret: WEBHOOK_BASE_URL_PRD }
|
|
DATABASE_URL: { from_secret: DATABASE_URL_PRD }
|
|
CLOUDFLARE_API_TOKEN: { from_secret: CLOUDFLARE_API_TOKEN }
|
|
CLOUDFLARE_ZONE_ID: { from_secret: CLOUDFLARE_ZONE_ID }
|
|
CPANEL_HOST: { from_secret: CPANEL_HOST }
|
|
CPANEL_USERNAME: { from_secret: CPANEL_USERNAME }
|
|
CPANEL_API_TOKEN: { from_secret: CPANEL_API_TOKEN }
|
|
commands:
|
|
- |
|
|
cat <<EOF > .env.k8s
|
|
AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
|
|
AWS_ENDPOINT=$AWS_ENDPOINT
|
|
AWS_REGION=$AWS_REGION
|
|
AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
|
|
CORS_ORIGINS=$CORS_ORIGINS
|
|
DB_HOST=$DB_HOST
|
|
DB_NAME=$DB_NAME
|
|
DB_PASSWORD=$DB_PASSWORD
|
|
DB_PORT=$DB_PORT
|
|
DB_SSLMODE=$DB_SSLMODE
|
|
DB_USER=$DB_USER
|
|
ENV=$ENV
|
|
JWT_SECRET=$JWT_SECRET
|
|
MAX_UPLOAD_CAD_SIZE=$MAX_UPLOAD_CAD_SIZE
|
|
PORT=$PORT
|
|
S3_BUCKET=$S3_BUCKET
|
|
UPLOAD_DIR=$UPLOAD_DIR
|
|
STRIPE_SECRET_KEY=$STRIPE_SECRET_KEY
|
|
STRIPE_WEBHOOK_SECRET=$STRIPE_WEBHOOK_SECRET
|
|
STRIPE_PUBLISHABLE_KEY=$STRIPE_PUBLISHABLE_KEY
|
|
WEBHOOK_BASE_URL=$WEBHOOK_BASE_URL
|
|
DATABASE_URL=$DATABASE_URL
|
|
CLOUDFLARE_API_TOKEN=$CLOUDFLARE_API_TOKEN
|
|
CLOUDFLARE_ZONE_ID=$CLOUDFLARE_ZONE_ID
|
|
CPANEL_HOST=$CPANEL_HOST
|
|
CPANEL_USERNAME=$CPANEL_USERNAME
|
|
CPANEL_API_TOKEN=$CPANEL_API_TOKEN
|
|
EOF
|
|
- kubectl -n gohorsejobs delete secret backend-secrets --ignore-not-found
|
|
- kubectl -n gohorsejobs create secret generic backend-secrets --from-env-file=.env.k8s
|
|
|
|
- name: deploy-apps
|
|
image: bitnami/kubectl:latest
|
|
commands:
|
|
- kubectl apply -f k8s/prd/backend-deployment.yaml
|
|
- kubectl apply -f k8s/prd/backend-service.yaml
|
|
- kubectl apply -f k8s/prd/backend-ingress-prd.yaml
|
|
- kubectl apply -f k8s/prd/backoffice-deployment.yaml
|
|
- kubectl apply -f k8s/prd/backoffice-service.yaml
|
|
- kubectl apply -f k8s/prd/backoffice-ingress-prd.yaml
|
|
- kubectl rollout restart deployment/gohorse-backend -n gohorsejobs
|
|
- kubectl rollout restart deployment/gohorse-backoffice -n gohorsejobs |