راهنمای راه اندازی CD به کمک GitLab


۲۸ بهمن ۱۳۹۸

در این مطلب می‌خواهیم یاد بگیریم که چطور می‌توانیم یک pipeline ساده برای Continuous Delivery کردن برنامه‌ی‌مان روی بستر لیارا به کمک GitLab داشته باشیم.

معرفی GitLab CI

GitLab CI به صورت رایگان توسط GitLab ارائه می‌شود و امکانات بسیار خوبی را برای ساده و سریع کردن توسعه محصول به ما ارائه می‌کند. توسط GitLab CI این امکان برای ما فراهم می‌شود تا تنظیم کنیم که هر زمانی Commit‌ای در Branch مورد نظر ما انجام شد، کارهایی برای ما انجام شود. به طور مثال ما می‌خواهیم هر زمانی که در Branch Master برنامه Commit‌ای زده شد، برنامه Clone شود، پیش نیازهای آن نصب شود، Test‌های آن اجرا شود و در نهایت نسخه جدید، جایگزین نسخه قبلی شود. همه این موارد را ما می‌توانیم، به راحتی نوشتن چند خط Config در یک فایل به نام .gitlab-ci.yml انجام دهیم.

نحوه راه‌اندازی

ما برای توضیح نحوه راه‌اندازی از یک برنامه تستی NodeJS استفاده می‌‌کنیم. کدهای برنامه از طریق این لینک قابل مشاهده و بررسی است. برنامه ما یک Web Server ساده است که یک فایل HTML را Serve می‌کند.

var express = require('express');
var morgan = require('morgan')
var app = express();
var path = require('path');

app.use(morgan('tiny'))
app.use(express.static('public'))

app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
});

app.listen(8000, () => console.log(`Example app listening on port 8000!`));
  • گام اول: انتقال برنامه روی بستر لیارا

برنامه را از آدرس زیر Clone و در لیارا مستقر کنید.

git clone https://github.com/liara-ir/cd-example

در فایل liara.json این برنامه‌ی تستی، نام برنامه ما hello-world در نظر گرفته شده است. شما باید این نام را متناسب با شناسه‌ی برنامه خود در لیارا تغییر دهید.

اگر به راهنمایی برای استقرار برنامه NodeJS در لیارا نیاز دارید به این بخش از مستندات سر بزنید.

راه‌اندازی CI CD در لیارا
  • گام دوم: انتقال برنامه به GitLab

بعد از ثبت نام در GitLab.com کافیست یک مخزن با نام دلخواه ایجاد کنید و برنامه تستی را که در مرحله قبل Clone کردید، مجدد داخل مخزن جدیدی که ایجاد کردید، به صورت زیر Push کنید.

git remote rename origin old-origin
git remote add origin https://gitlab.com/YOUR_USERNAME_IN_GITLAB/GITLAB_REPO_NAME.git
git push -u origin master

به محتویات فایل ‍.gitlab-ci.yml دقت کنید:

image: node:12-alpine

stages:
  - update-production

deploy:
  stage: update-production
  only:
    - master  
  before_script:
    - npm install -g @liara/cli@2
  script:
    - liara deploy --detach --api-token $TOKEN

هر زمان که Commit‌ای در Branch Master صورت گیرد، GitLab این فایل را به یک Runner تحویل می‌دهد. Runner‌ها سرورهایی هستند که وظیفه دارند تا برنامه‌ها را Build کنند و اصلاحا pipeline‌ها را اجرا کنند. Runner‌ها اول به صورت پیشفرض داخل یک کانتینر داکر که ما تعیین کرده‌ایم (در اینجا node:12-alpine) برنامه ما را Clone می‌کنند و سپس کارهایی که تعیین شده را طبق فایل شروع به انجام می‌کنند.

در این فایل ما برای سادگی فقط یک Stage به نام update-liara تعریف کرده‌ایم. Stage‌ها مانند مراحل مختلف یک Pipeline هستند که ما تعیین می‌کنیم با چه ترتیبی اجرا شوند. هر ‌Stage می‌تواند چندین Job داشته باشد. در اینجا ما یک Job به نام deploy تعریف کرده‌ایم که وظیفه آن نصب CLI لیارا و سپس وارد کردن دستور liara deploy است. (در نظر داشته باشید که در ابتدای کار، برنامه شما Clone شده و همه این Command‌ها داخل دایرکتوری root زده می‌شود.)

