یکی از کارهایی که میتوانید در ci/cd گیت لب انجام بدید، بیلد گرفتن از پروژه های اندروید هست. به طوری که میتوانید پس از برای مثال کامیت به روی مستر ، یک بیلد از پروژه بگیرید و فایل apk رو به صورت باینری از گیت لب دانلود کنید. برای اینکار باید اول یک فایل gitlab-ci به پروژه اضافه کنید. حالا قدم به قدم با هم این فایل رو پر میکنیم.
شروع کار
ابتدا باید بگیم که رانر ما چه ایمیج داکری رو باید بارگذاری کنه
image: openjdk:8-jdk
خب حالا باید با کمک یه سری متغیر نسخه های مختلف مورد نیاز همگام بیلد را ست کنیم :
variables: ANDROID_COMPILE_SDK: "28" ANDROID_BUILD_TOOLS: "28.0.2" ANDROID_SDK_TOOLS: "4333796"
و سپس باید قبل شروع بیلد یه سری کارها رو روی ایمیج انجام بدیم :
before_script: - apt-get --quiet update --yes - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 curl - wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip - unzip -d android-sdk-linux android-sdk.zip - echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null - echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null - echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null - export ANDROID_HOME=$PWD/android-sdk-linux - export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/ - chmod +x ./gradlew - set +o pipefail - yes | android-sdk-linux/tools/bin/sdkmanager --licenses - set -o pipefail
حالا به بررسی کد بالا میپردازیم :
- معرفی کد هایی که باید قبل از شروع عملیات بیلد اجرا شود.
- اول ریپازیتوری های سیستم رو آپدیت میکنیم.
- سپس پکیج های unzip و wget و … را نصب میکنیم.
- حالا با کمک wget از سایت گوگل sdk اندروید مورد نظر رو دانلود میکنیم.
- در این مرحله آن زیپ میکنیم فایل رو
- نصب sdk برای کامپایل اندروید
- نصب ابزار های پلتفرم اندروید
- نصب sdk برای بیلد اندروید
- تعیین کردن متغیر ANDROID_HOME با مسیر فایل اکسترکت شده
- مسیر ابزار های اندروید رو به PATH سیستم اضافه میکنیم
- فایل گردل را اجرایی میکنیم
- اینجا به طور موقت چک کردن خطای EPIPE رو متوقف میکنیم
- لایسنس های sdk اندروید رو تایید میکنیم
- دوباره شل رو به حالت عادی برمیگردونیم
حالا باید استیج هامون رو تعریف کنیم ، که فعلا فقط Build رو داریم.
stages: - build
و حالا استیج رو تعریف میکنیم :
assembleDebug: stage: build script: - ./gradlew assembleDebug artifacts: paths: - app/build/outputs/
بیایید به بررسی تیکه کد بالا بپردازیم :
- اسم استیج
- اینجا میگم منظور از این استیج کدوم هست
- اسکریپت استیج
- از گردل میخوایم که پروژه اندروید رو دیباگ کنه
- تعریف آرتیفکت هامون ( اینجا فایل apk )
- تعریف مسیر خروجی آرتیفکت
- اینجا مسیری که میخواهیم داخل ایمیج آرتیفکت خروجی گرفته بشه رو تغریف میکنیم
دانلوذ فایل
حالا هربار که کامیت کنیم به ریپو ، یک فایل apk ساخته میشه که از قسمت ci/cd میتونیم واردش بشیم.کافیه وارد ریپو پروژه تو گیت لب بشید. از سمت چپ روی ci/cd و بر روی گزینه jobs کلیک کنید. روی آخرین job که با موفقیت انجام شده کلیک کنید ( اولین در لیست ) و سپس از سمت راست برروی Download کلیک کنید :
فایل کامل gitlab-ci.yaml رو دانلود کنید.