Last active
April 6, 2022 09:07
-
-
Save egeysn/17dffff87262630896675dd159360fa1 to your computer and use it in GitHub Desktop.
Android Gitlab CI/CD integration.
This file contains 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
# To contribute improvements to CI/CD templates, please follow the Development guide at: | |
# https://docs.gitlab.com/ee/development/cicd/templates.html | |
# This specific template is located at: | |
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Android.gitlab-ci.yml | |
# Read more about this script on this blog post https://about.gitlab.com/2018/10/24/setting-up-gitlab-ci-for-android-projects/, by Jason Lenny | |
# If you are interested in using Android with FastLane for publishing take a look at the Android-Fastlane template. | |
image: openjdk:11-jdk | |
cache: | |
key: gradle-cache | |
paths: | |
- .gradle/ | |
variables: | |
# ANDROID_COMPILE_SDK is the version of Android you're compiling with. | |
# It should match compileSdkVersion. | |
ANDROID_COMPILE_SDK: "31" | |
# ANDROID_BUILD_TOOLS is the version of the Android build tools you are using. | |
# It should match buildToolsVersion. | |
ANDROID_BUILD_TOOLS: "30.0.3" | |
# It's what version of the command line tools we're going to download from the official site. | |
# Official Site-> https://developer.android.com/studio/index.html | |
# There, look down below at the cli tools only, sdk tools package is of format: | |
# commandlinetools-os_type-ANDROID_SDK_TOOLS_latest.zip | |
# when the script was last modified for latest compileSdkVersion, it was which is written down below | |
ANDROID_SDK_TOOLS: "7583922" | |
# Packages installation before running script | |
before_script: | |
- apt-get --quiet update --yes | |
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 | |
# Setup path as ANDROID_SDK_ROOT for moving/exporting the downloaded sdk into it | |
- export ANDROID_SDK_ROOT="${PWD}/android-home" | |
# Create a new directory at specified location | |
- install -d $ANDROID_SDK_ROOT | |
# Here we are installing androidSDK tools from official source, | |
# (the key thing here is the url from where you are downloading these sdk tool for command line, so please do note this url pattern there and here as well) | |
# after that unzipping those tools and | |
# then running a series of SDK manager commands to install necessary android SDK packages that'll allow the app to build | |
- wget --output-document=$ANDROID_SDK_ROOT/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip | |
# move to the archive at ANDROID_SDK_ROOT | |
- pushd $ANDROID_SDK_ROOT | |
- unzip -d cmdline-tools cmdline-tools.zip | |
- pushd cmdline-tools | |
# since commandline tools version 7583922 the root folder is named "cmdline-tools" so we rename it if necessary | |
- mv cmdline-tools tools || true | |
- popd | |
- popd | |
- export PATH=$PATH:${ANDROID_SDK_ROOT}/cmdline-tools/tools/bin/ | |
# Nothing fancy here, just checking sdkManager version | |
- sdkmanager --version | |
# use yes to accept all licenses | |
- yes | sdkmanager --licenses || true | |
- sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" | |
- sdkmanager "platform-tools" | |
- sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" | |
# Not necessary, but just for surity | |
- chmod +x ./gradlew | |
# Basic android and gradle stuff | |
# Check linting | |
lintDebug: | |
interruptible: true | |
stage: build | |
script: | |
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint | |
# Make Project | |
assembleDebug: | |
interruptible: true | |
stage: build | |
only: | |
- master | |
script: | |
- ./gradlew assembleDebug | |
- | | |
curl \ | |
-F token="${SLACK_CHANNEL_ACCESS_TOKEN}" \ | |
-F channels="${SLACK_CHANNEL_ID}" \ | |
-F initial_comment=" Fırından yeni APK çıktı sıcak sıcak :)" \ | |
-F "file=@$(find app/build/outputs/apk/debug -name 'app*')" \ | |
https://slack.com/api/files.upload | |
artifacts: | |
paths: | |
- app/build/outputs/apk/debug | |
# Run all tests, if any fails, interrupt the pipeline(fail it) | |
debugTests: | |
interruptible: true | |
stage: test | |
script: | |
- ./gradlew -Pci --console=plain :app:testDebug |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment