راه اندازی GitLab CI/CD اندروید و آپلود اپلیکیشن در کانال تلگرام

Android GitLab CI / CD to Telegram Channel
Android GitLab CI / CD to Telegram Channel

بعد از کلی سرچ در این موضوع با کمک دوست خوبم مسیح تونستیم یه GitLab Ci برای اندروید ورژن Android Gradle +7 تهیه کنیم که بعد از Build شدن پروژه, اپلیکیشن می تونه در کانال تلگرام ارسال بشه و آماده ی نصب و ارسال برای دیگران هست.


فرم کلی gitlab-ci.yml به صورت زیر هست که به طور مفصل درباره اش توضیح می دهم.

https://gist.github.com/masoudd2159/4dc1960616e967f65fc043cf57bc14f2#file-gitlab-ci-yml

این آموزش شامل سه بخش میشه :

  • ساختن ربات تلگرام و پیدا کردن Chat ID کانال تلگرام
  • ساختن و اضافه کردن Application Signature به GitLab
  • نوشتن و اضافه کردن GitLab Ci به پروژه ی اندرویدی

ساختن ربات تلگرام و پیدا کردن Chat ID کانال تلگرام

ابتدا یه کانال تلگرام می سازیم و با استفاده از ربات IDBot چت آی دی کانال تلگرامون را پیدا می کنیم.

پیدا کردن Chat ID کانال تلگرام
پیدا کردن Chat ID کانال تلگرام

به این صورت که یک پیام از کانالی که قرارِ اپلیکیشن در آنجا آپلود بشه را برای ربات IDBot فوروارد می کنیم و اون ربات Chat Id کانال تلگرام مان را بهمون میده

توجه کنید که Chat Id یه عبارت 13 رقمی با علامت منفی

پس از دریافت Chat Id آن را در قسمت TELEGRAM_CHAT_ID فایل gitlab-ci.yml به صورت زیر قرار می دهیم.

# CHANNEL CHAT ID
TELEGRAM_CHAT_ID: &quotTELEGRAM_CHAT_ID&quot
توجه کنید برای آن که بتوانید اپلیکیشن تان را در گروه تلگرام نیز آپلود کنید کافی است که فقط لینک گروه تلگرام را در ربات IDBot فوروارد کنید تا Chat Id گروه تلگرامی تان را پبدا کند و آن را مانند Chat Id کانال تلگرام در قسمت TELEGRAM_CHAT_ID فایل gitlab-ci.yml قرار دهید.

خوب پس از آن باید در ربات BotFather یه ربات تلگرام برای فوروارد کردن اپلیکیشن به داخل کانال تلگرامون بسازیم

به این صورت که بر روی newbot می زنیم و name و username رباتمون را انتخاب می کنیم و در پایان باز بر روی عبارت mybots می زنیم تا لیست ربات هایی که ساختیم را نمایش بدهد و رباتی که ساختیم را از منوی شیشه ای انتخاب می کنیم و در منوی نمایش داده شده گزینه ی API Token را انتخاب کرده تا API Token رباتمون را بهمون بدهد و آن را در قسمت TELEGRAM_BOT_API_TOKEN فایل gitlab-ci.yml به صورت زیر قرار می دهیم.

# BOT TOKEN
TELEGRAM_BOT_TOKEN: &quotTELEGRAM_BOT_API_TOKEN&quot

در نهایت نیز ربات تلگرامی که ساختیم را تحت عنوان ادمین در کانال تلگرام مان اضافه می کنیم تا دسترسی ارسال پیام و آپلود اپلیکیشن را داشته باشد. همچنین برای ارسال اپلیکیشن در گروه تلگرام نیز ربات را تحت عنوان ادمین در گروه تلگرام ادد می کنیم.

خوب تا این جای کار ربات و کانال تلگراممون را راه انداختیم و می خواهیم یکم بیشتر درباره ی بقیه ی موارد استیج Deploy توضیح بدهیم.

عبارت APPLICATION_VERSION فایل gitlab-ci.yml همان versionName گریدل اصلی اپلیکیشن bulid.gradle (:app) است. که عموما بعد از هر بار کامیت کردن پروژه و push کردن پروژه باید یک ورژن به برنامه اضافه شود و APPLICATION_VERSION تغییر کند.

به طور مثال :

# APPLICATION VERSION
APPLICATION_VERSION: &quot1.12.50&quot

عبارت APPLICATION_NAME نام اصلی اپلیکیشن شما خواهد بود. که پیشنهاد می شود بعد از نوشتن نام اپلیکیشن عبارت _V_ را هم قرار دهید که بعد از آپلود شدن اپلیکیشن در کانال تلگرام عبارت ورژن از نام اپلیکیشن متمایز باشد.

به طور مثال :

# APPLICATION NAME
APPLICATION_NAME: &quotProjectName_V_&quot
  • این دو عبارت در پایان هنگام آپلود در کانال به صورت ProjectName_V_1.12.50.apk خواهد بود.


عبارت TELEGRAM_MESSAGE_CAPTION زیرنویس پیام کانال تلگرام را مشخص می کند. که باز پیشنهاد می شود انتهای کامنت تان \n#ProjectName را قرار دهید که اپلیکیشن هایتان راحت تر در کانال تلگرام پیدا شود.

\n#ProjectName

