kind: pipeline
type: docker
name: default

steps:
  - name: build-image
    image: gcr.io/kaniko-project/executor:debug
    commands:
      - /kaniko/executor
        --context=.
        --dockerfile=Dockerfile
        --destination=test-app:latest
        --no-push
        --tar-path=image.tar

  - name: size-check
    image: alpine:latest
    commands:
      - |
        SIZE=$(stat -c%s image.tar)
        SIZE_MB=$((SIZE / 1024 / 1024))
        echo "Image size: ${SIZE_MB}MB"
        if [ "$SIZE_MB" -gt 150 ]; then
          echo "Image too large!"
          exit 1
        fi

  - name: security-scan
    image: ghcr.io/aquasecurity/trivy:0.69.3
    commands:
      - trivy image --input image.tar --severity HIGH,CRITICAL --exit-code 1

  - name: push-artifact
    image: alpine:latest
    environment:
      GITEA_TOKEN:
        from_secret: GITEA_TOKEN
    commands:
      - apk add --no-cache git

      # Git konfigurieren
      - git config --global user.email "drone@ci.local"
      - git config --global user.name "Drone CI"

      # Eigenes Repo klonen (mit Token-Auth)
      - git clone https://kesslerpe96777:$GITEA_TOKEN@git.efi.th-nuernberg.de/gitea/kesslerpe96777/EinfuehrungInDocker_Pipeline2.git
      - cd EinfuehrungInDocker_Pipeline2

      # Branch wechseln oder neu erstellen
      - git checkout drone-artifacts || git checkout -b drone-artifacts

      # Altes Artifact löschen (|| true falls noch nicht da)
      - git rm image.tar || true
      - cp $DRONE_WORKSPACE/image.tar .
      - git add image.tar

      # Commit nur wenn Änderungen
      - git commit -m "Add built Docker image [skip ci]" || echo "Nothing to commit"

      # Push (-u beim ersten Mal damit der neue Branch upstream gesetzt wird)
      - git push -u origin drone-artifacts