Fausia se poloketi Android i totonu o se pusa Docker

Pe a atiaʻe se poloketi mo le Android platform, e oʻo lava i le laʻititi laʻititi, vave pe mulimuli ane e tatau ona e feagai ma le siosiomaga atinaʻe. I le faaopoopo atu i le Android SDK, e tatau ona i ai le lomiga lata mai o Kotlin, Gradle, platform-tools, build-tools. Ma afai i luga o le masini a le atinaʻe o nei faʻalagolago uma e foia i se tulaga sili atu i le faʻaaogaina o le Android Studio IDE, ona i luga o le CI / CD server o faʻafouga taʻitasi e mafai ona liu tiga. Ma afai i le atinaʻeina o le upega tafaʻilagi ua avea Docker ma fofo masani i le faʻafitauli o le siosiomaga, aisea la e te le taumafai ai e foia se faʻafitauli tutusa i le atinaʻeina o Android e faʻaaoga ai ...

Mo i latou e le iloa poʻo le a le Docker, e faʻafaigofie, o se meafaigaluega mo le fatuina o le mea e taʻua. "containers" o loʻo i ai se fatu OS laʻititi ma le seti talafeagai o polokalama e mafai ona tatou faʻapipiʻiina i soʻo se mea tatou te mananaʻo ai, aʻo faʻasaoina le siosiomaga. O le a tonu lava le mea o le ai ai i totonu o la matou koneteina e faʻamoemoeina i le Dockerfile, ona faʻapipiʻiina lea i se ata e mafai ona faʻalauiloa i soʻo se mea ma e iai ni meatotino faʻaleagaina.

O le faʻatulagaga faʻapipiʻi ma faʻavae o Docker o loʻo faʻamatalaina lelei i lana faʻapitonuʻu aloaia. O le mea lea, vaʻai i luma laʻititi, o le Dockerfile lea na matou faʻamutaina:

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

Matou te teuina i totonu o le pusa ma la matou poloketi Android ma amata fausia le atigipusa ma le poloaiga

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

Parakalafa -t faʻamaonia le pine poʻo le igoa o la matou koneteina, lea e masani ona aofia ai lona igoa ma lona faʻamatalaga. I la matou tulaga, na matou taʻua o le Android-build ma i le faʻasologa na matou faʻaalia ai se seti o faʻasologa o gradle, android-sdk ma platform-tools. I le lumanaʻi, o le a faigofie mo i tatou ona suʻeina le ata tatou te manaʻomia ile igoa e faʻaaoga ai lenei "version".

A maeʻa le faʻapotopotoga, e mafai ona matou faʻaogaina la matou ata i le lotoifale, e mafai ona matou siiina mai i le poloaiga tu'i fa'atau i se faleteuoloa ata fa'alaua'itele pe tuma'oti e la'u mai ai i isi masini.

Mo se faʻataʻitaʻiga, seʻi o tatou fausia se poloketi i le lotoifale. Ina ia faia lenei mea, i totonu o le faila ma le poloketi, faʻatautaia le poloaiga

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

Se'i tatou va'ai po'o le a lona uiga:

toso tamoe - o le fa'atonuga o le fa'alauiloaina o ata lava ia
-rm - o lona uiga pe a uma le koneteina, e tape mea uma na faia i lona olaga
-v "$PWD":/home/gradle/ - faʻapipiʻi le faila o loʻo i ai nei ma la matou poloketi Android i totonu o le pusa atigipusa / fale / gradle /
-w /home/gradle - fa'amaoti le tusi galue o le container
Android-fausia: 5.4.1-28-27 — le igoa o la matou koneteina na matou aoina
gradle assembleDebug - o le au faʻapotopotoga moni e faʻapipiʻi la matou poloketi

Afai e lelei mea uma, ona i ai lea i ni nai sekone / minute o le ae vaʻai i luga o lau lau se mea e pei o FAIA MANUIA ile 8m 3s! Ma o le app/build/output/apk folder o le a aofia ai le talosaga ua tuufaatasia.

E mafai ona e faia isi galuega gradle i se auala tutusa - siaki le poloketi, faʻataʻitaʻi suʻega, ma isi. O le aoga autu o le afai tatou te manaʻomia le fausiaina o le poloketi i luga o soʻo se isi masini, e le tatau ona tatou popole e uiga i le faʻapipiʻiina o le siosiomaga atoa ma o le a lava e sii mai ai le ata talafeagai ma faʻatautaia le fausiaina i totonu.

O le atigipusa e le teuina ni suiga, ma o faʻapotopotoga taʻitasi e faʻalauiloa mai le sasa, lea, i le tasi itu, e faʻamaonia le faʻamatalaga o le faʻapotopotoga e tusa lava po o fea e faʻalauiloa ai, i le isi itu, i taimi uma e te sii maia uma faʻalagolago. ma toe tuufaatasia uma le code, ma o nisi taimi e mafai ona umi se taimi. O le mea lea, i le faaopoopo atu i le masani "malulu" amata, o loʻo i ai le filifiliga e amata ai le fausiaina aʻo faʻasaoina le mea e taʻua. "cache", lea matou te faʻasaoina ai le ~ / .gradle faila i le na o le kopiina i le faila galue o le poloketi, ma i le amataga o le isi fale matou te toe faʻafoʻi i tua. Na matou faʻaogaina uma faiga kopi i ni tusitusiga eseese ma o le faʻatonuga o le faʻatonuga na amata ona foliga faʻapea

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"

O se taunuuga, na faʻaititia le tele o taimi o la matou poloketi (faʻalagolago i le numera o faʻalagolago i le poloketi, ae o le averesi o le poloketi na amata ona faʻapotopotoina i le 1 minute nai lo le 5 minute).

O nei mea uma, ioe, naʻo le talafeagai pe afai e iai sau lava CI / CD server i totonu, e te lagolagoina oe lava. Ae o le taimi nei o loʻo i ai le tele o auaunaga i le ao lea e foia uma ai nei faʻafitauli ma e le tatau ona e popole i ai, ma e mafai foi ona faʻamaonia mea faʻapitoa mo le faʻapotopotoga i le faʻatulagaina o galuega.

Na'o tagata fa'aigoaina e mafai ona auai i le su'esu'ega. Saini ese j, faʻamolemole.

E te teuina lau CI/CD system i totonu o le fale pe fa'aoga se isi au'aunaga?

  • Matou te faʻaaogaina se server i totonu

  • Matou te faʻaaogaina se auaunaga i fafo

  • Matou te le fa'aogaina CI/CD

  • Isi

42 tagata fa'aoga na palota. 16 tagata fa'aoga na le mafai.

puna: www.habr.com

Faaopoopo i ai se faamatalaga