یکی از کارهایی که میتوانید در 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

حالا به بررسی کد بالا میپردازیم :

  1. معرفی کد هایی که باید قبل از شروع عملیات بیلد اجرا شود.
  2. اول ریپازیتوری های سیستم رو آپدیت میکنیم.
  3. سپس پکیج های unzip و wget و … را نصب میکنیم.
  4. حالا با کمک wget از سایت گوگل sdk اندروید مورد نظر رو دانلود میکنیم.
  5. در این مرحله آن زیپ میکنیم فایل رو
  6. نصب sdk برای کامپایل اندروید
  7. نصب ابزار های پلتفرم اندروید
  8. نصب sdk برای بیلد اندروید
  9. تعیین کردن متغیر ANDROID_HOME با مسیر فایل اکسترکت شده
  10. مسیر ابزار های اندروید رو به PATH سیستم اضافه میکنیم
  11. فایل گردل را اجرایی میکنیم
  12. اینجا به طور موقت چک کردن خطای EPIPE رو متوقف میکنیم
  13. لایسنس های sdk اندروید رو تایید میکنیم
  14. دوباره شل رو به حالت عادی برمیگردونیم

حالا باید استیج هامون رو تعریف کنیم ، که فعلا فقط Build رو داریم.

stages:
  - build

و حالا استیج رو تعریف میکنیم :

assembleDebug:
  stage: build
  script:
    - ./gradlew assembleDebug
  artifacts:
    paths:
      - app/build/outputs/

بیایید به بررسی تیکه کد بالا بپردازیم :

  1. اسم استیج
  2. اینجا میگم منظور از این استیج کدوم هست
  3. اسکریپت استیج
  4. از گردل میخوایم که پروژه اندروید رو دیباگ کنه
  5. تعریف آرتیفکت هامون ( اینجا فایل apk )
  6. تعریف مسیر خروجی آرتیفکت
  7. اینجا مسیری که میخواهیم داخل ایمیج آرتیفکت خروجی گرفته بشه رو تغریف میکنیم

دانلوذ فایل

حالا هربار که کامیت کنیم به ریپو ، یک فایل apk ساخته میشه که از قسمت ci/cd میتونیم واردش بشیم.کافیه وارد ریپو پروژه تو گیت لب بشید. از سمت چپ روی ci/cd و بر روی گزینه jobs کلیک کنید. روی آخرین job که با موفقیت انجام شده کلیک کنید ( اولین در لیست ) و سپس از سمت راست برروی Download کلیک کنید :

Gitlab CI/CD android artifact download

Gitlab CI/CD android artifact download

 

فایل کامل gitlab-ci.yaml رو دانلود کنید.

دسته بندی شده در: