ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° 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 push Π² ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠ΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ·ΡΠ΅Π³Π»ΠΈΠΌ Π½Π° Π΄ΡΡΠ³ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΎ. ΠΠ° ΡΠ΅Π»ΡΠ° Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebugΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΡΡ:
docker run β ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±ΡΠ°Π·Π°
-rm β ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ»Π΅Π΄ ΡΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΠΎΠΉ ΠΈΠ·ΡΡΠΈΠ²Π° Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΆΠΈΠ²ΠΎΡΠ° ΡΠΈ
-v "$PWD":/home/gradle/ β ΠΌΠΎΠ½ΡΠΈΡΠ° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° Ρ Π½Π°ΡΠΈΡ Android ΠΏΡΠΎΠ΅ΠΊΡ Π² Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΠΏΠ°ΠΏΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° /home/gradle/
-w /home/gradle β Π·Π°Π΄Π°Π²Π° ΡΠ°Π±ΠΎΡΠ½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
android-build:5.4.1-28-27 β ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π½Π°ΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ·Π΄Π°Π΄ΠΎΡ
ΠΌΠ΅
gradle assembleDebug β ΡΠ°ΠΌΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΊΠΎΡΡΠΎ ΡΡΠ±ΠΈΡΠ° Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ
ΠΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ Π½Π°ΡΠ΅Π΄ΠΈ, ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ/ΠΌΠΈΠ½ΡΡΠΈ ΡΠ΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π° Π΅ΠΊΡΠ°Π½Π° ΡΠΈ Π½Π΅ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ BUILD SUCCESSFUL Π·Π° 8ΠΌ 3Ρ! Π Π² ΠΏΠ°ΠΏΠΊΠ°ΡΠ° app/build/output/apk ΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΠ³Π»ΠΎΠ±Π΅Π½ΠΎΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
ΠΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°ΡΠΈΠ½ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈ Π·Π°Π΄Π°ΡΠΈ Π½Π° gradle β Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ Ρ.Π½. ΠΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π΅, ΡΠ΅ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΎΡ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π° Π΄ΡΡΠ³Π° ΠΌΠ°ΡΠΈΠ½Π°, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»Π°ΡΠ° ΡΡΠ΅Π΄Π°, Π° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ ΠΎΠ±ΡΠ°Π· ΠΈ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π² Π½Π΅Π³ΠΎ.
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ Π½Π΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ Π²ΡΡΠΊΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π·Π°ΠΏΠΎΡΠ²Π° ΠΎΡ Π½ΡΠ»Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡ Π΅Π΄Π½Π° ΡΡΡΠ°Π½Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ, Π° ΠΎΡ Π΄ΡΡΠ³Π° ΡΡΡΠ°Π½Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΡΠ΅Π³Π»ΡΡ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΡΠ΅Π»ΠΈΡΡ ΠΊΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠ½Π΅ΠΌΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, ΠΎΡΠ²Π΅Π½ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ "ΡΡΡΠ΄Π΅Π½" ΡΡΠ°ΡΡ, ΠΈΠΌΠ°ΠΌΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Ρ.Π½. "ΠΊΠ΅Ρ", ΠΏΡΠΈ ΠΊΠΎΠΉΡΠΎ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° ~/ .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 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
