kind: pipeline
type: kubernetes
name: deploy-production

trigger:
  event:
    - push
  branch:
    - main

steps:
- name: build-publish-image
  image: plugins/docker
  privileged: true
  volumes:
    - name: build
      path: /drone/src/build
  settings:
    cache_from:
      "dutchellie/${DRONE_REPO_NAME}:${DRONE_BRANCH}-latest"
    username:
      from_secret: org_docker_username
    password:
      from_secret: org_docker_password
    dockerfile: Dockerfile
    repo: dutchellie/${DRONE_REPO_NAME}
    tags:
      - ${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}
      - ${DRONE_BRANCH}-latest
- name: deploy
  image: pelotech/drone-helm3
  settings:
    mode: upgrade
    chart: .drone/helm/chart
    namespace: drone-production
    release: ${DRONE_REPO_NAME}-${DRONE_BRANCH}
    skip_tls_verify: true
    values_files:
      - .drone/helm/prod-val.yaml
    values:
      - "image=dutchellie/${DRONE_REPO_NAME}:${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}"
      - "baseURL=quenten.nl"
      - "name=${DRONE_REPO_NAME}-${DRONE_BRANCH}"
    kube_api_server:
      from_secret: org_api_server
    kube_token:
      from_secret: org_kube_token_production
    kube_certificate:
      from_secret: org_kube_certificate_production
    kube_service_account: drone-deploy
    dry_run: false
  depends_on:
    - build-publish-image

volumes:
  - name: build
    temp: {}

---

kind: pipeline
type: kubernetes
name: deploy-staging

trigger:
  event:
    - push
  branch:
    - staging

steps:
- name: build-publish-image
  image: plugins/docker
  privileged: true
  volumes:
    - name: build
      path: /drone/src/build
  settings:
    cache_from:
      "dutchellie/${DRONE_REPO_NAME}:${DRONE_BRANCH}-latest"
    username:
      from_secret: org_docker_username
    password:
      from_secret: org_docker_password
    dockerfile: staging.Dockerfile
    repo: dutchellie/${DRONE_REPO_NAME}
    tags:
      - ${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}
      - ${DRONE_BRANCH}-latest
- name: deploy
  image: pelotech/drone-helm3
  settings:
    mode: upgrade
    chart: .drone/helm/chart
    namespace: drone-staging
    release: ${DRONE_REPO_NAME}-${DRONE_BRANCH}
    skip_tls_verify: true
    values_files:
      - .drone/helm/prod-val.yaml
    values:
      - "image=dutchellie/${DRONE_REPO_NAME}:${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}"
      - "baseURL=staging.quenten.nl"
      - "name=${DRONE_REPO_NAME}-${DRONE_BRANCH}"
    kube_api_server:
      from_secret: org_api_server
    kube_token:
      from_secret: org_kube_token
    kube_certificate:
      from_secret: org_kube_certificate
    kube_service_account: drone-deploy
    dry_run: false
  depends_on:
    - build-publish-image

volumes:
  - name: build
    temp: {}

---

kind: pipeline
type: kubernetes
name: deploy

trigger:
  event:
    - push
  branch:
    exclude:
      - main
      - staging

steps:
- name: build-publish-image
  image: plugins/docker
  privileged: true
  volumes:
    - name: build
      path: /drone/src/build
  settings:
    cache_from:
      "dutchellie/${DRONE_REPO_NAME}:${DRONE_BRANCH}-latest"
    username:
      from_secret: org_docker_username
    password:
      from_secret: org_docker_password
    dockerfile: staging.Dockerfile
    repo: dutchellie/${DRONE_REPO_NAME}
    tags:
      - ${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}
      - ${DRONE_BRANCH}-latest
- name: deploy
  image: pelotech/drone-helm3
  settings:
    mode: upgrade
    chart: .drone/helm/chart
    namespace: drone-staging
    release: ${DRONE_REPO_NAME}-${DRONE_BRANCH}
    skip_tls_verify: true
    values_files:
      - .drone/helm/staging-val.yaml
    values:
      - "image=dutchellie/${DRONE_REPO_NAME}:${DRONE_BRANCH}-${DRONE_COMMIT_SHA:0:8}"
      - "baseURL=${DRONE_BRANCH}.${DRONE_REPO_NAME}.ci.dutchellie.nl"
      - "name=${DRONE_REPO_NAME}-${DRONE_BRANCH}"
    kube_api_server:
      from_secret: org_api_server
    kube_token:
      from_secret: org_kube_token
    kube_certificate:
      from_secret: org_kube_certificate
    kube_service_account: drone-deploy
    dry_run: false
  depends_on:
    - build-publish-image

volumes:
  - name: build
    temp: {}