pipeline { agent any stages { stage('Build Android APK') { 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}" } steps { cleanWs() checkout scm sh ''' chmod +x ./gradlew ./gradlew clean assembleDebug ''' archiveArtifacts artifacts: '**/build/outputs/apk/**/*.apk', fingerprint: true } } } post { always { script { def result = currentBuild.currentResult ?: 'UNKNOWN' withCredentials([string(credentialsId: 'TAIGA_TOKEN', variable: 'TAIGA_TOKEN')]) { sh """ set -e REF=\$(git log -1 --pretty=%B | grep -oE 'TG-[0-9]+' | head -1 | cut -d- -f2 || true) if [ -z "\$REF" ]; then echo "No TG-* reference found" exit 0 fi ISSUE_JSON=\$(curl -s \\ -H "Authorization: Bearer \$TAIGA_TOKEN" \\ "https://taiga.grigowashere.ru/api/v1/issues/by_ref?project=2&ref=\$REF") ISSUE_ID=\$(echo "\$ISSUE_JSON" | python3 -c 'import sys,json; print(json.load(sys.stdin)["id"])') VERSION=\$(echo "\$ISSUE_JSON" | python3 -c 'import sys,json; print(json.load(sys.stdin)["version"])') export COMMENT="Jenkins build #${BUILD_NUMBER}: ${result} ${BUILD_URL}" export VERSION="\$VERSION" python3 -c 'import json, os; print(json.dumps({"comment": os.environ["COMMENT"], "version": int(os.environ["VERSION"])}))' \\ > /tmp/taiga-comment.json curl -s -X POST \\ -H "Authorization: Bearer \$TAIGA_TOKEN" \\ -H "Content-Type: application/json" \\ --data @/tmp/taiga-comment.json \\ "https://taiga.grigowashere.ru/api/v1/issues/\$ISSUE_ID/comments" echo "Commented Taiga TG-\$REF" """.stripIndent() } } } } }