Kuvaka chirongwa cheAroid mumudziyo weDocker

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 website yepamutemo. Naizvozvo, tichitarisa kumberi zvishoma, iyi ndiyo Dockerfile yatakapedzisira nayo:

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

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

Voeg