95 lines
3.3 KiB
Groovy
95 lines
3.3 KiB
Groovy
pipeline {
|
|
agent { label 'android' }
|
|
|
|
environment {
|
|
ANDROID_HOME = "${env.HOME}/Android/Sdk"
|
|
ANDROID_SDK_ROOT = "${env.HOME}/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('Verify JDK') {
|
|
steps {
|
|
sh 'java -version'
|
|
sh 'javac -version'
|
|
}
|
|
}
|
|
|
|
stage('Bootstrap Android SDK') {
|
|
steps {
|
|
sh '''
|
|
if [ ! -d "$ANDROID_HOME/cmdline-tools/latest/bin" ]; then
|
|
echo "Installing Android SDK command-line tools..."
|
|
mkdir -p "$ANDROID_HOME"
|
|
CMDLINE_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
|
|
curl -fsSL -o /tmp/cmdline-tools.zip "$CMDLINE_TOOLS_URL"
|
|
unzip -qo /tmp/cmdline-tools.zip -d "$ANDROID_HOME/cmdline-tools-tmp"
|
|
mkdir -p "$ANDROID_HOME/cmdline-tools/latest"
|
|
mv "$ANDROID_HOME/cmdline-tools-tmp/cmdline-tools/"* "$ANDROID_HOME/cmdline-tools/latest/"
|
|
rm -rf "$ANDROID_HOME/cmdline-tools-tmp" /tmp/cmdline-tools.zip
|
|
fi
|
|
'''
|
|
sh '''
|
|
yes | sdkmanager --licenses > /dev/null 2>&1 || true
|
|
sdkmanager --install \
|
|
"platform-tools" \
|
|
"platforms;android-34" \
|
|
"build-tools;34.0.0"
|
|
'''
|
|
}
|
|
}
|
|
|
|
stage('Build Debug APK') {
|
|
steps {
|
|
sh 'chmod +x gradlew'
|
|
sh './gradlew assembleDebug --no-daemon'
|
|
}
|
|
}
|
|
|
|
stage('Build Release APK') {
|
|
when {
|
|
expression {
|
|
try {
|
|
credentials('joykoo-scanner-keystore')
|
|
return true
|
|
} catch (e) {
|
|
echo 'Signing credentials not configured — skipping release build.'
|
|
return false
|
|
}
|
|
}
|
|
}
|
|
environment {
|
|
KEYSTORE_FILE = credentials('joykoo-scanner-keystore')
|
|
KEYSTORE_CREDS = credentials('joykoo-scanner-keystore-creds')
|
|
}
|
|
steps {
|
|
sh '''
|
|
./gradlew assembleRelease --no-daemon \
|
|
-Pandroid.injected.signing.store.file=$KEYSTORE_FILE \
|
|
-Pandroid.injected.signing.store.password=$KEYSTORE_CREDS_PSW \
|
|
-Pandroid.injected.signing.key.alias=$KEYSTORE_CREDS_USR \
|
|
-Pandroid.injected.signing.key.password=$KEYSTORE_CREDS_PSW
|
|
'''
|
|
}
|
|
}
|
|
}
|
|
|
|
post {
|
|
success {
|
|
archiveArtifacts artifacts: 'app/build/outputs/apk/**/*.apk', fingerprint: true
|
|
}
|
|
failure {
|
|
echo 'Build failed — check the console output above.'
|
|
}
|
|
always {
|
|
cleanWs()
|
|
}
|
|
}
|
|
}
|