به طور مثال :

# DISCRIPTION
TELEGRAM_MESSAGE_CAPTION: test caption \n#ProjectName&quot

درنهایت نمونه ی ارسال شده ی اپلیکیشن با مشخصات فوق به صورت زیر خواهد بود

نمونه اپلیکیشن آپلود شده در کانال تلگرام
نمونه اپلیکیشن آپلود شده در کانال تلگرام



پیدا کردن و اضافه کردن Application Signature به GitLab

جهت ساختن Application Signature می توانید از سایت مرجع تخصصی آموزش برنامه نویسی اندروید کمک بگیرید و سپس پس از بدست آوردن Key Alias و Key Password و Keystore File و Keystore Password باید اطلاعات را وارد تنظیمات CI/CD پروژه کنیم. ولی قبل از آن باید فایل Signature.jks را به Base64 اِنکد (Encode) کنیم به این صورت که با استفاده از سایت Base64Encode فایل Signature.jks یا همان Keystore File را آپلود می کنیم و پس از Encode شدن, فایل متنی Encode شده را دانلود می کنیم. مطابق با شکل زیر:

Encode files to Base64 format
Encode files to Base64 format


پس از آن به پروفایل GitLabمان می رویم و پروژه ای که می خواهیم CI/CD روی آن اجرا شود را باز می کنیم و از منوی سمت چپ روی گزینه ی Settings هاور می کنیم تا ساب منو تنظیمات نمایش داده شود و گزینه ی CI/CD را انتخاب می کنیم تا تنظیمات این قسمت باز شود.

مطابق شکل زیر :

gitlab.com/YOUR_USERNAME/YOUR_PROJECT
gitlab.com/YOUR_USERNAME/YOUR_PROJECT


بعد از باز شدن تنظیمات CI/CD از قسمت Variables بر روی دکمه ی Expand کلیک کنید تا تنظیمات این بخش باز شود تا Environment variables های Application Signature مان را در این قسمت وارد کنیم.

gitlab.com/YOUR_USERNAME/YOUR_PROJECT/-/settings/ci_cd
gitlab.com/YOUR_USERNAME/YOUR_PROJECT/-/settings/ci_cd


خوب پس از باز شدن Variables بر روی دکمه Add variable می زنیم تا دیالوگ Add variable باز شود و اطلاعات Application Signature را که شامل Key Alias و Key Password و Keystore File و Keystore Password است را که در فوق به دست آوردیم به صورت جداگانه وارد می کنیم.

حتما توجه کنید که فیلد key باید با حروف بزرگ نوشته شود و به جای Space از UnderLine (_) استفاده کنید!

به صورت زیر :

Key Alias --------------------->  KEY_ALIAS
Key Password ------------->  KEY_PASSWORD
Keystore File --------------->  KEYSTORE_FILE
Keystore Password ----->  KEYSTORE_PASSWORD
و حتما تیک Protect variable را هم بردارید!

به نمونه های زیر دقت کنید :

KEY_ALIAS
KEY_ALIAS
KEY_PASSWORD
KEY_PASSWORD
KEYSTORE_FILE
KEYSTORE_FILE
KEYSTORE_PASSWORD
KEYSTORE_PASSWORD


در پایان باید تمام چهار متغیر را به صورت زیر ثبت کرده باشید:

Environment variables
Environment variables



نوشتن و اضافه کردن GitLab Ci به پروژه ی اندرویدی

خوب تا این جای کار ربات تلگرام و تنظیمات CI/CD گیت لب را انجام دادیم حال وقت آن است که فایل gitlab-ci.yml را به پروژه اضافه کنیم به این صورت که ابتدا تنظیمات اندروید استودیو را از Android به Project به صورت زیر تغییر بدهیم.

 Project Android -> Project" />
Project" /> Android -> Project

و یک فایل جدید به اسم .gitlab-ci.yml درست می کنیم.

.gitlab-ci.yml
.gitlab-ci.yml
.gitlab-ci.yml


توجه کنید که اول عبارت همراه با دات شروع می شود!

و تمام کد های زیر را داخل آن فایل کپی می کنیم :

https://gist.github.com/masoudd2159/4dc1960616e967f65fc043cf57bc14f2#file-gitlab-ci-yml

و حال کافیست که فقط APPLICATION_VERSION (ورژن اپلیکیشن) را از bulid.gradle (:app) وارد gitlab-ci.yml کنیم و درAPPLICATION_NAME نام اصلی اپلیکیشن را بنویسیم و در قسمت TELEGRAM_CHAT_ID چت آیدی کانال تلگراممون را وارد کنیم و در TELEGRAM_BOT_TOKEN توکن (API Token) ربات تلگراممون را اینجا قرار بدهیم و در نهایت در TELEGRAM_MESSAGE_CAPTION زیرنویس پیام تلگراممون را بنویسیم.

خوب همه چیز آماده است کد هایتان را add و commit کنید و پس از آن پروژه را push کنید تا همه چیز به صورت روتین انجام شود.

از روش زیر هم می تونید Stage های پروژه تون را پیگیری کنید:

CI/CD Pipelines
CI/CD Pipelines


CI/CD Pipelines
CI/CD Pipelines


هر گونه سوالی داشتین میتونین از طریق تلگرام یا اینستگرام و لینکدین با من در ارتباط باشید.