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 < /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 < ~/.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: {}