pipeline {
    agent any

    environment {
        JAVA_HOME = '/usr/lib/jvm/java-21-openjdk-amd64'
        ANDROID_HOME = '/opt/android-sdk'
        ANDROID_SDK_ROOT = '/opt/android-sdk'
        PATH = "/usr/lib/jvm/java-21-openjdk-amd64/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:${env.PATH}"

        GITEA_OWNER = 'Grigo'
        GITEA_REPO = 'LoraMapTester' // Замените на нужный репозиторий
        GITEA_URL = 'https://git.grigowashere.ru' // Базовый URL Gitea
        GITEA_API_URL = "${GITEA_URL}/api/v1"
        GITEA_TOKEN_CREDENTIALS_ID = 'Gitea_Credentials' // ID ваших креденшлов для Gitea в Jenkins
    }

    stages {
        stage('Build Android APK') {
            steps {
                cleanWs()
                checkout scm

                sh '''
                    chmod +x ./gradlew
                    ./gradlew clean assembleDebug
                '''

                archiveArtifacts artifacts: '**/build/outputs/apk/**/*.apk', fingerprint: true
                stash name: 'apk', includes: '**/build/outputs/apk/**/*.apk'
            }
        }

        stage('Create Gitea Release and Upload APK') {
            steps {
                unstash 'apk'

                withCredentials([string(credentialsId: "${env.GITEA_TOKEN_CREDENTIALS_ID}", variable: 'GITEA_TOKEN')]) {
                    writeFile file: 'gitea-release.sh', text: '''
#!/bin/bash

apkPath=$(find . -path '*/build/outputs/apk/debug/*.apk' -type f | head -1)
if [ -z "$apkPath" ]; then
  echo "APK not found under */build/outputs/apk/debug/"
  exit 1
fi
headers="Authorization: token $GITEA_TOKEN"

# Создаем релиз на Gitea
release=$(curl -X POST "${GITEA_API_URL}/repos/$GITEA_OWNER/$GITEA_REPO/releases" \
  -H "$headers" \
  -H "Content-Type: application/json" \
  -d '{
    "tag_name": "v'$BUILD_NUMBER'",
    "target_commitish": "main",
    "name": "Release v'$BUILD_NUMBER'",
    "body": "Jenkins Android build '$BUILD_NUMBER'",
    "draft": false,
    "prerelease": false
  }')

releaseId=$(echo $release | jq -r .id)

# Формируем URL для загрузки APK
uploadUrl="${GITEA_API_URL}/repos/$GITEA_OWNER/$GITEA_REPO/releases/$releaseId/assets?name=app-debug.apk"

# Загружаем APK файл в Gitea
curl -X POST "$uploadUrl" \
  -H "$headers" \
  -F "attachment=@$apkPath;type=application/vnd.android.package-archive"

if [ $? -ne 0 ]; then
  echo "Gitea asset upload failed: $apkPath"
  exit 1
fi
'''

                    sh '''
                    chmod +x gitea-release.sh
                    ./gitea-release.sh
                    '''
                }
            }
        }
    }
}