فرآیند CI/CD

(Continuous integration and Continuous Delivery)
ریپازیتوری liara-cloud/github-cd-example شامل یک نمونه برنامه‌ی کامل است که می‌تواند از طریق CI/CD در لیارا مستقر شود.

راه‌اندازی CI/CD به وسیله GitHub

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

برای راه‌اندازی CI/CD در GitHub از قابلیت GitHub Actions استفاده خواهیم کرد و شما نیز باید مراحل زیر را دنبال کنید.

در ابتدا یک پوشه با نام github. در مسیر اصلی پروژه‌‌تان ایجاد کرده و سپس پوشه‌ی دیگری با نام workflows را داخل آن ایجاد کنید تا مسیر .github/workflows در پروژه‌ی شما شکل بگیرد. در این مسیر می‌توان Actionهای مورد نظر را تعریف کرد بنابراین یک فایل با نام liara.yaml را در این مسیر ایجاد کرده و قطعه‌کد زیر را در این فایل قرار دهید:

name: CD-Liara
on:
  push:
    branches:
      - main
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: "18"
      - name: update-liara
        env:
          LIARA_TOKEN: ${{ secrets.LIARA_API_TOKEN }}
        run: |
          npm i -g @liara/cli@5
          liara deploy --app="APP_NAME" --api-token="$LIARA_TOKEN" --no-app-logs
در مثال فوق باید مقدار APP_NAME را با شناسه‌ی برنامه‌تان در لیارا جایگزین کنید.
در صورت نیاز به تنظیم پورتی مانند ۳۰۰۰ که برنامه‌ی شما روی آن اجرا می‌شود لازم است پارامتر--port=3000را هم برای دستورliara deployتنظیم کنید.
توجه داشته باشید، که اگر branch پیش فرض ریپازیتوری‌تان برابر با main است، باید آن را در فایل liara.yaml تغییر دهید در غیر اینصورت branch پیش فرض‌تان را برابر با master قرار دهید.

همان‌طور که مشاهده می کنید، در قطعه‌کد فوق تمام مراحل لازم برای استقرار یک پروژه در لیارا تعریف شده است. در ابتدا ابزار Liara CLI نصب شده و سپس دستور liara deploy اجرا می‌شود.

پس از شخصی‌سازی مقدار APP_NAME در فایل liara.yaml باید کلید دسترسی به API حساب‌تان را در بخش Secret تنظیمات ریپازیتوری GitHub اضافه کنید.

برای این کار وارد تنظیمات ریپازیتوری شوید و از منوی Secrets، روی گزینه‌ی Actions کلیک کنید.

سپس برای تعریف یک Secret جدید، روی گزینه‌ی New repository secret کلیک کنید. نام این Secret را LIARA_API_TOKEN و مقدار آن را از صفحه‌ی کلید دسترسی به API کپی کرده و در بخش Value قرار داده و بر روی گزینه‌ی Add secret کلیک کنید.

در آخر با Push کردن فایل .github/workflows/liara.yaml در ریپازیتوری GitHub متوجه خواهید شد که یک Pipeline به‌صورت خودکار در تب Action ریپازیتوری شما اجرا شده است و شما نیز می‌توانید مراحل استقرار پروژه‌ی خود را در صفحه‌ی تاریخچه دنبال کنید.

راه‌اندازی CI/CD به ازای هر branch

در برخی موارد، شاید لازم باشد چند محیط جداگانه برای برنامه‌تان ایجاد کنید. به عنوان مثال ممکن است برنامه‌تان در سه محیط test, staging و production قرارداشته باشد و بخواهید برای هر محیط یک CI/CD جدا راه‌اندازی کنید. در این صورت، ابتدا باید سه اپ و سه branch جدا ایجاد کنید. در این حالت، هر branch به یک اپ اشاره دارد. سپس می‌بایست فایل .github/workflows/liara.yaml را به شکل زیر تغییر دهید:

name: CD-Liara

on:
  push:
    branches:
      - main
      - test
      - staging

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: "18"

      - name: Install Liara CLI
        run: npm i -g @liara/cli@5

      - name: Deploy
        env:
          LIARA_TOKEN: ${{ secrets.LIARA_API_TOKEN }}
        run: |
          if [ ${{ github.ref }} == 'refs/heads/master' ]; then
            liara deploy --app="my-production-app" --api-token="$LIARA_TOKEN" --no-app-logs
          elif [ ${{ github.ref }} == 'refs/heads/test' ]; then
            liara deploy --app="my-test-app" --api-token="$LIARA_TOKEN" --no-app-logs
          elif [ ${{ github.ref }} == 'refs/heads/staging' ]; then
            liara deploy --app="my-staging-app" --api-token="$LIARA_TOKEN" --no-app-logs
          fi
توجه داشته باشید که در این مثال، branch های master, test و staging به ترتیب برای محیط‌های production, test و staging انتخاب‌شده اند. شما می‌توانید با توجه به اپ خود، نام branch ها را تغییر دهید.
در سه دستور liara deploy نام اپ‌ها برای محیط‌های production, test و staging به ترتیب my-production-app, my-test-app و my-staging-app انتخاب‌‌شده است. شما باید با توجه برنامه‌‌های خود، نام اپ‌ها را تغییر دهید.
;