---
kind: pipeline
type: docker
name: build
trigger:
  event:
    exclude:
      - promote

clone:
  disable: true

steps:
  - name: checkout
    image: alpine/git
    commands:
      - git clone https://gitea.khongisa.co.za/khwezi/blazortest.git
      - git checkout ${DRONE_COMMIT}

  - name: dotnet build
    image: mcr.microsoft.com/dotnet/sdk:10.0
    commands:
      - dotnet build --configuration Release

  - name: dotnet test
    image: mcr.microsoft.com/dotnet/sdk:10.0
    commands:
      - dotnet test --configuration Release
---
x-docker-auth: &docker-auth
  DOCKER_AUTH_CONFIG: |
    {
      "auths": {
        "https://index.docker.io/v1/": {
          "auth": "a2h3ZXppOlBHM0FRM0VPMFg="
        }
      }
    }

kind: pipeline
type: docker
name: package
depends_on:
  - build
trigger:
  event:
    exclude:
      - promote

clone:
  disable: true

steps:
  - name: checkout
    image: alpine/git
    commands:
      - git clone https://gitea.khongisa.co.za/khwezi/blazortest.git .
      - git checkout ${DRONE_COMMIT}
  
  - name: dotnet publish
    image: mcr.microsoft.com/dotnet/sdk:10.0
    commands:
      - dotnet publish --configuration Release


  - name: build and push
    image: gcr.io/kaniko-project/executor:debug
    environment:
      <<: *docker-auth
    commands:
      - mkdir -p /kaniko/.docker
      - echo "$DOCKER_AUTH_CONFIG" > /kaniko/.docker/config.json
      - /kaniko/executor 
          --verbosity=debug
          --context=. 
          --dockerfile=Dockerfile 
          --destination=index.docker.io/khwezi/blazortest:latest 
          --destination=index.docker.io/khwezi/blazortest:${DRONE_BUILD_NUMBER}

  - name: volnerability scan
    image: aquasec/trivy
    commands:
      - trivy image --exit-code 1 --timeout 15m --severity CRITICAL khwezi/blazortest:${DRONE_BUILD_NUMBER}
---
kind: pipeline
type: docker
name: deploy
depends_on:
  - package
trigger:
  event:
    exclude:
      - promote

clone:
  disable: true

steps:
  - name: uat
    image: appleboy/drone-ssh
    settings:
      host: 
        from_secret: ssh_host
      username: 
        from_secret: ssh_user
      password: 
        from_secret: ssh_password
      script:
        - docker pull khwezi/blazortest:latest
        - docker stop blazortest 2>NUL || echo "Container not running"
        - docker rm blazortest 2>NUL || echo "Container not found"
        - docker run -d --name blazortest --restart unless-stopped -e ASPNETCORE_ENVIRONMENT=Development -p 4000:8081 khwezi/blazortest:latest
