เจ‡เฉฑเจ• เจกเฉŒเจ•เจฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจเจ‚เจกเจฐเฉŒเจ‡เจก เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃเจพ

เจเจ‚เจกเจฐเฉŒเจ‡เจก เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฒเจˆ เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเจ•เจธเจฟเจค เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจธเจญ เจคเฉ‹เจ‚ เจ›เฉ‹เจŸเจพ เจตเฉ€, เจœเจฒเจฆเฉ€ เจœเจพเจ‚ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจตเจฟเจ•เจพเจธ เจฆเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃเจพ เจชเจตเฉ‡เจ—เจพเฅค เจเจ‚เจกเจฐเฉŒเจ‡เจก SDK เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ•เฉ‹เจŸเจฒเจฟเจจ, เจ—เฉเจฐเฉ‡เจกเจฒ, เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ-เจŸเฉ‚เจฒเจธ, เจฌเจฟเจฒเจก-เจŸเฉ‚เจฒเจธ เจฆเจพ เจจเจตเฉ€เจจเจคเจฎ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉ‹เจฃเจพ เจœเจผเจฐเฉ‚เจฐเฉ€ เจนเฉˆเฅค เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจฆเฉ€ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจ‡เจน เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจธเจŸเฉ‚เจกเฉ€เจ“ IDE เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจพเจซเฉ€ เจนเฉฑเจฆ เจคเฉฑเจ• เจนเฉฑเจฒ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ CI / CD เจธเจฐเจตเจฐ 'เจคเฉ‡, เจนเจฐเฉ‡เจ• เจ…เจชเจกเฉ‡เจŸ เจธเจฟเจฐเจฆเจฐเจฆ เจตเจฟเฉฑเจš เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆ. เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจตเฉˆเจฌ เจกเจฟเจตเฉˆเจฒเจชเจฎเฉˆเจ‚เจŸ เจตเจฟเฉฑเจš, เจกเฉŒเจ•เจฐ เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ€ เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจฎเจฟเจ†เจฐเฉ€ เจนเฉฑเจฒ เจฌเจฃ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจ•เจฟเจ‰เจ‚ เจจเจพ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจตเจฟเจ•เจพเจธ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจฎเจพเจจ เจธเจฎเฉฑเจธเจฟเจ† เจจเฉ‚เฉฐ เจนเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ‹ ...

เจ‰เจนเจจเจพเจ‚ เจฒเจˆ เจœเฉ‹ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจ•เจฟ เจกเฉŒเจ•เจฐ เจ•เฉ€ เจนเฉˆ - เจœเฉ‡ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจธเจงเจพเจฐเจจ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจ…เจ–เฉŒเจคเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ‡เฉฑเจ• เจธเจพเจงเจจ เจนเฉˆ. "เจ•เฉฐเจŸเฉ‡เจจเจฐ" เจœเจฟเจธ เจตเจฟเฉฑเจš เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ OS เจ•เจฐเจจเจฒ เจ…เจคเฉ‡ เจธเจพเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเจพ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจธเฉˆเฉฑเจŸ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจ…เจธเฉ€เจ‚ เจตเจพเจคเจพเจตเจฐเจจ เจฆเฉ€ เจธเจพเจ‚เจญ-เจธเฉฐเจญเจพเจฒ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจœเจฟเฉฑเจฅเฉ‡ เจตเฉ€ เจšเจพเจนเฉ€เจ, เจคเฉˆเจจเจพเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจธเจพเจกเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจตเจฟเฉฑเจš เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ‡เจน เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจซเจฟเจฐ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจตเจฟเฉฑเจš เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจœเจฟเจธ เจจเฉ‚เฉฐ เจ•เจฟเจคเฉ‡ เจตเฉ€ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚ เจนเจจ.

เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐ เจฆเฉ€ เจฌเฉเจจเจฟเจ†เจฆ เจจเฉ‚เฉฐ เจ‰เจธเจฆเฉ‡ เจ‰เฉฑเจคเฉ‡ เจธเฉเฉฐเจฆเจฐเจคเจพ เจจเจพเจฒ เจตเจฐเจฃเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจธเจฐเจ•เจพเจฐเฉ€ เจตเฉˆเจฌเจธเจพเจˆเจŸ. เจ‡เจธ เจฒเจˆ, เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจ…เฉฑเจ—เฉ‡ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเฉ‹เจ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจœเจฟเจนเฉ€ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจนเฉˆ

# ะข.ะบ. ะพัะฝะพะฒะฝั‹ะผ ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะผ ะดะปั ัะฑะพั€ะบะธ 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"

เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจจเจพเจฒ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจธเฉ‡เจต เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฌเจฃเจพเจ‰เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚

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

เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ -t เจธเจพเจกเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเจพ เจŸเฉˆเจ— เจœเจพเจ‚ เจจเจพเจฎ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เจธเจฆเจพ เจจเจพเจฎ เจ…เจคเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจธเจพเจกเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ android-build เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจตเจฐเจœเจจ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ gradle, android-sdk เจ…เจคเฉ‡ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ-เจŸเฉ‚เจฒ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ‡ เจธเฉเจฎเฉ‡เจฒ เจจเฉ‚เฉฐ เจจเจฟเจธเจผเจšเจฟเจค เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš, เจธเจพเจกเฉ‡ เจฒเจˆ เจ…เจœเจฟเจนเฉ‡ "เจตเจฐเจœเจจ" เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจจเจพเจฎ เจฆเฉเจ†เจฐเจพ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจ–เฉ‹เจœเจฃเจพ เจ†เจธเจพเจจ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจฌเจฟเจฒเจก เจชเจพเจธ เจนเฉ‹เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจธเจฅเจพเจจเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเจพเจ‚, เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฎเจพเจ‚เจก เจจเจพเจฒ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚ เจกเฉŒเจ•เจฐ เจงเฉฑเจ•เจพ เจ‡เจธ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ เจกเจพเจ‰เจจเจฒเฉ‹เจก เจ•เจฐเจจ เจฒเจˆ เจœเจจเจคเจ• เจœเจพเจ‚ เจจเจฟเฉฑเจœเฉ€ เจšเจฟเฉฑเจคเจฐ เจญเฉฐเจกเจพเจฐ เจตเจฟเฉฑเจšเฅค

เจ‡เฉฑเจ• เจ‰เจฆเจพเจนเจฐเจจ เจฆเฉ‡ เจคเฉŒเจฐ เจคเฉ‡, เจ†เจ“ เจ‡เฉฑเจ• เจธเจฅเจพเจจเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเจพ เจจเจฟเจฐเจฎเจพเจฃ เจ•เจฐเฉ€เจเฅค เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฒเจˆ, เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš, เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ“

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

เจ†เจ“ เจœเจพเจฃเจฆเฉ‡ เจนเจพเจ‚ เจ‡เจธเจฆเจพ เจ•เฉ€ เจ…เจฐเจฅ เจนเฉˆ:

เจกเฉŒเจ•เจฐ เจฐเจจ - เจšเจฟเฉฑเจคเจฐ เจฒเจพเจ‚เจš เจ•เจฎเจพเจ‚เจก เจ†เจชเจฃเฉ‡ เจ†เจช
-เจ†เจฐเจเจฎ - เจฎเจคเจฒเจฌ เจ•เจฟ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฃ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ‡เจน เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจ‡เจธเจฆเฉ‡ เจœเฉ€เจตเจจ เจฆเฉŒเจฐเจพเจจ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€
-v "$PWD":/home/gradle/ - เจธเจพเจกเฉ‡ เจเจ‚เจกเจฐเฉŒเจ‡เจก เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ‡ เจจเจพเจฒ เจฎเฉŒเจœเฉ‚เจฆเจพ เจซเฉ‹เจฒเจกเจฐ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจซเฉ‹เจฒเจกเจฐ /home/gradle/ เจตเจฟเฉฑเจš เจฎเจพเจŠเจ‚เจŸ เจ•เจฐเจฆเจพ เจนเฉˆ
-w/home/gradle - เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเฉ€ เจ•เจพเจฐเจœเจ•เจพเจฐเฉ€ เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจธเฉˆเฉฑเจŸ เจ•เจฐเจฆเจพ เจนเฉˆ
android-build:5.4.1-28-27 - เจธเจพเจกเฉ‡ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจฆเจพ เจจเจพเจฎ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ‡เจ•เฉฑเจ เจพ เจ•เฉ€เจคเจพ เจนเฉˆ
gradle เจ…เจธเฉˆเจ‚เจฌเจฒ เจกเฉ€เจฌเฉฑเจ— - เจฌเจฟเจฒเจก เจŸเฉ€เจฎ เจ–เฉเจฆ, เจœเฉ‹ เจธเจพเจกเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐเจฆเฉ€ เจนเฉˆ

