အစည်းအဝေး Android-Docker container ထဲမှာ project တစ်ခုလုပ်ပါ

ပလက်ဖောင်းအတွက် ပရောဂျက်တစ်ခု တီထွင်ခြင်း Androidအသေးငယ်ဆုံးတစ်ခုပင်လျှင် နောက်ဆုံးတွင် ဖွံ့ဖြိုးတိုးတက်ရေးပတ်ဝန်းကျင်ကို ကိုင်တွယ်ဖြေရှင်းရမည်ဖြစ်သည်။ ထို့အပြင် Android SDK သည် Kotlin၊ Gradle၊ platform-tools နှင့် build-tools တို့၏ နောက်ဆုံးထွက်ဗားရှင်း လိုအပ်ပါသည်။ developer ၏ စက်တွင်ဆိုလျှင် ဤ dependencies အားလုံးကို အများအားဖြင့် အသုံးပြု၍ ဖြေရှင်းပါသည်။ Android Studio IDE ပြီးရင် CI/CD server မှာ update တိုင်းက ခေါင်းကိုက်စရာ ဖြစ်လာနိုင်ပါတယ်။ Docker က web development မှာ environment problem အတွက် standard solution ဖြစ်လာခဲ့ရင် အလားတူပြဿနာကို ဖြေရှင်းဖို့ ဘာလို့ မကြိုးစားကြည့်တာလဲ။ Android- ဖွံ့ဖြိုးတိုးတက်ရေး…

Docker က ဘာလဲဆိုတာ မသိတဲ့သူတွေအတွက် - အတော်လေးရိုးရှင်းတယ်ဆိုရင်၊ အဲဒါကို ဖန်တီးဖို့ tool တစ်ခုပါ။ အနိမ့်ဆုံး OS kernel နှင့် ပတ်၀န်းကျင်ကို ထိန်းသိမ်းထားစဉ်တွင် ကျွန်ုပ်တို့ အလိုရှိရာ နေရာတိုင်းတွင် အသုံးပြုနိုင်သော ဆော့ဖ်ဝဲအစုံပါရှိသော "ကွန်တိန်နာများ" ကျွန်ုပ်တို့၏ကွန်တိန်နာတွင်မည်သည်အတိအကျဖြစ်မည်ကို Dockerfile တွင်ဆုံးဖြတ်သည်၊ ထို့နောက်မည်သည့်နေရာတွင်မဆိုဖွင့်နိုင်သည့်ပုံနှင့် ideempotency ဂုဏ်သတ္တိများရှိသောပုံတစ်ခုအဖြစ်စုစည်းထားသည်။

တပ်ဆင်ခြင်းလုပ်ငန်းစဉ်နှင့် 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"

ကျွန်တော်တို့ folder ထဲမှာ save လုပ်လိုက်ပါတယ် Android-project လုပ်ပြီး command ဖြင့် container build ကို run ပါ။

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

parameter သည် -t အများအားဖြင့် ၎င်း၏အမည်နှင့် ဗားရှင်းပါရှိသော ကျွန်ုပ်တို့၏ကွန်တိန်နာ၏ tag သို့မဟုတ် အမည်ကို သတ်မှတ်ပေးသည်။ ကျွန်ုပ်တို့၏အခြေအနေတွင်၊ ၎င်းကို android-build ဟုခေါ်ပြီး ဗားရှင်းတွင် gradle၊ android-sdk နှင့် platform-tools ဗားရှင်းများကို ပေါင်းစပ်သတ်မှတ်ထားသည်။ အနာဂတ်တွင်၊ ထိုသို့သော “ဗားရှင်း” ကို အသုံးပြု၍ ကျွန်ုပ်တို့ လိုအပ်သော ပုံကို အမည်ဖြင့် ရှာဖွေရန် ပိုမိုလွယ်ကူလာပါမည်။