اگر به منوی CI/CD برنامه‌تان در پنل GitLab مراجعه کنید، احتمالا خواهید دید که برنامه در حال Build قرار گرفته است اما به مشکل می‌خورد چون هنوز تمامی مراحل را انجام نداده‌اید. ادامه مراحل را دنبال کنید.

  • گام سوم: تنظیم ENV‌های موردنیاز

در این مرحله می‌خواهیم ENV‌های ضروری مثل Token حساب کاربری لیارا را تنظیم کنیم. برای این‌کار ابتدا Token حساب کاربری‌تان را از صفحه‌ی API در پنل لیارا کپی کنید.

سپس کافیست به بخش تنظیمات CI/CD در پنل GitLab‌ بروید و در بخش Variables به‌سادگی Token‌ را اضافه کنید.

تنظیم متغییر‌ها برای راه‌اندازی CI CD در لیارا

می‌تونید هر نامی برای این ENV‌ها در نظر بگیرید، اما لازم است تا در فایل .gitlab-ci.yml‌‌تان هم تغییرات را اعمال کنید.

کار تمام شد. در نهایت می‌توانید یک Commit دیگر در Branch Master برنامه بزنید و خروجی را مشاهده کنید.

راه‌اندازی CI CD در لیارا

توضیحات پیشرفته

ممکن‌است برنامه‌ی شما دارای چندین Branch باشد و نیاز باشد برای هر Branch‌ای که شما در آن Push می‌کنید کاری انجام شود. به طور مثال اگر در Branch‌ای به‌نام development کدتان را Push کردید، انتظار دارید که نسخه‌ی تستی برنامه‌ی‌ شما به‌روز شود و همچنین اگر در Branch‌ای به‌نام master پوش کردید، نسخه اصلی برنامه‌ی شما که کاربران از آن استفاده می‌کنند، به‌روز شود.

برای ایجاد چنین حالتی در GitLab CI لاسم است تا در فایل liara.json برنامه‌ی‌تان، قسمت app که شناسه‌ی‌ برنامه‌ی‌تان بود را وارد نکنید. در این صورت باید در CLI لیارا مستقیما ذکر کنید که می‌خواهید با چه شناسه‌ای برنامه‌ی‌تان را مستقر کنید.
برای نمونه فایل liara.json برنامه تستی را می‌شود با حذف قسمت app به صورت زیر تغییر داد.

{
    "platform": "node",
    "port": 8000,
    "node": {
        "version": "12",
        "timezone": "Asia/tehran",
        "npmAudit": true
    }
}

حالا کافیست در فایل .gitlab-ci.yml برنامه‌ی‌تان، در قسمت اسکریپت‌های استقرار که برای Branch‌ خاصی در نظر گرفته‌اید، به صورت زیر برای دستور deploy مشخص کنید که قصد دارید کدام برنامه‌ را به‌روز کنید. به طور مثال برای برنچ Master، برنامه‌‌ی اصلی‌تان با شناسه hello-world-master را مستقر می‌کنید.

liara deploy --detach --api-token $TOKEN --app="hello-world-master"

و برای برنچ development، برنامه‌‌ی تست‌تان با شناسه hello-world-dev را مستقر می‌کنید.

liara deploy --detach --api-token $TOKEN --app="hello-world-dev"

البته اسامی استفاده شده در بالا برای نمونه است و شما متناسب با شناسه‌ برنامه‌های‌تان باید آن‌ها را قرار دهید. برای آشنایی کامل با دیگر امکانات، می‌توانید از این لینک مستندات GitLab CI را مطالعه کنید.

برچسب‌ها:

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید و فقط برای بیش از آن هزینه پرداخت کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

توسعه‌دهندگان درباره‌ی ما چه می‌گویند

تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...

MohammadReza
liara testimonial
keikaavousi

بعد از بسته شدن @fandoghpaas و ناراحتی همه‌مون از اینکه یه سرویس خوب و صادق نمی‌تونه از پس هزینه‌ها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوت‌هایی داشت که کمی کار می‌خواست ولی تا الان کاملا راضی.

jadi
liara testimonial
jadi

یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.

Arch
liara testimonial
EbadiDev

واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیت‌های سرویس دیتابیس‌شون اینه که خودشون به صورت دوره‌ای بکآپ میگیرن.
...

Ali Najafi
liara testimonial
me_ali_najafi

یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@

Navid
liara testimonial
1navid

عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم

Amir H Shekari
liara testimonial
vanenshi

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)