Ku dhisidda mashruuca Android ee weelka Docker

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 website-ka rasmiga ah. Sidaa darteed, in yar oo hore loo eego, kani waa Dockerfile-ka aan ku soo afjarnay:

# Π’.ΠΊ. основным инструмСнтом для сборки 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. Soo gal, soo dhawoow.

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

Add a comment