တည်ဆောက်မှုပြီးသွားသောအခါတွင်၊ ကျွန်ုပ်တို့၏ရုပ်ပုံကို စက်တွင်းတွင် အသုံးပြုနိုင်ပြီး ၎င်းကို command ဖြင့် ဒေါင်းလုဒ်လုပ်နိုင်ပါသည်။ docker တွန်းသည်။ ၎င်းကို အခြားစက်များသို့ ဒေါင်းလုဒ်လုပ်ရန်အတွက် အများပိုင် သို့မဟုတ် သီးသန့်ဓာတ်ပုံ သိုလှောင်ရုံသို့။

ဥပမာအနေနဲ့၊ ဒေသန္တရပရောဂျက်တစ်ခုကို တည်ဆောက်ကြည့်ရအောင်။ ဒါကိုလုပ်ဖို့၊ ပရောဂျက်ဖိုင်တွဲမှာ command ကို run ပါ။

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

ဘာကိုဆိုလိုသည်ကို အဖြေရှာကြည့်ရအောင်။

docker ပြေး - image launch command ကိုယ်တိုင်
-rm - ဆိုလိုသည်မှာ ကွန်တိန်နာကို ရပ်တန့်ပြီးနောက်၊ ၎င်းသည် ၎င်း၏သက်တမ်းအတွင်း ဖန်တီးထားသည့်အရာအားလုံးကို ဖျက်ပစ်သည်။
-v "$PWD":/home/gradle/ - လက်ရှိ folder ကို ကျွန်ုပ်တို့ရဲ့ folder နဲ့ mount လုပ်ပါ Android- container ရဲ့ internal folder /home/gradle/ မှာ project လုပ်ပါ
-w /home/gradle - ကွန်တိန်နာ၏ အလုပ်လမ်းညွှန်ကို သတ်မှတ်ပေးသည်။
android-build-5.4.1-28-27 - ကျွန်ုပ်တို့စုဆောင်းထားသော ကွန်တိန်နာအမည်
gradle assembleDebug - ကျွန်ုပ်တို့၏ပရောဂျက်ကို စုစည်းပေးသော တည်ဆောက်ရေးအဖွဲ့ကိုယ်တိုင်

အားလုံးအဆင်ပြေရင် စက္ကန့်/မိနစ်လောက်ကြာပြီးရင် တစ်ခုခုကို တွေ့ရပါလိမ့်မယ်။ 8m 3s ဖြင့် အောင်မြင်စွာတည်ဆောက်ပါ။! ပြီးတော့ app/build/output/apk folder ထဲမှာ စုစည်းထားတဲ့ application တစ်ခု ရှိပါလိမ့်မယ်။

အလားတူ၊ သင်သည် ပရောဂျက်ကို စစ်ဆေးခြင်း၊ စမ်းသပ်မှုများ လုပ်ဆောင်ခြင်း အစရှိသည်တို့ကို လုပ်ဆောင်နိုင်သည်။ အဓိကအားသာချက်မှာ အခြားစက်များတွင် ပရောဂျက်ကို တည်ဆောက်ရန် လိုအပ်ပါက၊ ပတ်ဝန်းကျင်တစ်ခုလုံးကို ထည့်သွင်းခြင်းအတွက် စိတ်ပူစရာမလိုဘဲ လိုအပ်သောပုံကို ဒေါင်းလုဒ်လုပ်ပြီး ၎င်းတွင် တည်ဆောက်ရန် လုံလောက်မည်ဖြစ်သည်။

