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
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ 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.
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