یکی از کارهایی که توی دوآپس انجام میشه، اتوماتیک کردن کارهاست. و یکی از زیرشاخه های این مبحث هم Gitlab-ci هست. درمورد این موضوع لینک زیر رو بخونین:
https://docs.gitlab.com/ee/ci/
ممکنه هرشرکتی برای خودش از گیتلب خودش استفاده کنه (و یا از گیت لب عمومی استفاده کنه) پس باید گیتلب رانر رو به اون گیتلب متصل کرد.
مرحله اول: نصب Gitlab-Runner
اگر توی گوگل سرچ کنیم: gitlab runner، لینک های اولی مربوط به خود گیتلب هستن. پس چنتاشو باز میکنیم. اصل کاری که در مورد نسخه ی لینوکسی گفته این لینکه:
https://docs.gitlab.com/runner/install/linux-manually.html
البته من ترجیح میدم که manually و با نسخه باینری نصب کنم. البته اینکه باید با فیلترچیزکن بگیرمش هم بیتاثیر نیست.
نکته: از DNS های شکن میتونین برای این کار استفاده کنین. سرعتش کمه ولی کار راه میفته و میشه دانلودش کرد.
توی بخش Using binary file میگه با توجه به معماری سیستمت، یکی از اسکریپتای زیر رو کپی و توی سیستمت اجرا کن. که خب مثلا مال من x86-64 هست و این دستور رو برمیدارم:
curl -L --output /usr/bin/gitlab-runner "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64"
بعد از دانلود هم باید git رو نصب کنیم:
sudo apt update
sudo apt install git
تا اینجا ما فایل رو دانلود کردیم و در مسیرزیر گذاشتیم:
/usr/bin/gitlab-runner
خب. در ادامه پرمیشن مورد نیازشو بهش میدیم که بتونه اجرا بشه (دقت کنین که من اینا رو با دسترسی root دارم انجام میدم):
chmod +x /usr/bin/gitlab-runner
بعدش هم باید برای gitlab-ci یه یوزر بسازیم:
useradd --comment 'GitLab Runner' --create-home gitlab-runner --shell /bin/bash
باید سرویس رو حالا install و start کنیم:
gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
gitlab-runner start
برای اینکه چک کنیم ببینیم وضعیتش چجوریه، از دستور زیر میشه استفاده کرد:
gitlab-runner status
مرحله دوم: رجیستر کردن گیتلب رانر توی ریپوزیتوری
به لینک زیر برین و شروع کنین دستورات رو اجرا کردن. ولی منم توضیح میدم:
https://docs.gitlab.com/runner/register/index.html
توی بخش لینوکسش گفته:
میگه اول باید این کامند رو بزنین:
gitlab-runner register
از شما آدرس گیتلب رو میخواد. مثلا اگر گیتلب شما سابدامینی از دامین اصلی شرکت هست و اینطوریه، همینطوری بزنین:
از شما یه توکن هم میخواد که باید برید توی بخش زیر پیداش کنین:
توی ریپوزیتوری برید به بخش Settings > CI/CD و در بخش Runners روی Expand کلیک کنین. سمت چپ صفحه نوشته Specific runners که هم آدرس رو به شما میده و هم توکن:
توکن رو کپی کنین و به برنامه بدین.
از شما یه توضیحات میخواد که بعدا میتونین توی خود نرم افزار عوضش کنین.
یک یا چنتا تگ هم باید بهش اختصاص بدین.
کار این تگ چیه؟ در صورتی که رانر شما بعدا share بشه، توی فایل gitlab-ci.yml مشخص میکنین که کدوم رانر باید اینو اجرا کنه و اینطوری تداخل پیش نمیاد. هر رانر، جابی رو اجرا میکنه که براش مشخص شده. نه اینکه همه ی جاب ها بیان سمت یه رانر و رانر های دیگه بیکار باشن.
بعدش نیاز به مشخص کردن runner-executor دارین. کارش اینه که جاب های شما رو اجرا کنه. انواع مختلفی داره. از داکر و کوبرنیتیز بگیرید تا ssh و شل. وقتی داکر باشه، ایمیج موردنظر شما رو (که توی جاب مشخص کردین) اجرا و دستورات رو داخل اون اجرا میکنه. شل هم توی همین سیستم اجرا میکنه دستورات شما رو.
و نتیجه نهایی:
نکته: اگر قبلش گیتلب رانر رو استارت کرده بودین، نیازه که ریاستارت بشه:
gitlab-runner restart
حالا اگر برگردین به صفحه ی Settings>CI/CD>Runners>Specific Runners (داخل ریپوزیتوری مربوطه)، رانر جدید رو میبینین:
و تمام 🙂
- سوال: میشه روی یه رانر، دوتا کانفیگ باشه؟
- جواب: بله. تعداد بیشتر هم میشه. مثلا یه shell executor و یه docker executor روی یه رانر باشن و این نکته رو رعایت کنین که تگ ها رو درست بدین.