pipeline {
    agent { label 'android' }

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

    options {
        buildDiscarder(logRotator(numToKeepStr: '10'))
        timeout(time: 30, unit: 'MINUTES')
    }

    stages {
        stage('Build Debug APK') {
            steps {
                sh 'chmod +x gradlew'
                sh './gradlew assembleDebug --no-daemon'
            }
        }

        stage('Build Release APK') {
            when {
                expression {
                    try {
                        withCredentials([file(credentialsId: 'joykoo-scanner-keystore', variable: 'TEST')]) {}
                        return true
                    } catch (e) {
                        echo 'Signing credentials not configured — skipping release build.'
                        return false
                    }
                }
            }
            steps {
                withCredentials([
                    file(credentialsId: 'joykoo-scanner-keystore', variable: 'KEYSTORE_FILE'),
                    usernamePassword(credentialsId: 'joykoo-scanner-keystore-creds',
                                     usernameVariable: 'KEY_ALIAS',
                                     passwordVariable: 'KEY_PASSWORD')
                ]) {
                    sh '''
                        ./gradlew assembleRelease --no-daemon \
                            -Pandroid.injected.signing.store.file=$KEYSTORE_FILE \
                            -Pandroid.injected.signing.store.password=$KEY_PASSWORD \
                            -Pandroid.injected.signing.key.alias=$KEY_ALIAS \
                            -Pandroid.injected.signing.key.password=$KEY_PASSWORD
                    '''
                }
            }
        }
    }

    post {
        success {
            archiveArtifacts artifacts: 'app/build/outputs/apk/**/*.apk', fingerprint: true
        }
        failure {
            echo 'Build failed — check the console output above.'
        }
        cleanup {
            cleanWs()
        }
    }
}
