Created
December 5, 2023 10:06
-
-
Save shishirthedev/64e72d6a43aaf06bfba8f5c95ede9155 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
image: openjdk:11-jdk | |
variables: | |
ANDROID_COMPILE_SDK: "34" | |
ANDROID_BUILD_TOOLS: "34.0.0" | |
ANDROID_SDK_TOOLS: "9862592" | |
EMULATOR_VERSION: "24" | |
BUILD_VARIANT: "ProdRelease" | |
workflow: | |
rules: | |
- if: $CI_COMMIT_REF_NAME == "master" | |
variables: | |
BUILD_VARIANT: "ProdRelease" | |
- if: $CI_COMMIT_REF_NAME == "staging" | |
variables: | |
BUILD_VARIANT: "DevRelease" | |
stages: | |
- prepare | |
- test | |
- build | |
before_script: | |
- export ANDROID_HOME=$PWD/android-sdk | |
- export ANDROID_SDK_ROOT=${ANDROID_HOME} | |
- export ANDROID_TOOLS_PATH=${ANDROID_HOME}/platform-tools | |
- export ANDROID_SDK_MANAGER=${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager | |
- export ANDROID_AVD_MANAGER=${ANDROID_HOME}/cmdline-tools/latest/bin/avdmanager | |
- export ANDROID_EMULATOR_HOME=${ANDROID_HOME}/emulator | |
- export ANDROID_EMULATOR_PATH=${ANDROID_HOME}/avd | |
- export PATH="$PATH:${ANDROID_TOOLS_PATH}" | |
- export ADB_INSTALL_TIMEOUT=10 | |
# Update system | |
- apt-get --quiet update --yes | |
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 tree libx11-dev libpulse0 libgl1 libnss3 libxcomposite-dev libxcursor1 libasound2 | |
# Download Android SDK | |
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip | |
- mkdir ${ANDROID_HOME} | |
- unzip -d ${ANDROID_HOME}/cmdline-tools android-sdk.zip | |
- echo y | rm android-sdk.zip | |
- mv ${ANDROID_HOME}/cmdline-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest | |
# Install Android Build Tools | |
- echo y | ${ANDROID_SDK_MANAGER} --sdk_root=${ANDROID_HOME} --licenses | |
- echo y | ${ANDROID_SDK_MANAGER} --sdk_root=${ANDROID_HOME} --update > update.log | |
- echo y | ${ANDROID_SDK_MANAGER} --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}" "build-tools;${ANDROID_BUILD_TOOLS}" "extras;google;m2repository" "extras;android;m2repository" > installPlatform.log | |
###################### Job 1 | Create Properties File ############################# | |
create_property_files: | |
stage: prepare | |
interruptible: true | |
before_script: | |
- echo "No need to install Android SDK for Creating Property files" | |
script: | |
- echo ****** Current Branch Name is = $CI_COMMIT_REF_NAME | |
- mkdir -p keystore | |
- echo ${KEYSTORE_JKS_BASE64} | base64 --decode > keystore/production | |
- echo "base_url.dev=${BASE_URL_DEV}" > secret.properties | |
- echo "base_url.prod=${BASE_URL_PROD}" >> secret.properties | |
- echo "firebase.app_id_dev=${FIREBASE_APP_ID_DEV}" >> secret.properties | |
- echo "firebase.app_id_prod=${FIREBASE_APP_ID_PROD}" >> secret.properties | |
- echo "keystore.key_alias=${KEYSTORE_KEY_ALIAS}" >> secret.properties | |
- echo "keystore.key_password=${KEYSTORE_KEY_PASSWORD}" >> secret.properties | |
- echo "keystore.store_file_path=${KEYSTORE_STORE_FILE_PATH}" >> secret.properties | |
- echo "keystore.store_password=${KEYSTORE_STORE_PASSWORD}" >> secret.properties | |
- cat secret.properties | |
artifacts: | |
paths: | |
- keystore/production | |
- secret.properties | |
expire_in: 20 mins | |
only: | |
- master | |
- staging | |
###################### Job 2 | Instrumentation Test ############################# | |
ui_test: | |
stage: test | |
script: | |
- wget --quiet --output-document=android-wait-for-emulator.sh https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator | |
- chmod +x android-wait-for-emulator.sh | |
- echo y | ${ANDROID_SDK_MANAGER} --update > update.log | |
- echo y | ${ANDROID_SDK_MANAGER} "platform-tools" "emulator" "system-images;android-${EMULATOR_VERSION};default;armeabi-v7a" > installEmulator.log | |
- echo no | ${ANDROID_AVD_MANAGER} --verbose create avd -n test --force -k "system-images;android-${EMULATOR_VERSION};default;armeabi-v7a" | |
- ${ANDROID_EMULATOR_HOME}/emulator -avd test -no-boot-anim -no-snapshot-save -no-audio -no-window -gpu off -debug -verbose & | |
- ./android-wait-for-emulator.sh | |
# Turn off animations | |
- adb shell settings put global window_animation_scale 0 & | |
- adb shell settings put global transition_animation_scale 0 & | |
- adb shell settings put global animator_duration_scale 0 & | |
- adb shell input keyevent 82 | |
- ./gradlew connectedAndroidTest --stacktrace | |
- adb emu kill | |
artifacts: | |
name: "reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}" | |
when: on_failure | |
paths: | |
- app/build/reports/androidTests/connected/ | |
only: | |
- master | |
- staging | |
###################### Job 3 | Unit Test ############################# | |
unit_test: | |
stage: test | |
script: | |
- ./gradlew test | |
artifacts: | |
when: on_failure | |
name: "reports_${CI_PROJECT_NAME}_${CI_BUILD_REF_NAME}" | |
paths: | |
- app/build/reports/tests/ | |
only: | |
- master | |
- staging | |
###################### Job 4 | Build APK ############################# | |
build_apk: | |
stage: build | |
script: | |
- echo ****Build Variant is = ${BUILD_VARIANT} | |
- ./gradlew assemble${BUILD_VARIANT} appDistributionUpload${BUILD_VARIANT} | |
dependencies: | |
- create_property_files | |
artifacts: | |
when: on_success | |
paths: | |
- app/build/outputs | |
only: | |
- master | |
- staging |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment