Android แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒ’แƒ”แƒ‘แƒ Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜

แƒแƒœแƒ“แƒ แƒแƒ˜แƒ“แƒ˜แƒก แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒžแƒแƒขแƒแƒ แƒ, แƒแƒ“แƒ แƒ” แƒ—แƒฃ แƒ’แƒ•แƒ˜แƒแƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒ— แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก. Android SDK-แƒ˜แƒก แƒ’แƒแƒ แƒ“แƒ, แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— Kotlin-แƒ˜แƒก, Gradle-แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ, แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒ-แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜, 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 แƒ•แƒ”แƒ แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒ. แƒกแƒแƒ›แƒแƒ›แƒแƒ•แƒšแƒแƒ“ แƒ’แƒแƒ’แƒ•แƒ˜แƒแƒ“แƒ•แƒ˜แƒšแƒ“แƒ”แƒ‘แƒ แƒ˜แƒกแƒ”แƒ—แƒ˜ โ€žแƒ•แƒ”แƒ แƒกแƒ˜แƒ˜แƒกโ€œ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— แƒ›แƒแƒซแƒ˜แƒ”แƒ‘แƒ.

build-แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒแƒ“, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ“แƒ›แƒแƒ•แƒฌแƒ”แƒ แƒแƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ™แƒ”แƒ  แƒ‘แƒ˜แƒซแƒ’แƒ˜ แƒกแƒแƒฏแƒแƒ แƒ แƒแƒœ แƒ™แƒ”แƒ แƒซแƒ แƒ’แƒแƒ›แƒแƒกแƒแƒฎแƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒชแƒแƒ•แƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ’แƒแƒ“แƒ›แƒแƒฌแƒ”แƒ แƒแƒ— แƒ˜แƒ’แƒ˜ แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ–แƒ”.

แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒแƒ•แƒแƒจแƒ”แƒœแƒแƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ

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 - แƒ—แƒแƒ•แƒแƒ“ build แƒ’แƒฃแƒœแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฌแƒงแƒแƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒก

แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒฌแƒแƒ•แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฌแƒแƒ›แƒจแƒ˜ / แƒฌแƒฃแƒ—แƒจแƒ˜ แƒœแƒแƒฎแƒแƒ•แƒ— แƒ แƒแƒฆแƒแƒชแƒแƒก แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ 8 แƒ› 3 แƒฌแƒแƒ›แƒจแƒ˜! แƒฎแƒแƒšแƒ app/build/output/apk แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ.

แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒ— แƒกแƒฎแƒ•แƒ gradle แƒแƒ›แƒแƒชแƒแƒœแƒ”แƒ‘แƒ˜ - แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜, แƒ’แƒแƒฃแƒจแƒ•แƒ˜แƒ— แƒขแƒ”แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ.แƒจ. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒฃแƒžแƒ˜แƒ แƒแƒขแƒ”แƒกแƒแƒ‘แƒ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒ—แƒฃ แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ”, แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒ“แƒ แƒ›แƒแƒกแƒจแƒ˜ แƒ‘แƒ˜แƒšแƒ“แƒ˜แƒœแƒ’แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ.

แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒแƒ  แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒแƒ แƒแƒœแƒแƒ˜แƒ  แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒ แƒงแƒแƒ•แƒ”แƒšแƒ˜ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒœแƒฃแƒšแƒ˜แƒ“แƒแƒœ, แƒ แƒแƒช, แƒ”แƒ แƒ—แƒ˜ แƒ›แƒฎแƒ แƒ˜แƒ•, แƒ’แƒแƒ แƒแƒœแƒขแƒ˜แƒแƒก แƒ˜แƒซแƒšแƒ”แƒ•แƒ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒแƒ‘แƒแƒก, แƒ’แƒแƒœแƒฃแƒ แƒฉแƒ”แƒ•แƒšแƒแƒ“ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ—แƒฃ แƒกแƒแƒ“ แƒแƒ แƒ˜แƒก แƒ˜แƒ’แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ›แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ. แƒ“แƒ แƒจแƒ”แƒแƒ“แƒ’แƒ˜แƒœแƒ”แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ“แƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ, แƒ“แƒ แƒแƒ›แƒแƒก แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ“แƒ แƒ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒก. แƒแƒ›แƒ˜แƒขแƒแƒ›, แƒ’แƒแƒ แƒ“แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ โ€žแƒชแƒ˜แƒ•แƒ˜โ€œ แƒกแƒขแƒแƒ แƒขแƒ˜แƒกแƒ, แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ, แƒฎแƒแƒšแƒ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ”.แƒฌ. "cache", แƒกแƒแƒ“แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒœแƒแƒฎแƒแƒ•แƒ— ~/.gradle แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒก แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ build-แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ แƒ•แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ— แƒฃแƒ™แƒแƒœ. แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒ”แƒ— แƒ™แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ”แƒ‘แƒจแƒ˜ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒแƒกแƒ” แƒ“แƒแƒ˜แƒฌแƒงแƒ

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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