Markaad samaynayso mashruuc loogu talagalay madal Android, xitaa kan ugu yar, hadhow ama hadhow waa inaad wax ka qabataa deegaanka horumarka. Marka lagu daro Android SDK, waxaa lagama maarmaan ah in la haysto nuqulkii ugu dambeeyay ee Kotlin, Gradle, aaladaha-platform, qalab-dhisidda. Oo haddii mashiinka horumariyaha dhammaan waxyaalahan ku tiirsanaanta lagu xalliyo si aad u weyn iyadoo la adeegsanayo Android Studio IDE, markaa server-ka CI / CD cusbooneysiin kasta wuxuu isu rogi karaa madax xanuun. Iyo haddii horumarinta webka Docker uu noqday xalka caadiga ah ee dhibaatada deegaanka, markaa maxaad isku dayin inaad xalliso dhibaato la mid ah horumarinta Android adoo isticmaalaya ...
Kuwa aan garanayn waxa Docker yahay, si fudud loo dhigo, waa qalab lagu abuurayo waxa loogu yeero. "konteenarada" oo ka kooban kernel OS ugu yar iyo qalabka software ee lagama maarmaanka ah ee aan geyn karno meel kasta oo aan rabno, anagoo ilaalinayna deegaanka. Waxa saxda ah ee ku jiri doona weelkayaga waxaa lagu go'aamiyaa Dockerfile, kaas oo markaa la isugu keeno sawir la bilaabi karo meel kasta oo leh astaamo awood leh.
Habka rakibidda iyo aasaaska Docker ayaa si fiican loogu sharraxay kiisa
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ 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"
Waxaan ku keydineynaa galka mashruucayaga Android oo aan bilowno dhisida weelka amarka
docker build -t android-build:5.4-28-27 .
Xildhibaan -t qeexaa summada ama magaca weelkayaga, kaas oo inta badan ka kooban magaciisa iyo nooca. Xaaladeena, waxaan ugu yeernay android-build iyo nooca waxaan ku tilmaamnay noocyo kala duwan oo gradle ah, android-sdk iyo aaladaha aaladaha. Mustaqbalka, way noo fududaan doontaa inaan raadino sawirka aan u baahanahay magaca annaga oo adeegsanayna "nooca".
Ka dib marka shirku dhamaado, waxaan u isticmaali karnaa sawirkayaga gudaha, waxaan ku soo dejisan karnaa amarka docker riix kaydka sawirka guud ama gaarka ah si loogu soo dejiyo mashiinada kale.
Tusaale ahaan, aynu mashruuc ka dhisno gudaha. Si tan loo sameeyo, gal galka mashruuca, ku socodsii amarka
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
Aynu ogaano waxa ay ka dhigan tahay:
docker run - amarka furitaanka sawirka laftiisa
-rm - macnaheedu waa in weelku istaago ka dib, uu tirtiro wax kasta oo la abuuray intii uu noolaa
-v "$PWD":/home/gradle/ - waxay ku dhejisaa faylka hadda jira mashruucayaga Android galka weelka gudaha / guriga / gradle /
-w /guriga/gradle - wuxuu qeexayaa tusaha shaqada ee weelka
android-dhis:5.4.1-28-27 - magaca weelkayaga oo aan soo ururinay
dib u habeynta Debug - kooxda dhabta ah ee shirka ee ururisa mashruucayaga
Haddii wax waliba si fiican u socdaan, markaa laba ilbiriqsi / daqiiqo gudahood waxaad ku arki doontaa shaashaddaada wax la mid ah KU GUULEYSTO 8m 3s! Iyo galka app/build/output/apk waxa uu ka koobnaan doona arjiga la isu keenay.
Waxaad si la mid ah u qaban kartaa hawlaha kale ee gradle - hubi mashruuca, tijaabi imtixaanada, iwm. Faa'iidada ugu weyn ayaa ah in haddii aan u baahanahay in aan ku dhisno mashruuca mashiinka kale, uma baahnid in aan ka walwalno rakibidda deegaanka oo dhan waxayna ku filan tahay in la soo dejiyo sawirka lagama maarmaanka ah oo aan ku shaqeyno dhismaha dhexdiisa.
Weelku ma kaydin wax isbeddel ah, oo shir kastaa waa laga soo bilaabay meel eber ah, taas oo, dhinac ka mid ah, dammaanad qaadaya aqoonsiga golaha iyada oo aan loo eegin meesha laga bilaabay, dhinaca kale, mar kasta oo ay tahay inaad soo dejiso dhammaan waxyaalaha ku tiirsan. oo mar kale soo ururi dhammaan koodka, tanina waxay mararka qaarkood qaadan kartaa waqti muhiim ah. Sidaa darteed, marka lagu daro bilawga caadiga ah ee "qabow", waxaan haysanaa ikhtiyaarka ah inaan bilowno dhismaha iyadoo la badbaadinayo waxa loogu yeero. "cache", halkaas oo aan ku badbaadino ~/ .gradle galka annagoo si fudud ugu koobiyna galka shaqada ee mashruuca, bilawga dhismaha soo socdana waan ku celinaynaa. Waxaan u rarnay dhammaan habraacyada nuqul ka mid ah qoraallo gaar ah iyo amarka soo-bandhigidda laftiisa ayaa bilaabay inuu sidan u ekaado
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"
Natiijo ahaan, celceliska wakhtiga dhismaha mashruuca ayaa la dhimay dhowr jeer (waxay kuxirantahay tirada ku tiirsanaanta mashruuca, laakiin celceliska mashruuca ayaa sidaas bilaabay in la isku keeno 1 daqiiqo halkii 5 daqiiqo).
Waxaas oo dhan, dabcan, waxay macno samaynayaan kaliya haddii aad leedahay server-ka CI/CD ee gudaha, kaas oo aad adigu taageerto naftaada. Laakiin hadda waxaa jira adeegyo badan oo daruuro ah kuwaas oo dhammaan dhibaatooyinkan la xalliyo oo aanad ka welwelin, iyo guryaha lagama maarmaanka ah ayaa sidoo kale lagu qeexi karaa goobaha mashruuca.
Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka.
Ma ku haysaa nidaamka CI/CD-gaaga gudaha guriga ama ma isticmaasha adeeg dhinac saddexaad ah?
-
Waxaan isticmaalnaa server gudaha ah
-
Waxaan isticmaalnaa adeeg dibadda ah
-
Ma isticmaalno CI/CD
-
Kuwa kale
42 isticmaale ayaa u codeeyay. 16 isticmaale ayaa ka aamusay.
Source: www.habr.com