Nalika ngembangake proyek kanggo platform Android, sanajan cilik, cepet utawa mengko sampeyan kudu ngatasi lingkungan pangembangan. Saliyane Android SDK, iku perlu kanggo duwe versi paling anyar saka Kotlin, Gradle, platform-alat, mbangun-alat. Lan yen ing mesin pangembang kabeh dependensi iki ditanggulangi kanthi nggunakake Android Studio IDE, banjur ing server CI / CD saben nganyari bisa dadi sirah. Lan yen ing pangembangan web Docker wis dadi solusi standar kanggo masalah lingkungan, mula kenapa ora nyoba ngatasi masalah sing padha ing pangembangan Android nggunakake ...
Kanggo sing ora ngerti apa Docker iku, kanggo sijine iku gampang, iku alat kanggo nggawe sing disebut. "wadhah" sing ngemot kernel OS minimal lan piranti lunak sing dibutuhake sing bisa kita pasang ing ngendi wae, nalika njaga lingkungan. Apa persis sing bakal ana ing wadhah kita ditemtokake ing Dockerfile, sing banjur dirakit dadi gambar sing bisa diluncurake ing ngendi wae lan duwe sifat idempotensi.
Proses instalasi lan dhasar Docker diterangake kanthi sampurna ing dheweke
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Android-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Gradle,
# ΠΈ ΠΏΠΎ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΠΎΠΌΡ ΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ² Π΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ Docker-ΠΎΠ±ΡΠ°Π·
# ΠΌΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ Π²Π·ΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ Ρ Π½ΡΠΆΠ½ΠΎΠΉ Π½Π°ΠΌ Π²Π΅ΡΡΠΈΠ΅ΠΉ Gradle
FROM gradle:5.4.1-jdk8
# ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΎΠΉ Π΄Π»Ρ Android SDK ΠΈ
# Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip"
ANDROID_HOME="/usr/local/android-sdk"
ANDROID_VERSION=28
ANDROID_BUILD_TOOLS_VERSION=28.0.3
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ, ΡΠΊΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΡΠ΄Π° SDK ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π°ΡΡ
ΠΈΠ²,
# ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ
RUN mkdir "$ANDROID_HOME" .android
&& cd "$ANDROID_HOME"
&& curl -o sdk.zip $SDK_URL
&& unzip sdk.zip
&& rm sdk.zip
# Π ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΡΠΎΡΠΊΠ°Ρ
ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΠ°ΠΏΠΊΡ ΠΈ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
# Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ. ΠΠ° ΠΎΡ. ΡΠ°ΠΉΡΠ΅ Android Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΡΠΎ ΠΌΡ
# ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Ρ Ρ ΠΌΠ°ΡΠΈΠ½ Π³Π΄Π΅ Π²ΡΡΡΠ½ΡΡ ΡΡΠΈ
# Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»ΠΈ ΠΈ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
# ΠΈΡ
ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ
&& mkdir "$ANDROID_HOME/licenses" || true
&& echo "24333f8a63b6825ea9c5514f83c2829b004d1" > "$ANDROID_HOME/licenses/android-sdk-license"
&& echo "84831b9409646a918e30573bab4c9c91346d8" > "$ANDROID_HOME/licenses/android-sdk-preview-license"
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ SDK ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ build-tools, platform-tools
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}"
"platforms;android-${ANDROID_VERSION}"
"platform-tools"
Kita nyimpen ing folder karo project Android kita lan miwiti mbangun wadhah karo printah
docker build -t android-build:5.4-28-27 .
Parameter -t nemtokake tag utawa jeneng wadhah kita, sing biasane kalebu jeneng lan versi. Ing kasus kita, kita diarani Android-build lan ing versi kasebut kita nuduhake sakumpulan versi gradle, android-sdk lan platform-tools. Ing mangsa ngarep, bakal luwih gampang kanggo nggoleki gambar sing kita butuhake kanthi jeneng nggunakake "versi" iki.
Sawise perakitan wis rampung, kita bisa nggunakake gambar kita sacara lokal, kita bisa ngundhuh kanthi printah docker push menyang repositori gambar umum utawa pribadi kanggo ngundhuh menyang mesin liyane.
Minangka conto, ayo mbangun proyek lokal. Kanggo nindakake iki, ing folder karo project, mbukak printah
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
Ayo ngerteni apa tegese:
docker run - printah Bukak gambar dhewe
-bm - tegese sawise wadhah mandheg, mbusak kabeh sing digawe sajrone urip
-v "$PWD":/home/gradle/ - masang folder saiki karo proyek Android kita menyang folder wadhah internal /home/gradle/
-w /home/gradle - nemtokake direktori kerja saka wadhah
Android-mbangun: 5.4.1-28-27 - jeneng wadhah kita sing diklumpukake
gradle assembleDebug - tim perakitan nyata sing nglumpukake proyek kita
Yen kabeh dadi apik, banjur ing sawetara detik / menit sampeyan bakal weruh ing layar kaya Mbangun sukses ing 8m 3s! Lan folder app / build / output / apk bakal ngemot aplikasi sing dirakit.
Sampeyan bisa nindakake tugas gradle liyane kanthi cara sing padha - mriksa proyek, mbukak tes, lsp. Kauntungan utama yaiku yen kita kudu mbangun proyek kasebut ing mesin liyane, kita ora perlu kuwatir babagan nginstal kabeh lingkungan lan bakal cukup kanggo ndownload gambar sing dibutuhake lan mbukak bangunan kasebut.
Wadhah kasebut ora nyimpen owah-owahan, lan saben perakitan diluncurake saka awal, sing, ing tangan siji, njamin identitas perakitan kasebut ora ana ing ngendi wae diluncurake, ing sisih liya, saben sampeyan kudu ngundhuh kabeh dependensi. lan ngumpulake kabeh kode maneh, lan iki kadhangkala bisa njupuk wektu pinunjul. Mulane, saliyane biasanipun "kadhemen" wiwitan, kita duwe pilihan kanggo miwiti mbangun nalika nyimpen supaya disebut-. "cache", ngendi kita nyimpen folder ~ / .gradle dening mung nyalin menyang folder apa project, lan ing awal mbangun sabanjurΓ© bali maneh. Kita mindhah kabeh prosedur nyalin menyang skrip sing kapisah lan printah peluncuran dhewe wiwit katon kaya iki
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 /bin/bash -c "./pre.sh; gradle assembleDebug; ./post.sh"
Akibaté, wektu mbangun proyèk rata-rata wis suda kaping pirang-pirang (gumantung saka jumlah dependensi ing proyek kasebut, nanging rata-rata proyek kasebut wiwit dirakit ing 1 menit tinimbang 5 menit).
Kabeh iki, mesthi, mung ndadekake pangertèn yen sampeyan duwe internal CI / server CD dhewe, sing ndhukung dhewe. Nanging saiki ana akeh layanan maya sing kabeh masalah iki ditanggulangi lan sampeyan ora perlu kuwatir, lan properti perakitan sing dibutuhake uga bisa ditemtokake ing setelan proyek.
Mung pangguna pangguna sing bisa melu survey.
Apa sampeyan nyimpen sistem CI/CD ing omah utawa nggunakake layanan pihak katelu?
-
Kita nggunakake server internal
-
Kita nggunakake layanan eksternal
-
Kita ora nggunakake CI / CD
-
Liyane
42 pangguna milih. 16 pangguna abstain.
Source: www.habr.com