Gina aikin Android a cikin akwati Docker

Lokacin haɓaka aiki don dandamali na Android, ko da mafi ƙanƙanta, ba dade ko ba dade dole ne ku magance yanayin ci gaba. Baya ga Android SDK, ya zama dole a sami sabon sigar Kotlin, Gradle, dandamali-kayan aiki, kayan aikin gini. Kuma idan akan na'ura mai haɓaka duk waɗannan abubuwan dogara an warware su zuwa mafi girma ta amfani da Android Studio IDE, to akan uwar garken CI / CD, kowane sabuntawa na iya juya zuwa ciwon kai. Kuma idan a cikin ci gaban yanar gizo, Docker ya zama daidaitaccen maganin matsalar muhalli, to me zai hana a yi ƙoƙarin magance irin wannan matsala tare da shi a cikin ci gaban Android ...

Ga wadanda ba su san abin da Docker yake ba - idan yana da sauƙi, to wannan kayan aiki ne don ƙirƙirar abin da ake kira. "Containers" wanda ke dauke da mafi ƙarancin kernel OS da madaidaicin saitin software waɗanda za mu iya tura duk inda muke so, yayin kiyaye muhalli. Abin da ainihin zai kasance a cikin kwandon mu an ƙaddara shi a cikin Dockerfile, wanda aka haɗa shi cikin hoto wanda za'a iya ƙaddamar da shi a ko'ina kuma yana da kaddarorin halayen.

Tsarin shigarwa da kayan yau da kullun na Docker an kwatanta su da kyau akan nasa official website. Saboda haka, duban gaba kadan, muna da irin wannan Dockerfile

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

Mun ajiye shi zuwa babban fayil tare da aikinmu na Android kuma mu fara gina akwati tare da umarni

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

Alamar -t yana saita alamar ko sunan kwandon mu, wanda yawanci ya ƙunshi sunansa da sigarsa. A cikin yanayinmu, mun kira shi android-build kuma a cikin sigar mun ƙayyade haɗin gradle, android-sdk da nau'ikan dandamali-tools. A nan gaba, zai kasance da sauƙi a gare mu don neman hoton da muke bukata da sunan ta amfani da irin wannan "version".

Bayan ginin ya wuce, za mu iya amfani da hotonmu a gida, za mu iya zazzage shi tare da umarni docker tura zuwa wurin ajiyar hoto na jama'a ko na sirri don zazzage shi zuwa wasu na'urori.

A matsayin misali, bari mu gina aikin gida. Don yin wannan, a cikin babban fayil ɗin aikin, gudanar da umarni

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

Bari mu gane abin da ake nufi:

Docker gudu - umarnin kaddamar da hoton kanta
-rm ba - yana nufin bayan dakatar da kwandon, yana goge duk wani abu da aka halitta a lokacin rayuwarsa
-v "$PWD":/gida/gradle/ - yana hawa babban fayil na yanzu tare da aikin mu na Android zuwa babban fayil na ciki / gida / gradle /
-w/gida/gradle - ya kafa kundin aiki na akwati
android-gina:5.4.1-28-27 - sunan kwandon mu da muka tattara
babban taroDebug - ƙungiyar ginin kanta, wanda ke haɗa aikin mu

Idan komai ya yi kyau, to bayan daƙiƙa biyu / mintuna za ku ga wani abu kamar haka GINA NASARA a cikin 8m 3s! Kuma a cikin babban fayil ɗin app/build/output/apk za a sami aikace-aikacen da aka haɗa.

Hakazalika, zaku iya yin wasu ayyukan gradle - duba aikin, gudanar da gwaje-gwaje, da sauransu. Babban fa'idar ita ce, idan muna buƙatar gina aikin akan kowace na'ura, ba ma buƙatar damuwa game da shigar da yanayin gabaɗaya, kuma zai isa don saukar da hoton da ya dace da gudanar da ginin a ciki.

Kwantena ba ta adana duk wani canje-canje ba, kuma ana ƙaddamar da kowane taro daga karce, wanda, a gefe guda, yana ba da tabbacin ainihin taron ko da kuwa inda aka kaddamar da shi, a gefe guda, duk lokacin da za a sauke duk abin dogara. kuma sake tattara duk lambar, kuma wannan na iya ɗaukar lokaci mai mahimmanci a wasu lokuta. Sabili da haka, ban da farawa na "sanyi" na yau da kullun, muna da zaɓi na fara taron yayin kiyaye abin da ake kira. "cache", inda muka ajiye babban fayil ~/.gradle ta hanyar kwafa shi kawai zuwa babban fayil ɗin aikin, kuma a farkon ginin na gaba za mu mayar da shi. Mun matsar da duk hanyoyin yin kwafin zuwa rubutun daban kuma umarnin ƙaddamar da kanta ya fara kama da wannan

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"

A sakamakon haka, matsakaicin lokacin gina aikin ya ragu sau da yawa (dangane da adadin dogara akan aikin, amma matsakaicin aikin ya fara ginawa a cikin minti 1 maimakon minti 5).

Duk wannan da kanta kawai yana da ma'ana idan kuna da sabar CI / CD ɗin ku, wanda ku da kanku ke tallafawa. Amma yanzu akwai sabis na girgije da yawa waɗanda aka warware duk waɗannan matsalolin kuma ba lallai ne ku damu da shi ba, kuma ana iya ƙayyade kaddarorin ginin da ake buƙata a cikin saitunan aikin.

Masu amfani da rajista kawai za su iya shiga cikin binciken. Shigadon Allah.

Kuna ajiye tsarin CI/CD ɗin ku a ciki ko amfani da sabis na ɓangare na uku

  • Amfani da uwar garken ciki

  • Amfani da sabis na waje

  • Ba ma amfani da CI/CD

  • Sauran

Masu amfani 42 sun kada kuri'a. Masu amfani 16 sun kaurace.

source: www.habr.com

Add a comment