เบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™ Android เปƒเบ™ Docker container

เป€เบกเบทเปˆเบญเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบก Android, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบšเปเปˆเป„เบงเบซเบผเบทเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบ™เบญเบเป€เบซเบ™เบทเบญเป„เบ›เบˆเบฒเบ Android SDK, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบชเบฐเบšเบฑเบšเบซเบฅเป‰เบฒเบชเบธเบ”เบ‚เบญเบ‡ Kotlin, Gradle, platform-tools, build-tools. เปเบฅเบฐเบ–เป‰เบฒเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ, เบ„เบงเบฒเบกเบ‚เบถเป‰เบ™เบเบฑเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเปเบเป‰เป„เบ‚เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒเป‚เบ”เบเปƒเบŠเป‰ Android Studio IDE, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบ™เป€เบŠเบตเบŸเป€เบงเบต CI / CD เปเบ•เปˆเบฅเบฐเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เป€เบˆเบฑเบšเบซเบปเบง. เปเบฅเบฐเบ–เป‰เบฒเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเป€เบงเบฑเบš Docker เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก, เปเบฅเป‰เบงเป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบˆเบถเปˆเบ‡เบšเปเปˆเบžเบฐเบเบฒเบเบฒเบกเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ Android เป‚เบ”เบเปƒเบŠเป‰เบกเบฑเบ™ ...

เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบงเปˆเบฒ Docker เปเบกเปˆเบ™เบซเบเบฑเบ‡, เป€เบงเบปเป‰เบฒเบ‡เปˆเบฒเบเป†, เบกเบฑเบ™เปเบกเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ. "เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต" เบ—เบตเปˆเบšเบฑเบ™เบˆเบธ OS kernel เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบŠเบธเบ”เบŠเบญเบšเปเบงเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เปƒเบŠเป‰เป„เบ”เป‰เบ—เบธเบเบšเปˆเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก. เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบ™เปˆเบ™เบญเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เปƒเบ™ Dockerfile, เป€เบŠเบดเปˆเบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบญเบšเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบšเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เบ•เบปเบงเป„เบ”เป‰เบ—เบธเบเบšเปˆเบญเบ™เปเบฅเบฐเบกเบตเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” idempotency.

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡ 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 .

Parameter -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 โ€” เบ—เบตเบกเบ‡เบฒเบ™เบ›เบฐเบเบญเบšเบ•เบปเบงเบˆเบดเบ‡เบ—เบตเปˆเบ›เบฐเบเบญเบšเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ

เบ–เป‰เบฒโ€‹เบซเบฒเบโ€‹เบงเปˆเบฒโ€‹เบ—เบธเบโ€‹เบชเบดเปˆเบ‡โ€‹เบ—เบธเบโ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹เบ”เบตโ€‹, เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบฑเป‰เบ™โ€‹เปƒเบ™โ€‹เบชเบญเบ‡โ€‹เบชเบฒเบกโ€‹เบงเบดโ€‹เบ™เบฒโ€‹เบ—เบต / เบ™เบฒโ€‹เบ—เบตโ€‹เบ—เปˆเบฒเบ™โ€‹เบˆเบฐโ€‹เป€เบซเบฑเบ™โ€‹เปƒเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบˆเปโ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบšเบฒเบ‡โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบŠเบฑเปˆเบ™โ€‹:โ€‹ เบเปเปˆเบชเป‰เบฒเบ‡เบชเบณเป€เบฅเบฑเบ”เปƒเบ™ 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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™