ကွန်တိန်နာသည် မည်သည့်ပြောင်းလဲမှုကိုမျှ မသိမ်းဆည်းထားဘဲ တပ်ဆင်မှုတစ်ခုစီကို အစမှစတင်လုပ်ဆောင်ပြီး တစ်ဖက်တွင် ၎င်းအား မည်သည့်နေရာ၌ပင်ဖြစ်စေ အခြားတစ်ဖက်တွင် သင်သည် မှီခိုမှုအားလုံးကို ဒေါင်းလုဒ်လုပ်သည့်အခါတိုင်း၊ တစ်ဖက်တွင် စည်းဝေးပွဲ၏အထောက်အထားကို အာမခံပါသည်။ ကုဒ်အားလုံးကို ထပ်မံစုစည်းပြီး ၎င်းသည် တစ်ခါတစ်ရံတွင် အချိန်များစွာကြာနိုင်သည်။ ထို့ကြောင့်၊ ပုံမှန် "အအေး" စတင်ခြင်းအပြင်၊ ကျွန်ုပ်တို့သည် ၎င်းကို ထိန်းသိမ်းထားစဉ်တွင် စည်းဝေးပွဲကို စတင်ရန် ရွေးချယ်ခွင့်ရှိသည်။ "cache" နေရာတွင် ~/.gradle ဖိုင်တွဲကို ပရောဂျက်၏ လုပ်ဆောင်နေသော ဖိုင်တွဲသို့ ကူးယူရုံဖြင့် သိမ်းဆည်းကာ နောက်တည်ဆောက်မှုအစတွင် ၎င်းကို ပြန်ပေးပါသည်။ ကျွန်ုပ်တို့သည် ကူးယူခြင်းဆိုင်ရာ လုပ်ထုံးလုပ်နည်းအားလုံးကို သီးခြား scripts များအဖြစ်သို့ ရွှေ့လိုက်သည်နှင့် launch command ကိုယ်တိုင်က ဤကဲ့သို့ ဖြစ်လာပါသည်။

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"

ရလဒ်အနေဖြင့်၊ ပျှမ်းမျှပရောဂျက်တည်ဆောက်ချိန်ကို အဆများစွာလျှော့ချခဲ့သည် (ပရောဂျက်အပေါ် မှီခိုမှုအရေအတွက်ပေါ်မူတည်၍ ပျမ်းမျှပရောဂျက်သည် ၅ မိနစ်အစား ၁ မိနစ်အတွင်း စတင်တည်ဆောက်သည်)။

သင့်တွင် သင်ကိုယ်တိုင်ပံ့ပိုးပေးသော သင့်ကိုယ်ပိုင်အတွင်းပိုင်း CI/CD ဆာဗာရှိမှသာ ဤအရာအားလုံးသည် အဓိပ္ပာယ်ရှိမည်ဖြစ်သည်။ သို့သော် ယခုပြဿနာများအားလုံးကို ဖြေရှင်းပြီးဖြစ်သည့် cloud ဝန်ဆောင်မှုများစွာရှိနေပြီဖြစ်ပြီး ၎င်းနှင့်ပတ်သက်ပြီး သင်စိုးရိမ်နေစရာမလိုဘဲ လိုအပ်သောတည်ဆောက်မှုဂုဏ်သတ္တိများကို ပရောဂျက်ဆက်တင်များတွင်လည်း သတ်မှတ်နိုင်ပါသည်။

စာရင်းသွင်းအသုံးပြုသူများသာ စစ်တမ်းတွင် ပါဝင်နိုင်ပါသည်။ ဆိုင်းအင်လုပ်ခြင်း, ကျေးဇူးပြု။

သင်သည် သင်၏ CI/CD စနစ်ကို အတွင်းတွင် ထားရှိသလား သို့မဟုတ် ပြင်ပအဖွဲ့အစည်း ဝန်ဆောင်မှုကို အသုံးပြုပါသလား။

  • အတွင်းပိုင်းဆာဗာကိုအသုံးပြုခြင်း။

  • ပြင်ပဝန်ဆောင်မှုကို အသုံးပြုခြင်း။

  • ကျွန်ုပ်တို့သည် CI/CD မသုံးပါ။

  • အခြား

အသုံးပြုသူ 42 ဦး မဲပေးခဲ့သည်။ သုံးစွဲသူ ၁၉ ဦး ရှောင်နေခဲ့ပါတယ်။

source: www.habr.com

DDoS ကာကွယ်ရေး၊ VPS VDS ဆာဗာများပါသည့် ဆိုက်များအတွက် ယုံကြည်စိတ်ချရသော hosting ကို ဝယ်ယူပါ။ 🔥 DDoS ကာကွယ်မှု၊ VPS VDS ဆာဗာများပါရှိသော ယုံကြည်စိတ်ချရသော ဝဘ်ဆိုက် hosting ကို ဝယ်ယူပါ | ProHoster