டோக்கர் கொள்கலனில் Android திட்டத்தை உருவாக்குதல்

ஆண்ட்ராய்டு இயங்குதளத்திற்கான திட்டத்தை உருவாக்கும் போது, ​​மிகச்சிறிய ஒன்று கூட, விரைவில் அல்லது பின்னர் நீங்கள் மேம்பாட்டு சூழலை சமாளிக்க வேண்டும். ஆண்ட்ராய்டு எஸ்டிகே தவிர, கோட்லின், கிரேடில், பிளாட்ஃபார்ம்-டூல்ஸ், பில்ட்-டூல்களின் சமீபத்திய பதிப்பை வைத்திருப்பது அவசியம். டெவலப்பரின் கணினியில் இந்த சார்புகள் அனைத்தும் Android ஸ்டுடியோ IDE ஐப் பயன்படுத்தி அதிக அளவில் தீர்க்கப்பட்டால், CI/CD சேவையகத்தில் ஒவ்வொரு புதுப்பிப்பும் தலைவலியாக மாறும். மேலும் இணைய வளர்ச்சியில் டோக்கர் சூழல் பிரச்சனைக்கான நிலையான தீர்வாக மாறியிருந்தால், அதைப் பயன்படுத்தி ஆண்ட்ராய்டு மேம்பாட்டில் இதேபோன்ற சிக்கலை ஏன் தீர்க்க முயற்சிக்கக்கூடாது...

டோக்கர் என்றால் என்னவென்று தெரியாதவர்களுக்கு, எளிமையாகச் சொல்வதென்றால், இது அழைக்கப்படுவதை உருவாக்குவதற்கான ஒரு கருவியாகும். சுற்றுச்சூழலைப் பாதுகாக்கும் அதே வேளையில், குறைந்தபட்ச OS கர்னல் மற்றும் தேவையான மென்பொருளைக் கொண்டிருக்கும் "கன்டெய்னர்கள்". எங்கள் கொள்கலனில் சரியாக என்ன இருக்கும் என்பது Dockerfile இல் தீர்மானிக்கப்படுகிறது, பின்னர் அது எங்கும் தொடங்கக்கூடிய ஒரு படமாகத் திரட்டப்படுகிறது மற்றும் idempotency பண்புகளைக் கொண்டுள்ளது.

டோக்கரின் நிறுவல் செயல்முறை மற்றும் அடிப்படைகள் அவரது புத்தகத்தில் சரியாக விவரிக்கப்பட்டுள்ளன அதிகாரப்பூர்வ வலைத்தளம். எனவே, சற்று முன்னோக்கிப் பார்த்தால், நாங்கள் முடித்த 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 மற்றும் இயங்குதள-கருவிகள் ஆகியவற்றின் பதிப்புகளின் தொகுப்பைக் குறிப்பிட்டோம். எதிர்காலத்தில், இந்த "பதிப்பு" மூலம் பெயர் மூலம் நமக்குத் தேவையான படத்தைத் தேடுவது எளிதாக இருக்கும்.

சட்டசபை முடிந்ததும், எங்கள் படத்தை உள்நாட்டில் பயன்படுத்தலாம், அதை கட்டளையுடன் பதிவிறக்கம் செய்யலாம் டாக்கர் மிகுதி ஒரு பொது அல்லது தனிப்பட்ட படக் களஞ்சியத்தை மற்ற இயந்திரங்களில் பதிவிறக்கம் செய்ய.

உதாரணமாக, உள்நாட்டில் ஒரு திட்டத்தை உருவாக்குவோம். இதைச் செய்ய, திட்டத்துடன் கூடிய கோப்புறையில், கட்டளையை இயக்கவும்

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 - எங்கள் திட்டத்தை ஒருங்கிணைக்கும் உண்மையான சட்டசபை குழு

எல்லாம் சரியாக நடந்தால், ஓரிரு வினாடிகள்/நிமிடங்களில் உங்கள் திரையில் இதுபோன்ற ஒன்றைக் காண்பீர்கள் 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

கருத்தைச் சேர்