เด’เดฐเต เดกเต‹เด•เตเด•เตผ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเดฟเตฝ เด’เดฐเต Android เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต

เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเดจเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดเดฑเตเดฑเดตเตเด‚ เดšเต†เดฑเดฟเดฏ เด’เดจเตเดจเต เดชเต‹เดฒเตเด‚, เดŽเดคเตเดฐเดฏเตเด‚ เดตเต‡เด—เด‚ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดฟเดจเตเดจเต€เดŸเต เดจเดฟเด™เตเด™เตพ เดตเดฟเด•เดธเดจ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดฟเตฝ เด‡เดŸเดชเต†เดŸเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต SDK เด•เต‚เดŸเดพเดคเต†, Kotlin, Gradle, เดชเตเดฒเดพเดฑเตเดฑเตเดซเต‹เด‚-เดŸเต‚เดณเตเด•เตพ, เดฌเดฟเตฝเดกเต-เดŸเต‚เดณเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดชเดคเดฟเดชเตเดชเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดธเตเดฑเตเดฑเตเดกเดฟเดฏเต‹ เดเดกเดฟเด‡ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดกเต†เดตเดฒเดชเตเดชเดฑเตเดŸเต† เดฎเต†เดทเต€เดจเดฟเตฝ เดˆ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเต†เดฒเตเดฒเดพเด‚ เด’เดฐเต เดชเดฐเดฟเดงเดฟ เดตเดฐเต† เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, 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

เด…เดคเดฟเดจเตเดฑเต† เด…เตผเดคเตเดฅเดฎเต†เดจเตเดคเดพเดฃเต†เดจเตเดจเต เดจเดฎเตเด•เตเด•เต เดจเต‹เด•เตเด•เดพเด‚:

เดกเต‹เด•เตเด•เตผ เดฑเตบ - เด‡เดฎเต‡เดœเต เดฒเต‹เดžเตเดšเต เด•เดฎเดพเตปเดกเต เดคเดจเตเดจเต†
-rm - เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดจเดฟเตผเดคเตเดคเดฟเดฏ เดถเต‡เดทเด‚, เด…เดคเต เด…เดคเดฟเดจเตเดฑเต† เดœเต€เดตเดฟเดคเดคเตเดคเดฟเตฝ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต†เดฒเตเดฒเดพเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดพเดฃเต เด…เตผเดคเตเดฅเดฎเดพเด•เตเด•เตเดจเตเดจเดคเต
-v "$PWD":/home/gradle/ โ€” เดžเด™เตเด™เดณเตเดŸเต† เด†เตปเดกเตเดฐเต‹เดฏเดฟเดกเต เดชเตเดฐเต‹เดœเด•เตโ€ŒเดฑเตเดฑเดฟเดจเตŠเดชเตเดชเด‚ เดจเดฟเดฒเดตเดฟเดฒเต† เดซเต‹เตพเดกเตผ เด†เดจเตเดคเดฐเดฟเด• เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต /home/gradle/ เดฒเต‡เด•เตเด•เต เดฎเต—เดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต
-w /home/gradle - เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดกเดฏเดฑเด•เตเดŸเดฑเดฟ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเต
android-build:5.4.1-28-27 - เดžเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเดšเตเดš เดžเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเดฟเดจเตเดฑเต† เดชเต‡เดฐเต
gradle assembleDebug - เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเดจเตเดจ เดฏเดฅเดพเตผเดคเตเดฅ เด…เดธเด‚เดฌเตเดฒเดฟ เดŸเต€เด‚

เดŽเดฒเตเดฒเดพเด‚ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดจเดŸเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด•เตเดฑเดšเตเดšเต เดจเดฟเดฎเดฟเดทเด™เตเด™เตพ/เดฎเดฟเดจเดฟเดฑเตเดฑเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตโ€Œเด•เตเดฐเต€เดจเดฟเตฝ เด‡เดคเตเดชเต‹เดฒเตŠเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเด‚ 8 เดฎเต€เดฑเตเดฑเตผ 3 เดธเต†เด•เตเด•เตปเดกเดฟเตฝ เดตเดฟเดœเดฏเด•เดฐเดฎเดพเดฏเดฟ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•! เด†เดชเตเดชเต/เดฌเดฟเตฝเดกเต/เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต/เดŽเดชเดฟเด•เต† เดซเต‹เตพเดกเดฑเดฟเตฝ เด…เดธเด‚เดฌเดฟเตพ เดšเต†เดฏเตเดค เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เด—เตเดฐเต‡เดกเดฟเตฝ เดœเต‹เดฒเดฟเด•เตพ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ - เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด•, เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เดคเตเดŸเด™เตเด™เดฟเดฏเดต. เดฎเดฑเตเดฑเต‡เดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฎเต†เดทเต€เดจเดฟเตฝ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดฃเดฎเต†เด™เตเด•เดฟเตฝ, เดฎเตเดดเตเดตเตป เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟเดฏเตเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดทเดฎเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ, เด†เดตเดถเตเดฏเดฎเดพเดฏ เด‡เดฎเต‡เดœเต เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเต เด…เดคเดฟเตฝ เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดพเตฝ เดฎเดคเดฟเดฏเดพเด•เตเด‚ เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดจเต‡เดŸเตเดŸเด‚.

เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเตŠเดจเตเดจเตเด‚ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เด“เดฐเต‹ เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเด‚ เด†เดฆเตเดฏเด‚ เดฎเตเดคเตฝ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด’เดฐเต เดตเดถเดคเตเดคเต, เด…เดธเด‚เดฌเตเดฒเดฟเดฏเตเดŸเต† เดเดกเดจเตเดฑเดฟเดฑเตเดฑเดฟ เดŽเดตเดฟเดŸเต† เดธเดฎเดพเดฐเด‚เดญเดฟเดšเตเดšเดพเดฒเตเด‚ เด…เดคเต เด‰เดฑเดชเตเดชเตเดจเตฝเด•เตเดจเตเดจเต, เดฎเดฑเตเดตเดถเดคเตเดคเต, เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เดจเดฟเด™เตเด™เตพ เดŽเดฒเตเดฒเดพ เดกเดฟเดชเตปเดกเตปเดธเดฟเด•เดณเตเด‚ เดกเต—เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เด•เต‚เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพ เด•เต‹เดกเตเด•เดณเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เด•เด‚เดชเตˆเตฝ เดšเต†เดฏเตเดฏเตเด•, เด‡เดคเดฟเดจเต เดšเดฟเดฒเดชเตเดชเต‹เตพ เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดธเดฎเดฏเด‚ เดŽเดŸเตเดคเตเดคเต‡เด•เตเด•เดพเด‚. เด…เดคเดฟเดจเดพเตฝ, เดธเดพเดงเดพเดฐเดฃ "เดคเดฃเตเดคเตเดค" เด†เดฐเด‚เดญเดคเตเดคเดฟเดจเต เดชเตเดฑเดฎเต‡, เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดต เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฌเดฟเตฝเดกเต เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด“เดชเตเดทเตป เดจเดฎเตเด•เตเด•เตเดฃเตเดŸเต. โ€œเด•เดพเดทเต†โ€, เด…เดตเดฟเดŸเต† เดžเด™เตเด™เตพ ~/.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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•