Paunenge uchigadzira purojekiti yepuratifomu yeAroid, kunyangwe idiki, munguva pfupi kana gare gare unofanirwa kutarisana nenharaunda yekusimudzira. Pamusoro peiyo Android SDK, zvinodikanwa kuve neiyo yazvino vhezheni yeKotlin, Gradle, chikuva-zvishandiso, kuvaka-zvishandiso. Uye kana pamushini wemugadziri zvese izvi zvinotsamira zvakagadziriswa kusvika pamwero mukuru uchishandisa iyo Android Studio IDE, ipapo paCI / CD server yega yega inogona kushanduka kuita musoro. Uye kana mukuvandudza webhu Docker yave mhinduro yakajairwa kudambudziko renharaunda, saka wadii kuedza kugadzirisa dambudziko rakafanana mukusimudzira Android uchiishandisa ...
Kune avo vasingazive kuti Docker chii, kutaura zviri nyore, chishandiso chekugadzira icho chinonzi. "midziyo" ine shoma OS kernel uye inodiwa seti yesoftware yatinogona kuendesa chero kwatinoda, tichichengetedza nharaunda. Chii chaizvo chinenge chiri mumudziyo wedu chinotemerwa muDockerfile, iyo inobva yaunganidzwa kuita mufananidzo unogona kuvhurwa chero kupi uye une idempotency zvivakwa.
Iyo yekumisikidza maitiro uye zvekutanga zveDocker zvinotsanangurwa zvakakwana mune yake
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ 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"
Isu tinoichengeta mufolda neyedu Android purojekiti uye tanga kuvaka mudziyo nemirairo
docker build -t android-build:5.4-28-27 .
Parameter -t inotsanangura tag kana zita remudziyo wedu, uyo kazhinji une zita rayo neshanduro. Mune yedu, takaidaidza kuti android-build uye mushanduro takaratidza seti yeshanduro yegradle, android-sdk uye platform-zvishandiso. Mune ramangwana, zvichava nyore kwatiri kutsvaga mufananidzo watinoda nemazita tichishandisa iyi "vhezheni".
Mushure mekunge gungano rapera, tinogona kushandisa mufananidzo wedu munharaunda, tinogona kuudhawunirodha nemurairo docker push kune yeruzhinji kana yakavanzika mufananidzo repository kuti utore kune mamwe machina.
Semuenzaniso, ngativake chirongwa munharaunda. Kuti uite izvi, mune iyo folda ine purojekiti, mhanyisa murairo
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
Ngatione zvazvinoreva:
docker runomhanya - iwo mufananidzo wekutanga kuraira pachako
-rm - zvinoreva kuti kana mudziyo wamira, unodzima zvese zvakaitwa mukati mehupenyu hwayo
-v "$PWD":/home/gradle/ - inoisa iyo yazvino folda ne yedu Android purojekiti mune yemukati mudziyo dhairekitori / imba / gradle/
-w /home/gradle - inotsanangura dhairekitori rekushanda remudziyo
android-kuvaka:5.4.1-28-27 β zita remudziyo wedu watakaunganidza
gradle assembleDebug - timu chaiyo yegungano inounganidza chirongwa chedu
Kana zvese zvikafamba zvakanaka, mumasekondi mashoma / maminetsi iwe uchaona pane yako skrini chinhu chakadai GADZIRA KUBUDIRIRA mu8m 3s! Uye iyo app/build/output/apk folda ichave neyakaungana application.
Iwe unogona kuita mamwe mabasa e gradle nenzira yakafanana - tarisa purojekiti, mhanyisa bvunzo, nezvimwe. Kubatsira kukuru ndekwekuti kana tichida kuvaka purojekiti pane chero imwe muchina, isu hatifanire kunetseka nekuisa iyo yese nharaunda uye ichave yakakwana kurodha mufananidzo unodiwa uye kumhanya kuvaka mairi.
Chigaba chacho hachichengete chero shanduko, uye gungano rega rega rinotangwa kubva pakutanga, iro, kune rumwe rutivi, rinovimbisa kuzivikanwa kwegungano zvisinei nekwarinotangwa, kune rumwe rutivi, nguva imwe neimwe yaunofanirwa kurodha zvese zvinotsamira. uye unganidza kodhi yese zvakare, uye izvi dzimwe nguva zvinogona kutora nguva yakakosha. Naizvozvo, kuwedzera kune yakajairwa "inotonhora" kutanga, isu tine sarudzo yekutanga kuvaka tichichengetedza izvo zvinodaidzwa. "cache", kwatinochengetedza ~/.gradle folda nekungoikopa kune purojekiti yekushanda kwepurojekiti, uye pakutanga kwekuvaka kunotevera tinoidzorera zvakare. Isu takafambisa maitiro ese ekukopa mune akasiyana script uye yekutanga kuraira pachayo yakatanga kutaridzika seizvi
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"
Nekuda kweizvozvo, avhareji yedu yenguva yekuvaka purojekiti yakaderedzwa kakawanda (zvichienderana nehuwandu hwekutsamira pane purojekiti, asi purojekiti yepakati saka yakatanga kuunganidzwa muminiti 1 pane maminitsi mashanu).
Zvese izvi, hongu, zvine musoro chete kana uine yako yemukati CI/CD server, yaunozvitsigira iwe pachako. Asi ikozvino kune akawanda masevhisi emafu umo matambudziko ese aya anogadziriswa uye haufanirwe kunetsekana nazvo, uye iyo inodiwa yekuunganidza zvivakwa inogona zvakare kutsanangurwa muzvirongwa zveprojekiti.
Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo.
Iwe unochengeta yako CI/CD system mumba kana kushandisa wechitatu bato sevhisi?
-
Isu tinoshandisa sevha yemukati
-
Isu tinoshandisa sevhisi yekunze
-
Isu hatishandise CI/CD
-
Zvimwe
42 vashandisi vakavhota. 16 vashandisi vakaramba.
Source: www.habr.com