เจœเฉ‡ เจธเจญ เจ•เฉเจ เจ เฉ€เจ• เจšเฉฑเจฒเจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจ•เฉเจ เจธเจ•เจฟเฉฐเจŸเจพเจ‚ / เจฎเจฟเฉฐเจŸเจพเจ‚ เจฌเจพเจ…เจฆ เจคเฉเจธเฉ€เจ‚ เจ•เฉเจ เจ…เจœเจฟเจนเจพ เจฆเฉ‡เจ–เฉ‹เจ—เฉ‡ 8m 3s เจตเจฟเฉฑเจš เจธเจซเจฒ เจฌเจฃเจพเจ“! เจ…เจคเฉ‡ เจเจช/เจฌเจฟเจฒเจก/เจ†เจŠเจŸเจชเฉเฉฑเจŸ/เจเจชเฉ€เจ•เฉ‡ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ…เจธเฉˆเจ‚เจฌเจฒเจก เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจ—เฉเจฐเฉ‡เจกเจฒ เจฆเฉ‡ เจนเฉ‹เจฐ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ - เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเฉ‹, เจŸเฉˆเจธเจŸ เจšเจฒเจพเจ“, เจ†เจฆเจฟเฅค เจฎเฉเฉฑเจ– เจซเจพเจ‡เจฆเจพ เจ‡เจน เจนเฉˆ เจ•เจฟ เจœเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ, เจคเจพเจ‚ เจธเจพเจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ‡ เจตเจพเจคเจพเจตเจฐเจฃ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจค เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจšเจฟเฉฐเจคเจพ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจšเจฟเฉฑเจคเจฐ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจฌเจฟเจฒเจก เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ เจ•เจพเจซเจผเฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ•เฉฐเจŸเฉ‡เจจเจฐ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฌเจฆเจฒเจพเจ… เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจจเฉ‚เฉฐ เจธเจ•เฉเจฐเฉˆเจš เจคเฉ‹เจ‚ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจชเจพเจธเฉ‡, เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจฆเฉ€ เจชเจ›เจพเจฃ เจฆเฉ€ เจ—เจพเจฐเฉฐเจŸเฉ€ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจญเจพเจตเฉ‡เจ‚ เจ‡เจน เจ•เจฟเฉฑเจฅเฉ‡ เจตเฉ€ เจฒเจพเจ‚เจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจฆเฉ‚เจœเฉ‡ เจชเจพเจธเฉ‡, เจนเจฐ เจตเจพเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจจเจฟเจฐเจญเจฐเจคเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจกเจพเจŠเจจเจฒเฉ‹เจก เจ•เจฐเจจเจพ เจชเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค เจ…เจคเฉ‡ เจธเจพเจฐเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เจฐเฉ‹, เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เจˆ เจตเจพเจฐ เจ•เจพเจซเจผเฉ€ เจธเจฎเจพเจ‚ เจฒเฉฑเจ— เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจ†เจฎ "เจ เฉฐเจกเฉ‡" เจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจ–เฉŒเจคเฉ€ เจฌเจฃเจพเจˆ เจฐเฉฑเจ–เจฃ เจฆเฉŒเจฐเจพเจจ เจ…เจธเฉˆเจ‚เจฌเจฒเฉ€ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจฆเจพ เจตเจฟเจ•เจฒเจช เจนเฉˆ. "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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