Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€

ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Android, Π΄ΠΎΡ€ΠΈ ΠΈ Π½Π°ΠΉ-малкият, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ късно трябва Π΄Π° сС справитС със срСдата Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°. Π’ допълнСниС към Android SDK Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ Π½Π°ΠΉ-Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Π½Π° Kotlin, Gradle, platform-tools, build-tools. И Π°ΠΊΠΎ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π°Ρ‚Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° всички Ρ‚Π΅Π·ΠΈ зависимости сС Ρ€Π΅ΡˆΠ°Π²Π°Ρ‚ Π² ΠΏΠΎ-голяма стСпСн с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Android Studio IDE, Ρ‚ΠΎΠ³Π°Π²Π° Π½Π° CI / CD ΡΡŠΡ€Π²ΡŠΡ€Π° всяка актуализация ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΠ΅. И Π°ΠΊΠΎ Π² ΡƒΠ΅Π± Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Docker сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π° Π² стандартното Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° със срСдата, Ρ‚ΠΎΠ³Π°Π²Π° Π·Π°Ρ‰ΠΎ Π½Π΅ ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π½Π΅Π³ΠΎ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Android ...

Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ знаят ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Docker – Π°ΠΊΠΎ Π΅ съвсСм Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π΅Π½, Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ инструмСнт Π·Π° създаванС Π½Π° Ρ‚.Π½Π°Ρ€. β€žΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈβ€œ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΎΡ‚ΠΎ ядро ​​на ОБ ΠΈ нСобходимия Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ софтуСр, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΠΎΠΆΠ΅Π»Π°Π΅ΠΌ, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌΠ΅ срСдата. Какво Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° Π² нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ сС опрСдСля Π² Dockerfile, ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° сС сглобява Π² ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС стартира навсякъдС ΠΈ ΠΈΠΌΠ° свойства Π½Π° идСмпотСнтност.

ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° инсталиранС ΠΈ основитС Π½Π° Docker са прСкрасно описани Π½Π° нСговия ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π΅Π½ сайт. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π³Π»Π΅Π΄Π°ΠΉΠΊΠΈ ΠΌΠ°Π»ΠΊΠΎ Π½Π°ΠΏΡ€Π΅Π΄, ΠΈΠΌΠ°ΠΌΠ΅ Ρ‚Π°ΠΊΡŠΠ² 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"

ЗаписвамС Π³ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° с нашия Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

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

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ -t Π·Π°Π΄Π°Π²Π° Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ ΠΈ вСрсия. Π’ нашия случай Π³ΠΎ Π½Π°Ρ€Π΅ΠΊΠΎΡ…ΠΌΠ΅ android-build ΠΈ във вСрсията посочихмС комбинация ΠΎΡ‚ gradle, android-sdk ΠΈ platform-tools вСрсии. Π’ Π±ΡŠΠ΄Π΅Ρ‰Π΅ Ρ‰Π΅ Π½ΠΈ бъдС ΠΏΠΎ-лСсно Π΄Π° Ρ‚ΡŠΡ€ΡΠΈΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, ΠΏΠΎ ΠΈΠΌΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ‚Π°ΠΊΠ°Π²Π° β€žΠ²Π΅Ρ€ΡΠΈΡβ€œ.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠΌ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π΄ΠΎΠΊΠ΅Ρ€ натисканС към ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎ ΠΈΠ»ΠΈ частно Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π½Π° изобраТСния, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈ машини.

ΠšΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π΅ΠΊΠ° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°

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

НСка Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°:

