αα
ααααααααΎααααααααααααΆααααααααααααααα·ααααα·ααΆα Android ααΌααααΈααααΌα
αααα»αααααα αα·αααΌααα·αααΆααα’αααααααΌααααααααΆαααΆαα½αααα·ααΆααΆαα’αα·ααααααα ααααααααΈααΎ Android SDK ααΆα
αΆαααΆα
αααααΌαααΆαααααα
α»αααααααααα»ααα Kotlin, Gradle, platform-tools, build-tools α α αΎαααααα·αααΎαα
ααΎαααΆαααΈαααααα’αααα’αα·ααααααααΆαα’αΆαααααααΆααα’αααααααααΌαααΆααααααααΆααααα»αααααα·αααΆααααα
αααΎααααααααΎ Android Studio IDE ααααα
ααΎαααΆαααΈααα CI/CD ααΆααααΆαααααΎαα
αα
α»ααααααααΆαα’αΆα
ααααΆαααΆααΆαααΊααααΆαα α αΎαααααα·αααΎαα
αααα»αααΆαα’αα·ααααααααα ααααα Docker ααΆαααααΆαααΆαααααααααΆααααααααΆααααααΆαααααα αΆααα·ααααΆα αααα ααα»α’αααΈααΆαααΆαα·αααααΆααΆααααααααΆααααα αΆααααααααααΆαα
αααα»αααΆαα’αα·αααααα Android αααααααΎααΆ...
αααααΆααβα’αααβαααβαα·αβααΉαβααΆ Docker ααΊβααΆβα’αααΈβααα ααΎβαα·ααΆαβα²ααβααΆααααβαα
ααΆβααΆβα§αααααβαααααΆααβαααααΎαβα’αααΈβαααβααβα α
βααΆ Dockerα βαα»αααΊαααβ αααααΆαααΊααα OS αα·α
αα½α
αααα»α αα·ααααα»ααααααα·ααΈα
αΆαααΆα
α αααααΎαα’αΆα
ααΆαααααααΆααααααααΈαααααααααααΎαα
ααααΆα ααααααααααααααΆααα·ααααΆαα α’αααΈαααααΉαααΆααα
αααα»ααα»αααΊαααααααααΎαααΊααααΌαααΆαααααααα
αααα»α Dockerfile ααααααααΆααααααααΌαααΆααααααΌααααα»ααα
ααΆααΌαααΆααααα’αΆα
ααΆααα±ααααααΎαααΆαααΆααααααααΈαααααα αα·αααΆααααααααααααααα·αα·ααααααααααΆααα
ααααΎαααΆαααα‘αΎα αα·αααΌαααααΆααααα Docker ααααΌαααΆααα·αααααΆαααΆαααα’α₯αααα
αααα
αααα»αααααααΆααα
# Π’.ΠΊ. ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ 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 αα ααΆαααααααααααα»αααΌαααΆαααΆααΆααα α¬α―ααα ααΎααααΈααΆαααααΆαα αααΆαααΈαααααααααα
ααΆα§ααΆα ααα α αΌαααΎααααααΎααααααααααα»ααααα»αα ααΎααααΈααααΎααΌα ααααα αααα»αααααΆαα½αααααααααααΎαααΆαααΆααααααααΆ
docker run --rm -v "$PWD":/home/gradle/ -w /home/gradle android-build:5.4.1-28-27 gradle assembleDebug
αααααααααααααΆααΎααΆααΆαααααααΆαααΆα
ααα docker - ααΆααααααααΆααΎαααΌαααΆαααααααα½αα―αα
-αααΆα β ααΆαβαααβααΆ αααααΆααβααΈβαα»αααΊαααβααα ααΆβαα»αβα’αααΈβαααααβαααΆαβαααβααααΌαβααΆαβαααααΎαβαααα»αβα’αα‘α»αβαααβααΈαα·αβααααβααΆα
-v "$PWD":/home/gradle/ - ααααΆαααααα
αα
α»ααααααααΆαα½αααΉααααααα Android ααααααΎααα
αααα»ααααα»αααΆααααα»α /home/gradle/
-w /home/gradle - αααααΆαααααααΈααΆαααΆααααααα»αααΊααα
ααααααααααααα·ααααα·ααΆα Android αααααΎαα 5.4.1-28-27 - ααααααα»αααααααΎααααααΎααααααΌαααΆαα
gradle assembleDebug - αααα»ααα½αααααα»αααααΆαα·αααααΆααααααααααΌααααα»αααααααααααααΎαα
ααααα·αααΎα’αααΈαααααΎαααΆαααα’ ααααααα»αααααααααΈαααΈαα·ααΆααΈ/ααΆααΈ α’αααααΉαααΎαα’αααΈαα½ααα ααΎα’ααααααααααα’αααα ααΆααααααΆααααααααααα»αααα α 8m 3s! α αΎααααααααα·ααΈ/build/output/apk ααΉαααΆααααααα·ααΈαααααΆααα½αααααα»αααααΆα
α’αααβα’αΆα βα’αα»ααααβαα·α αα ααΆαβααααΆααβαααααβαααβααΆαβαα·ααΈβααααααβααααΆβααα - αα·αα·αααβααΎαβαααααα ααααΎαααΆαβααΆαβααΆαααααααα α’αααααααααααα ααααααΊααΆααααα·αααΎααΎαααααΌαααΆααααααΎααααααααα ααΎαααΆαααΈαααααααααααΎααα·αα αΆαααΆα ααααα½αααΆααααα’αααΈααΆαααα‘αΎαααα·ααααΆαααΆααααΌαααα αΎαααΆααΉααααααααααΆααααΎααααΈααΆαααααΌαααΆαα αΆαααΆα αα αΎαααααΎαααΆαααΆαααααΆαααΆαα αααα»αααΆα
αα»αααΊααααα·ααααααΆαα»αααΆαααααΆααααααΌαααΆαα½αα‘αΎα α αΎαααΆααα½αααααα»αααααΆααααΌαααΆαα αΆααααααΎαααΈααα ααααα ααΎααααααΆαααΆααΆααΌαα’ααααααααΆαααααΆααα½αααααα»αααααΆααααα·ααα·αααΈαααααααααααΆααααΌαααΆαααΎα αααα»ααα αα·αααΆααααααααα’αααααααΌαααΆαααααΆαα’αΆαααααααΆααα’αα α αΎαα αααααααΌαααΆααα’ααααααααα α αΎααααααααααΆα’αΆα α αααΆαααααααΆαααααΆααα ααΌα ααααα αΎα ααααααααΈααΎααΆαα αΆααααααΎα "αααααΆαα" ααααααΆ ααΎαααΆααααααΎααααα»αααΆαα αΆααααααΎαααΆαααααΆαααΆ ααααααααααααααΆαα»αα’αααΈαααααα α ααΆα βααααΆαααααααΆααβ αααααΎααααααΆαα»ααα ~/.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 ααΆααααΆαααααααααα α’αααααααΎααααΆαα α§α¨ ααΆααααααΌαααΆαα αΆαααΆααα
ααααα: www.habr.com