---
kind: pipeline
type: docker
name: build

steps:
  - name: dotnet-build
    image: mcr.microsoft.com/dotnet/sdk:10.0
    commands:
      - dotnet restore MidrandBooks.slnx
      - dotnet build MidrandBooks.slnx -c Release

  - name: dotnet-test
    image: mcr.microsoft.com/dotnet/sdk:10.0
    commands:
      - dotnet restore MidrandBooks.slnx
      - dotnet test MidrandBooks.slnx -c Release --no-restore

trigger:
  event: [ pull_request ]

---
kind: pipeline
type: docker
name: package

steps:
  - name: docker-build
    image: plugins/docker
    settings:
      registry: nexus.khongisa.co.za
      repo: nexus.khongisa.co.za/midrandbooks
      tags: [ latest, "1.${DRONE_BUILD_NUMBER}" ]
      custom_labels:
        - org.opencontainers.image.source=https://gitea.khongisa.co.za/litecharms/midrandbooks
        - org.opencontainers.image.version=1.${DRONE_BUILD_NUMBER}
        - org.opencontainers.image.revision=${DRONE_COMMIT_SHA}
      username: { from_secret: docker_username }
      password: { from_secret: docker_password }      

  - name: gitea-tag-release
    image: alpine/git
    environment:
      GITEA_TOKEN: { from_secret: git_token }
      GITEA_USER: { from_secret: git_username }
      GITEA_PASS: { from_secret: git_password }    
    commands:
      - echo "169.255.58.144 gitea.khongisa.co.za" >> /etc/hosts
      - apk add --no-cache curl
      - git remote set-url origin https://$${GITEA_USER}:$${GITEA_PASS}@gitea.khongisa.co.za/litecharms/midrandbooks.git
      - git tag 1.${DRONE_BUILD_NUMBER}
      - git push origin 1.${DRONE_BUILD_NUMBER}
      - |
        curl -X POST "https://gitea.khongisa.co.za/api/v1/repos/litecharms/midrandbooks/releases" \
             -H "Authorization: token $${GITEA_TOKEN}" \
             -H "Content-Type: application/json" \
             -d "{
               \"tag_name\": \"1.${DRONE_BUILD_NUMBER}\",
               \"target_commitish\": \"${DRONE_COMMIT_SHA}\",
               \"name\": \"Release 1.${DRONE_BUILD_NUMBER}\",
               \"body\": \"### Artifacts\n* **Docker Image:** nexus.khongisa.co.za/midrandbooks:1.${DRONE_BUILD_NUMBER}\n* **NuGet:** [View on Nexus](https://nexus.khongisa.co.za/repository/nuget-group/)\",
               \"draft\": false,
               \"prerelease\": false
             }"

depends_on:
  - build

trigger:
  event: [ pull_request ]

---
kind: pipeline
type: docker
name: uat

steps:
  - name: deploy
    image: bitnami/kubectl:latest
    environment:
      KUBE_CONFIG: { from_secret: kube_config }
    commands:      
      - mkdir -p $HOME/.kube
      - echo "$KUBE_CONFIG" > $HOME/.kube/config
      - kubectl apply -f midrandbooks-uat.yml
      - sleep 10
      - kubectl rollout restart deployment/midrandbooks -n midrandbooks-uat

depends_on:
  - package

trigger:
  event: [ pull_request ]

---
kind: pipeline
type: docker
name: prod

steps:
  - name: deploy
    image: bitnami/kubectl:latest
    environment:
      KUBE_CONFIG: { from_secret: kube_config }
    commands:      
      - mkdir -p $HOME/.kube
      - echo "$KUBE_CONFIG" > $HOME/.kube/config
      - kubectl apply -f midrandbooks.yml

depends_on:
  - uat

trigger:
  event: [ promote ]
  target: [ production ]