بِسْــــــــــــــــــمِ اللهِ الرَّحْمَنِ الرَّحِيْمِ
Tulisan ini dilatar belakangi oleh postingan official gitlab di https://about.gitlab.com/blog/2018/10/24/setting-up-gitlab-ci-for-android-projects terkait kendala set up ci/cd android project error karena sdk terbaru sekarang (sdk 30) ada pembaharuan directory dan path yang menyebabkan script gitlab-ci.yml android project di blog tersebut tidak lagi berjalan semestinya.
Ana juga tidak akan membahas terlalu panjang terkait ci-cd. Ala kulli hal keduanya termasuk praktek dalam pengembangan perangkat lunak, dimana CI (Continuous Integration) adalah metodelogi dimulai dari programmer memperbaharui kode secara berkala pada repository (penyimpanan source code) kemudian hasil dari automated build dan test nya bisa di review dan ditindak lanjuti oleh programmernya, baik bugfix, tambah fitur, deploy rilis, dll. Adapun CD (Continuous Delivery / Continuous Deployment) adalah proses CI yang otomatisasinya tidak berhenti di proses build dan unit test tapi termasuk deploy juga, sederhana nya Continuous Delivery itu ketika merge code maka otomatis deploy aplikasi sampai staging (dev) dan aplikasinya sudah bisa di nikmati client dan bisa juga di deploy ke rilis oleh programmer secara manual. Sedangkan Continuous Deployment proses deploy nya sudah di otomatisasi sampai tahap terakhir yakni rilis production yang sudah bisa dinikmati publik.
Na'am seperti itu, semoga Allah mudahkan kita untuk memahami, barakallahufiikum. Terkait set up nya bisa cek di link gitlab blog di muqoddimah awal tulisan ini, atau bisa browsing dulu untuk tambahan referensi karena sudah banyak juga tutorial lengkap dengan gambar terkait setup ci-cd gitlab android project, Ahsanallahu ilaikum.
Berikut latest update script gitlab-ci.yml untuk Android SDK 30 :
# 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 | |
variables: | |
# ANDROID_COMPILE_SDK is the version of Android you're compiling with. | |
# It should match compileSdkVersion. | |
ANDROID_COMPILE_SDK: "30" | |
# 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 | |
script: | |
- ./gradlew assembleDebug | |
artifacts: | |
paths: | |
- app/build/outputs/ | |
# Run all tests, if any fails, interrupt the pipeline(fail it) | |
debugTests: | |
interruptible: true | |
stage: test | |
script: | |
- ./gradlew -Pci --console=plain :app:testDebug |
Antum bisa cek langsung source nya di : https://gitlab.com/gitlab-org/gitlab/-/merge_requests/67595?commit_id=c6bbbf402bed6640f32623defe9392fb00ed17ac
Jika kedepan postingan ini sudah usang juga, setidaknya antum bisa mencari issue baru di source tersebut, insyaAllah.
Adapun untuk set up lint nya antum bisa merujuk ke halaman official android developer, di : https://developer.android.com/studio/write/lint#gradle
Demikian, semoga yang singkat, padat akan manfaat dan terpenting semoga Allah memberi kita tawfik. Aamiiin.
اَللّٰهُ أَعْلَم
Tidak ada komentar