Kung nagpalambo sa usa ka proyekto alang sa platform sa Android, bisan ang labing gamay, sa madugay o sa madali kinahanglan nimo nga atubangon ang palibot sa pag-uswag. Dugang pa sa Android SDK, gikinahanglan nga adunay pinakabag-o nga bersyon sa Kotlin, Gradle, plataporma-tools, build-tools. Ug kung sa makina sa developer ang tanan nga kini nga mga dependency masulbad sa mas dako nga gidak-on gamit ang Android Studio IDE, nan sa CI / CD server ang matag update mahimong usa ka labad sa ulo. Ug kung sa pag-uswag sa web ang Docker nahimo nga sukaranan nga solusyon sa problema sa kalikopan, nan ngano nga dili nimo sulayan pagsulbad ang parehas nga problema sa pag-uswag sa Android gamit kini ...
Alang sa mga wala nahibal-an kung unsa ang Docker, aron ibutang kini sa yano, kini usa ka himan alang sa paghimo sa gitawag nga. "mga sudlanan" nga adunay gamay nga OS kernel ug ang gikinahanglan nga set sa software nga mahimo natong i-deploy bisan asa nato gusto, samtang gipreserbar ang palibot. Kung unsa gyud ang naa sa among sudlanan gitino sa Dockerfile, nga gitigum sa usa ka imahe nga mahimong i-launch bisan asa ug adunay mga kabtangan sa idempotency.
Ang proseso sa pag-instalar ug mga sukaranan sa Docker hingpit nga gihulagway sa iyang
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ 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"
Gitipigan namon kini sa folder gamit ang among proyekto sa Android ug gisugdan ang pagtukod sa sudlanan nga adunay mando
docker build -t android-build:5.4-28-27 .
Parameter -t nagtino sa tag o ngalan sa among sudlanan, nga kasagaran naglangkob sa iyang ngalan ug bersyon. Sa among kaso, gitawag namon kini nga android-build ug sa bersyon among gipakita ang usa ka hugpong sa mga bersyon sa gradle, android-sdk ug platform-tools. Sa umaabot, mas sayon ββalang kanato ang pagpangita sa imahe nga atong gikinahanglan pinaagi sa ngalan gamit kini nga "bersyon".
Human makompleto ang asembliya, mahimo namong gamiton ang among imahe sa lokal, mahimo namon kini i-download gamit ang mando pagduso sa pantalan sa usa ka publiko o pribado nga tipiganan sa imahe aron ma-download kini sa ubang mga makina.
Isip usa ka pananglitan, maghimo kita usa ka proyekto sa lokal. Aron mahimo kini, sa folder nga adunay proyekto, pagdagan ang mando
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
Atong hisgotan kon unsay kahulogan niini:
docker run - ang mando sa paglansad sa imahe mismo
-ako β nagpasabot nga human mohunong ang sudlanan, tangtangon niini ang tanan nga nabuhat sa panahon sa iyang kinabuhi
-v "$PWD":/home/gradle/ - gi-mount ang kasamtangan nga folder sa among proyekto sa Android sa sulud sa sulud nga sulud sa sulud / balay / gradle /
-w /home/gradle - nagtino sa nagtrabaho nga direktoryo sa sudlanan
android-pagtukod: 5.4.1-28-27 β ang ngalan sa among sudlanan nga among nakolekta
gradle assembleDebug β ang aktuwal nga assembly team nga nag-assemble sa among proyekto
Kung maayo ang tanan, pagkahuman sa pila ka segundo / minuto makita nimo sa imong screen ang usa ka butang nga sama PAGTUKOD NGA MALAMPUSON sa 8m 3s! Ug ang app/build/output/apk folder maglangkob sa gitigom nga aplikasyon.
Mahimo nimong buhaton ang ubang mga buluhaton sa gradle sa parehas nga paagi - susihon ang proyekto, pagdagan ang mga pagsulay, ug uban pa. Ang nag-unang bentaha mao nga kung kinahanglan namon nga tukuron ang proyekto sa bisan unsang ubang makina, dili kami kinahanglan mabalaka bahin sa pag-install sa tibuuk nga palibot ug kini igo na aron ma-download ang kinahanglan nga imahe ug ipadagan ang pagtukod niini.
Ang sudlanan wala magtipig bisan unsang mga pagbag-o, ug ang matag asembliya gilansad gikan sa wala, nga, sa usa ka bahin, naggarantiya sa identidad sa asembliya bisan diin man kini gilansad, sa laing bahin, sa matag higayon nga kinahanglan nimo nga i-download ang tanan nga mga dependency. ug pag-compile sa tanan nga code pag-usab, ug kini usahay magkinahanglan og daghang panahon. Busa, dugang sa naandan nga "bugnaw" nga pagsugod, kami adunay kapilian sa pagsugod sa pagtukod samtang nagtipig sa gitawag nga. "cache", diin among gitipigan ang ~/.gradle folder pinaagi lamang sa pagkopya niini ngadto sa working folder sa proyekto, ug sa sinugdanan sa sunod nga pagtukod ibalik namo kini. Gibalhin namon ang tanan nga mga pamaagi sa pagkopya sa lainlaing mga script ug ang mando sa paglansad mismo nagsugod nga ingon niini
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"
Ingon usa ka sangputanan, ang among kasagaran nga oras sa pagtukod sa proyekto gikunhuran sa makadaghang higayon (depende sa gidaghanon sa mga dependency sa proyekto, apan ang kasagaran nga proyekto sa ingon nagsugod sa pag-assemble sa 1 minuto imbis nga 5 minuto).
Kining tanan, siyempre, makatarunganon lamang kung ikaw adunay imong kaugalingon nga internal nga CI / CD server, nga imong gisuportahan ang imong kaugalingon. Apan karon adunay daghang mga serbisyo sa panganod diin ang tanan nga kini nga mga problema nasulbad ug dili ka kinahanglan mabalaka bahin niini, ug ang kinahanglan nga mga kabtangan sa asembliya mahimo usab nga ipiho sa mga setting sa proyekto.
Ang mga rehistradong tiggamit lamang ang makaapil sa survey.
Gitago ba nimo ang imong CI/CD nga sistema sa sulod o naggamit ug serbisyo sa ikatulo nga partido?
-
Gigamit namon ang usa ka internal nga server
-
Gigamit namo ang serbisyo sa gawas
-
Dili mi mogamit ug CI/CD
-
Ang uban
42 ka tiggamit ang miboto. 16 ka tiggamit ang nag-abstain.
Source: www.habr.com