Kupanga pulojekiti ya Android mumtsuko wa Docker

Mukamapanga pulojekiti ya nsanja ya Android, ngakhale yaying'ono kwambiri, posachedwa muyenera kuthana ndi chitukuko. Kuphatikiza pa Android SDK, ndikofunikira kukhala ndi mtundu waposachedwa wa Kotlin, Gradle, nsanja-zida, zida zomangira. Ndipo ngati pamakina opangira zodalira zonsezi zimathetsedwa mokulirapo pogwiritsa ntchito Android Studio IDE, ndiye pa seva ya CI / CD, zosintha zilizonse zimatha kukhala mutu. Ndipo ngati pakukula kwa intaneti, Docker yakhala njira yothetsera vuto la chilengedwe, bwanji osayesa kuthetsa vuto lomwelo ndi chitukuko cha Android ...

Kwa iwo omwe sadziwa kuti Docker ndi chiyani - ngati ndizosavuta, ndiye kuti ichi ndi chida chopangira zomwe zimatchedwa. "Zotengera" zomwe zili ndi OS kernel yocheperako komanso pulogalamu yofunikira yomwe titha kuyika kulikonse komwe tikufuna, ndikusunga chilengedwe. Zomwe zidzakhale m'chidebe chathu zimatsimikiziridwa mu Dockerfile, yomwe imasonkhanitsidwa kukhala chithunzi chomwe chitha kukhazikitsidwa kulikonse ndipo chimakhala ndi katundu wa idempotency.

Njira yokhazikitsira ndi zoyambira za Docker zikufotokozedwa bwino zake webusaitiyi. Chifukwa chake, kuyang'ana patsogolo pang'ono, tili ndi Dockerfile yotere

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

Timasunga ku chikwatu ndi polojekiti yathu ya Android ndikuyamba kumanga chidebecho ndi lamulo

docker build -t android-build:5.4-28-27 .

chizindikiro -t imayika chizindikiro kapena dzina la chidebe chathu, chomwe nthawi zambiri chimakhala ndi dzina lake ndi mtundu wake. Kwa ife, tidayitcha kuti android-build ndipo mu mtunduwo tidatchula mitundu ya gradle, android-sdk ndi nsanja ya zida. M'tsogolomu, zidzakhala zosavuta kuti tifufuze chithunzi chomwe tikufuna ndi dzina pogwiritsa ntchito "mtundu" wotere.

Pambuyo pakumangako, titha kugwiritsa ntchito chithunzi chathu kwanuko, titha kutsitsa ndi lamulo kukankha docker kumalo osungira zithunzi zapagulu kapena zachinsinsi kuti mutsitse kumakina ena.

Mwachitsanzo, tiyeni tipange pulojekiti yakumaloko. Kuti muchite izi, mu chikwatu cha polojekiti, yendetsani lamulo

docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug

Tiyeni tione tanthauzo lake:

docker akuthamanga - lamulo loyambitsa chithunzi lokha
-rm - zikutanthauza kuti atayimitsa chidebecho, amachotsa zonse zomwe zidapangidwa pamoyo wake
-v "$PWD":/home/gradle/ - imayika chikwatu chomwe chilipo ndi pulojekiti yathu ya Android kupita ku chikwatu chamkati /nyumba / gradle/
-w /home/gradle - imakhazikitsa chikwatu chogwirira ntchito cha chidebecho
android-build: 5.4.1-28-27 - dzina la chidebe chathu chomwe tatolera
gradle assembleDebug - gulu lomanga lokha, lomwe limasonkhanitsa polojekiti yathu

Ngati zonse zikuyenda bwino, pambuyo pa masekondi / mphindi zingapo mudzawona zina PANGANI BWINO mu 8m 3s! Ndipo mufoda ya app/build/output/apk padzakhala ntchito yosonkhanitsidwa.

Momwemonso, mutha kuchita ntchito zina zapang'onopang'ono - onani pulojekiti, kuyesa mayeso, ndi zina. Ubwino waukulu ndikuti ngati tikufuna kumanga pulojekiti pamakina ena aliwonse, sitiyenera kudandaula za kukhazikitsa chilengedwe chonse, ndipo zidzakhala zokwanira kukopera chithunzi chofunikira ndikuyendetsa kumangamo.

Chidebecho sichisunga zosintha zilizonse, ndipo msonkhano uliwonse umayambika, womwe, kumbali imodzi, umatsimikizira kuti msonkhanowo ndi ndani mosasamala kanthu komwe wayambika, kumbali ina, nthawi iliyonse yomwe muyenera kutsitsa zodalira zonse. ndikuphatikizanso ma code onse, ndipo izi zitha kutenga nthawi yayitali. Choncho, kuwonjezera pa chiyambi "chozizira" chokhazikika, tili ndi mwayi woyambitsa msonkhano ndikusunga zomwe zimatchedwa. "cache", komwe timasunga chikwatu cha ~/.gradle mwa kungochikopera ku chikwatu chogwira ntchito cha polojekitiyi, ndipo kumayambiriro kwa chomanga chotsatira timachibwezeretsanso. Tinasuntha njira zonse zokopera m'malemba osiyana ndipo lamulo loyambitsa lidayamba kuwoneka chonchi

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"

Chotsatira chake, pafupifupi nthawi yomanga pulojekiti inachepetsedwa kangapo (malingana ndi chiwerengero cha kudalira pa polojekitiyi, koma polojekitiyi inayamba kumangidwa mu 1 miniti m'malo mwa mphindi 5).

Zonsezi zokha zimakhala zomveka ngati muli ndi seva yanu yamkati ya CI / CD, yomwe inuyo mumathandizira. Koma tsopano pali mautumiki ambiri amtambo omwe mavuto onsewa amathetsedwa ndipo simuyenera kudandaula nazo, ndipo zofunikira zomangamanga zingathenso kufotokozedwa muzokonzekera polojekiti.

Ogwiritsa ntchito olembetsedwa okha ndi omwe angatenge nawo gawo pa kafukufukuyu. Lowani muakauntichonde.

Kodi mumasunga dongosolo lanu la CI/CD mkati kapena mumagwiritsa ntchito gulu lachitatu

  • Kugwiritsa ntchito seva yamkati

  • Kugwiritsa ntchito ntchito zakunja

  • Sitigwiritsa ntchito CI/CD

  • Zina

Ogwiritsa ntchito 42 adavota. Ogwiritsa 16 adakana.

Source: www.habr.com

Kuwonjezera ndemanga