JoykooSmartApp/Jenkinsfile
2026-10-07 18:40:44 -04:00

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()
}
}
}