Manangana tetikasa Android ao anaty container Docker

Rehefa mamolavola tetikasa ho an'ny sehatra Android, na dia kely aza, na ho ela na ho haingana dia tsy maintsy miatrika ny tontolo fampandrosoana ianao. Ho fanampin'ny Android SDK, ilaina ny manana ny kinova farany an'ny Kotlin, Gradle, platform-tools, build-tools. Ary raha ao amin'ny masinin'ny mpamorona dia voavaha amin'ny ampahany betsaka kokoa amin'ny fampiasana ny Android Studio IDE ireo fiankinan-doha rehetra ireo, dia amin'ny mpizara CI/CD dia mety hivadika ho aretin'andoha ny fanavaozana rehetra. Ary raha amin'ny fampivoarana tranonkala Docker dia lasa vahaolana mahazatra amin'ny olan'ny tontolo iainana, maninona raha manandrana mamaha olana mitovy amin'izany amin'ny fampandrosoana Android amin'ny fampiasana azy...

Ho an'ireo izay tsy mahafantatra ny atao hoe Docker, raha tsorina dia fitaovana hamoronana ilay antsoina hoe. β€œContainer” izay misy kernel OS kely indrindra sy ireo rindrambaiko ilaina izay azontsika apetraka na aiza na aiza tiantsika, sady mitahiry ny tontolo iainana. Inona marina no ho ao anatin'ny fitahirizanay dia voafaritra ao amin'ny Dockerfile, izay atambatra ho sary azo alefa na aiza na aiza ary manana fananana idempotency.

Ny dingana fametrahana sy ny fototry ny Docker dia voafaritra tsara ao amin'ny azy tranonkala ofisialy. Noho izany, mijery mialoha kely, ity no Dockerfile niafaranay:

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

Tehirizinay ao amin'ny lahatahiry miaraka amin'ny tetikasa Android izany ary manomboka manangana ilay container miaraka amin'ny baiko

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

fikirana -t mamaritra ny mari-pamantarana na ny anaran'ny fitoeranay, izay matetika ahitana ny anarany sy ny dikan-teny. Amin'ity tranga ity, antsoina hoe android-build izy io ary ao amin'ny dikan-teny dia nanondro andiana dikan-teny gradle, android-sdk ary platform-tools. Amin'ny ho avy dia ho mora kokoa amintsika ny hikaroka ny sary ilaintsika amin'ny anarana amin'ny fampiasana ity "version".

Rehefa vita ny fivoriambe dia afaka mampiasa ny sarintsika eo an-toerana isika, afaka misintona azy amin'ny baiko fanosehana docker mankany amin'ny fitahirizana sary ho an'ny daholobe na tsy miankina mba hisintona azy amin'ny milina hafa.

Ohatra, andao hanangana tetikasa eto an-toerana. Mba hanaovana izany, ao amin'ny lahatahiry misy ny tetikasa, araho ny baiko

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

Andeha hojerentsika ny dikan'izany:

docker run - ny baiko fandefasana sary mihitsy
-rm β€” midika fa rehefa mijanona ny kaontenera dia mamafa izay rehetra noforoniny nandritra ny androm-piainany
-v "$PWD":/home/gradle/ - Mametraka ny lahatahiry ankehitriny miaraka amin'ny tetikasa Android ataontsika ao amin'ny lahatahiry anatiny / trano / gradle /
-w /home/gradle - mamaritra ny lahatahiry miasa amin'ny container
android-build: 5.4.1-28-27 - ny anaran'ny fitoeranay izay nangoninay
gradle assembleDebug β€” ny tena ekipa fivoriambe izay manangona ny tetikasantsika

Raha mandeha tsara ny zava-drehetra, dia ao anatin'ny segondra vitsy/minitra dia ho hitanao eo amin'ny efijery misy zavatra toy izany MANANGANA FAHOMBIANA ao anatin'ny 8m 3s! Ary ny fampirimana app/build/output/apk dia ahitana ny rindranasa tafavory.

Azonao atao ny manao asa gradle hafa amin'ny fomba mitovy - jereo ny tetikasa, manao fitsapana, sns. Ny tombony lehibe indrindra dia ny hoe raha mila manangana ny tetikasa amin'ny milina hafa isika, dia tsy mila manahy momba ny fametrahana ny tontolo iainana manontolo ary ho ampy ny maka ny sary ilaina ary mampandeha ny fananganana ao.

Ny kaontenera dia tsy mitahiry fiovana, ary ny fivoriambe tsirairay dia natomboka hatrany am-boalohany, izay, amin'ny lafiny iray, dia miantoka ny maha-izy azy ny fivoriambe na aiza na aiza alehany, amin'ny lafiny iray, isaky ny mila misintona ny fiankinan-doha rehetra ianao ary manangona indray ny kaody rehetra, ary mety haka fotoana be izany indraindray. Noho izany, ho fanampin'ny fanombohana "mangatsiaka" mahazatra, dia manana safidy isika hanomboka ny fananganana rehefa mamonjy ilay antsoina hoe. "cache", izay mitahiry ny fampirimana ~/.gradle amin'ny alΓ lan'ny kopia azy fotsiny amin'ny lahatahiry fiasan'ny tetikasa, ary amin'ny fiandohan'ny fananganana manaraka dia mamerina azy io. Nafindranay tao anaty script misaraka ny fomba fanaovana kopia rehetra ary nanomboka nitovy tamin'izany ny baiko fandefasana

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"

Vokatr'izany dia nihena imbetsaka ny fotoana fanamboarana ny tetikasanay (miankina amin'ny isan'ny miankina amin'ny tetikasa, fa ny tetikasa antonony dia nanomboka nanangona tao anatin'ny 1 minitra fa tsy 5 minitra).

Izany rehetra izany, mazava ho azy, dia mitombina ihany raha manana mpizara CI/CD anatiny ianao, izay tohananao. Saingy ankehitriny dia misy serivisy rahona maro izay voavaha ireo olana rehetra ireo ary tsy mila manahy momba izany ianao, ary ny fananana fivoriambe ilaina dia azo faritana ao amin'ny sehatry ny tetikasa.

Ireo mpampiasa voasoratra anarana ihany no afaka mandray anjara amin'ny fanadihadiana. HiditraPlease.

Mitazona ny rafitra CI/CD ao an-trano ve ianao na mampiasa serivisy antoko fahatelo?

  • Mampiasa mpizara anatiny izahay

  • Mampiasa serivisy ivelany izahay

  • Tsy mampiasa CI/CD izahay

  • hafa

Mpampiasa 42 no nifidy. Mpampiasa 16 no nifady.

Source: www.habr.com

Add a comment