Wakati wa kuendeleza mradi wa jukwaa la Android, hata ndogo zaidi, mapema au baadaye unapaswa kukabiliana na mazingira ya maendeleo. Mbali na SDK ya Android, ni muhimu kuwa na toleo la hivi karibuni la Kotlin, Gradle, zana za jukwaa, zana za kujenga. Na ikiwa kwenye mashine ya msanidi tegemezi hizi zote zinatatuliwa kwa kiwango kikubwa kwa kutumia Android Studio IDE, basi kwenye seva ya CI / CD, kila sasisho linaweza kugeuka kuwa maumivu ya kichwa. Na ikiwa katika ukuzaji wa wavuti, Docker imekuwa suluhisho la kawaida kwa shida ya mazingira, basi kwa nini usijaribu kutatua shida kama hiyo nayo katika ukuzaji wa Android ...
Kwa wale ambao hawajui Docker ni nini - ikiwa ni rahisi sana, basi hii ni zana ya kuunda kinachojulikana. "Vyombo" ambavyo vina kiwango cha chini cha OS kernel na seti muhimu ya programu ambayo tunaweza kupeleka popote tunapotaka, huku tukidumisha mazingira. Ni nini hasa kitakachokuwa kwenye kontena yetu imedhamiriwa katika Dockerfile, ambayo inakusanywa kwenye picha ambayo inaweza kuzinduliwa mahali popote na ina sifa za ufahamu.
Mchakato wa usakinishaji na misingi ya Docker imeelezewa kwa uzuri kwenye yake
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ 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"
Tunaihifadhi kwenye folda na mradi wetu wa Android na kuanza kuunda chombo kwa amri
docker build -t android-build:5.4-28-27 .
Parameter -t huweka lebo au jina la chombo chetu, ambacho kwa kawaida huwa na jina na toleo lake. Kwa upande wetu, tuliiita android-build na katika toleo tulibainisha mchanganyiko wa matoleo ya gradle, android-sdk na platform-tools. Katika siku zijazo, itakuwa rahisi kwetu kutafuta picha tunayohitaji kwa jina kwa kutumia "toleo" kama hilo.
Baada ya ujenzi kupita, tunaweza kutumia picha yetu ndani ya nchi, tunaweza kuipakua kwa amri kushinikiza docker kwa hifadhi ya picha ya umma au ya kibinafsi ili kuipakua kwa mashine zingine.
Kwa mfano, wacha tujenge mradi wa ndani. Ili kufanya hivyo, kwenye folda ya mradi, endesha amri
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
Wacha tujue maana yake:
docker kukimbia - amri ya uzinduzi wa picha yenyewe
-rm - ina maana kwamba baada ya kuacha chombo, inafuta kila kitu kilichoundwa wakati wa maisha yake
-v "$PWD":/home/gradle/ - huweka folda ya sasa na mradi wetu wa Android kwenye folda ya ndani ya chombo /home/gradle/
-w /home/gradle - huweka saraka ya kazi ya chombo
android-build:5.4.1-28-27 - jina la chombo chetu ambacho tumekusanya
polepole kukusanyikaDebug - timu ya kujenga yenyewe, ambayo inakusanya mradi wetu
Ikiwa kila kitu kitaenda vizuri, basi baada ya sekunde / dakika chache utaona kitu kama hicho JENGA KWA MAFANIKIO katika 8m 3s! Na katika folda ya programu/build/output/apk kutakuwa na programu iliyokusanyika.
Vile vile, unaweza kufanya kazi nyingine za taratibu - angalia mradi, fanya vipimo, nk. Faida kuu ni kwamba ikiwa tunahitaji kujenga mradi kwenye mashine nyingine yoyote, hatuna haja ya kuwa na wasiwasi juu ya kufunga mazingira yote, na itakuwa ya kutosha kupakua picha muhimu na kukimbia kujenga ndani yake.
Chombo hakihifadhi mabadiliko yoyote, na kila kusanyiko linazinduliwa kutoka mwanzo, ambayo, kwa upande mmoja, inahakikisha utambulisho wa kusanyiko bila kujali ni wapi ilizinduliwa, kwa upande mwingine, kila wakati unapaswa kupakua utegemezi wote. na kukusanya msimbo wote tena, na hii inaweza wakati mwingine kuchukua kiasi kikubwa cha muda. Kwa hiyo, pamoja na kuanza kwa kawaida "baridi", tuna fursa ya kuanzisha mkusanyiko wakati wa kudumisha kinachojulikana. "cache", ambapo tunahifadhi folda ya ~/.gradle kwa kuiga tu kwenye folda ya kazi ya mradi huo, na mwanzoni mwa ujenzi unaofuata tunarudisha nyuma. Tulihamisha taratibu zote za kunakili katika hati tofauti na amri ya uzinduzi yenyewe ilianza kuonekana kama hii
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"
Matokeo yake, muda wa wastani wa ujenzi wa mradi ulipunguzwa kwa mara kadhaa (kulingana na idadi ya utegemezi wa mradi huo, lakini mradi wa wastani hivyo ulianza kujenga kwa dakika 1 badala ya dakika 5).
Haya yote yenyewe yana mantiki tu ikiwa unayo seva yako ya ndani ya CI / CD, ambayo wewe mwenyewe unaunga mkono. Lakini sasa kuna huduma nyingi za wingu ambazo matatizo haya yote yanatatuliwa na huna wasiwasi juu yake, na mali muhimu ya kujenga inaweza pia kutajwa katika mipangilio ya mradi.
Watumiaji waliojiandikisha pekee ndio wanaweza kushiriki katika utafiti.
Je, unaweka mfumo wako wa CI/CD ndani au unatumia huduma ya watu wengine
-
Kutumia seva ya ndani
-
Kutumia huduma ya nje
-
Hatutumii CI/CD
-
P "SΠSΡRΡRΡRΞΌ
Watumiaji 42 walipiga kura. Watumiaji 16 walijizuia.
Chanzo: mapenzi.com