Π΄ΠΎΠΊΠ΅Ρ€ - самата ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° стартиранС Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ
-Ρ€ΠΌ - ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ слСд спиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚ΠΎΠΉ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ създадСно ΠΏΡ€Π΅Π· ΠΆΠΈΠ²ΠΎΡ‚Π° ΠΌΡƒ
-v "$PWD":/home/gradle/ - ΠΌΠΎΠ½Ρ‚ΠΈΡ€Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° с нашия Android ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ към Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° /home/gradle/
-w /home/gradle - Π·Π°Π΄Π°Π²Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° дирСктория Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
android-build: 5.4.1-28-27 - ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° нашия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ смС ΡΡŠΠ±Ρ€Π°Π»ΠΈ
gradle assembleDebug - самият строитСлСн Π΅ΠΊΠΈΠΏ, ΠΊΠΎΠΉΡ‚ΠΎ сглобява нашия ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Ако всичко Π²ΡŠΡ€Π²ΠΈ Π΄ΠΎΠ±Ρ€Π΅, слСд няколко сСкунди / ΠΌΠΈΠ½ΡƒΡ‚ΠΈ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π£Π‘ΠŸΠ•Π¨ΠΠž Π˜Π—Π“Π ΠΠ–Π”ΠΠΠ• Π·Π° 8m 3s! И Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° app/build/output/apk Ρ‰Π΅ ΠΈΠΌΠ° сглобСно ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° gradle - Π΄Π° провСряватС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ тСстовС ΠΈ Ρ‚.Π½. ΠžΡΠ½ΠΎΠ²Π½ΠΎΡ‚ΠΎ прСдимство Π΅, Ρ‡Π΅ Π°ΠΊΠΎ трябва Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Π΄Ρ€ΡƒΠ³Π° машина, Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС притСснявамС Π·Π° инсталиранСто Π½Π° цялата срСда, Π° Ρ‰Π΅ бъдС Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π΄Π° стартирамС компилацията Π² Π½Π΅Π³ΠΎ.

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π½Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ всяка сглобка сС стартира ΠΎΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ, ΠΎΡ‚ Π΅Π΄Π½Π° страна, Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° идСнтичността Π½Π° сглобката, нСзависимо къдС Π΅ стартирана, ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ трябва Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ всички зависимости ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°ΠΉΡ‚Π΅ цСлия ΠΊΠΎΠ΄ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ Ρ‚ΠΎΠ²Π° понякога ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡ‚Π½Π΅ΠΌΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π—Π°Ρ‚ΠΎΠ²Π°, освСн обичайния β€žΡΡ‚ΡƒΠ΄Π΅Π½β€œ старт, ΠΈΠΌΠ°ΠΌΠ΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° стартиранС Π½Π° ΠΌΠΎΠ½Ρ‚Π°ΠΆΠ° ΠΏΡ€ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ‚.Π½Π°Ρ€. "cache", ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° ~/.gradle, ΠΊΠ°Ρ‚ΠΎ просто я ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ Π² Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΈ Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° слСдващата компилация я Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. ΠŸΡ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ…ΠΌΠ΅ всички ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ Π·Π° ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ скриптовС ΠΈ самата ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° стартиранС Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°

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"

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° срСдното Π²Ρ€Π΅ΠΌΠ΅ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° бСшС Π½Π°ΠΌΠ°Π»Π΅Π½ΠΎ няколко ΠΏΡŠΡ‚ΠΈ (Π² зависимост ΠΎΡ‚ броя Π½Π° зависимоститС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½ΠΎ срСдният ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π°ΠΏΠΎΡ‡Π½Π° Π΄Π° сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° Π·Π° 1 ΠΌΠΈΠ½ΡƒΡ‚Π° вмСсто Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚ΠΈ).

Всичко Ρ‚ΠΎΠ²Π° само ΠΏΠΎ сСбС си ΠΈΠΌΠ° смисъл само Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ собствСн Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ CI / CD ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈΠ΅ сами ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅. Но сСга ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ услуги, Π² ΠΊΠΎΠΈΡ‚ΠΎ всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ са Ρ€Π΅ΡˆΠ΅Π½ΠΈ ΠΈ Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС притСсняватС Π·Π° Ρ‚ΠΎΠ²Π°, Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ свойства Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΡΡŠΡ‰ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ посочСни Π² настройкитС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ Π°Π½ΠΊΠ΅Ρ‚Π°Ρ‚Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° участват само рСгистрирани ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ. Π’ΠΏΠΈΡˆΠΈ сС, Моля Ρ‚Π΅.

ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ Π»ΠΈ Π²Π°ΡˆΠ°Ρ‚Π° CI/CD систСма Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π° ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ услуга Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° страна

  • ИзползванС Π½Π° Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ΅Π½ ΡΡŠΡ€Π²ΡŠΡ€

  • ИзползванС Π½Π° външна услуга

  • НиС Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ CI/CD

  • Π”Ρ€ΡƒΠ³

42 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ гласуваха. 16 ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ сС Π²ΡŠΠ·Π΄ΡŠΡ€ΠΆΠ°Ρ…Π°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€