120 lines
3 KiB
YAML
120 lines
3 KiB
YAML
kind: pipeline
|
|
type: kubernetes
|
|
name: deploy-backend
|
|
|
|
steps:
|
|
- name: build-and-push-backend
|
|
image: gcr.io/kaniko-project/executor:latest
|
|
environment:
|
|
DOCKER_CONFIG: /kaniko/.docker/
|
|
HARBOR_USERNAME:
|
|
from_secret: HARBOR_USERNAME
|
|
HARBOR_PASSWORD:
|
|
from_secret: HARBOR_PASSWORD
|
|
volumes:
|
|
- name: docker-config
|
|
path: /kaniko/.docker
|
|
settings:
|
|
repo: in.gohorsejobs.com/gohorsejobs-backend
|
|
tags: latest
|
|
|
|
commands:
|
|
- echo "Configuring Kaniko auth…"
|
|
- |
|
|
cat <<EOF > /kaniko/.docker/config.json
|
|
{
|
|
"auths": {
|
|
"in.gohorsejobs.com": {
|
|
"username": "${HARBOR_USERNAME}",
|
|
"password": "${HARBOR_PASSWORD}"
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
- echo "Running Kaniko build..."
|
|
- /kaniko/executor \
|
|
--context ./backend \
|
|
--dockerfile ./backend/Dockerfile \
|
|
--destination in.gohorsejobs.com/gohorsejobs-backend:latest \
|
|
--skip-tls-verify
|
|
|
|
- name: deploy-backend
|
|
image: bitnami/kubectl:latest
|
|
environment:
|
|
KUBERNETES_SERVER:
|
|
from_secret: K3S_SERVER
|
|
KUBERNETES_CA:
|
|
from_secret: K3S_CA_CERT
|
|
KUBERNETES_CLIENT_CERT:
|
|
from_secret: K3S_CLIENT_CERT
|
|
KUBERNETES_CLIENT_KEY:
|
|
from_secret: K3S_CLIENT_KEY
|
|
|
|
DB_HOST:
|
|
from_secret: DB_HOST
|
|
DB_PORT:
|
|
from_secret: DB_PORT
|
|
DB_USER:
|
|
from_secret: DB_USER
|
|
DB_PASSWORD:
|
|
from_secret: DB_PASSWORD
|
|
DB_NAME:
|
|
from_secret: DB_NAME
|
|
DB_SSLMODE:
|
|
from_secret: DB_SSLMODE
|
|
|
|
AWS_REGION:
|
|
from_secret: AWS_REGION
|
|
AWS_ACCESS_KEY_ID:
|
|
from_secret: AWS_ACCESS_KEY_ID
|
|
AWS_SECRET_ACCESS_KEY:
|
|
from_secret: AWS_SECRET_ACCESS_KEY
|
|
AWS_ENDPOINT:
|
|
from_secret: AWS_ENDPOINT
|
|
S3_BUCKET:
|
|
from_secret: S3_BUCKET
|
|
|
|
JWT_SECRET:
|
|
from_secret: JWT_SECRET
|
|
ENV:
|
|
from_secret: ENV
|
|
CORS_ORIGINS:
|
|
from_secret: CORS_ORIGINS
|
|
MAX_UPLOAD_SIZE:
|
|
from_secret: MAX_UPLOAD_SIZE
|
|
UPLOAD_DIR:
|
|
from_secret: UPLOAD_DIR
|
|
|
|
commands:
|
|
- echo "Configuring kubeconfig…"
|
|
- mkdir -p ~/.kube
|
|
- |
|
|
cat <<EOF > ~/.kube/config
|
|
apiVersion: v1
|
|
kind: Config
|
|
clusters:
|
|
- name: k3s
|
|
cluster:
|
|
server: ${KUBERNETES_SERVER}
|
|
certificate-authority-data: ${KUBERNETES_CA}
|
|
users:
|
|
- name: drone
|
|
user:
|
|
client-certificate-data: ${KUBERNETES_CLIENT_CERT}
|
|
client-key-data: ${KUBERNETES_CLIENT_KEY}
|
|
contexts:
|
|
- name: drone-context
|
|
context:
|
|
cluster: k3s
|
|
user: drone
|
|
namespace: gohorsejobs
|
|
current-context: drone-context
|
|
EOF
|
|
|
|
- echo "Applying backend K8s manifests…"
|
|
- kubectl apply -f k8s/backend-deployment.yaml
|
|
- kubectl apply -f k8s/backend-service.yaml
|
|
|
|
volumes:
|
|
- name: docker-config
|
|
emptyDir: {}
|