ابرآراز | ArazCloud

پیاده‌سازی ادغام مستمر (Continuous Integration – CI) با سرورهای ابری

ادغام مستمر (CI) به توسعه‌دهندگان این امکان را می‌دهد تا به صورت مداوم و خودکار تغییرات کد را تست و ادغام کنند. این روش به تیم‌ها کمک می‌کند که کیفیت کد و سرعت ارائه بهبود یابد و خطاهای احتمالی در مراحل اولیه شناسایی شوند. در این مستندات به نحوه پیاده‌سازی CI با استفاده از ابزارهای محبوب و متن‌باز بر روی سرورهای ابری پرداخته می‌شود.

الزامات

  • دسترسی به سرور ابری با دسترسی ریشه (Root Access)
  • سیستم‌عامل اوبونتو ۲۰.۰۴ یا بالاتر
  • آشنایی با Git و استفاده از سیستم‌های کنترل نسخه
  • نصب Docker برای اجرای محیط‌های ایزوله
  • آشنایی اولیه با Jenkins یا GitLab CI برای پیاده‌سازی CI

۱. مقدمه‌ای بر ادغام مستمر (CI)

ادغام مستمر به فرآیند پیاده‌سازی کد به صورت مداوم و تست خودکار آن اشاره دارد. این فرآیند شامل ساخت، تست، و ادغام کد به طور خودکار پس از هر تغییر است. با پیاده‌سازی CI، می‌توانید تغییرات را به سرعت و با اطمینان در محیط‌های توسعه و تولید اعمال کنید.

مزایای استفاده از CI

  • کاهش خطاها: شناسایی زودهنگام خطاها با اجرای تست‌های خودکار
  • افزایش سرعت توسعه: با ادغام سریع تغییرات کد
  • بهبود کیفیت کد: اطمینان از کیفیت با تست‌های مداوم و خودکار

۲. پیاده‌سازی CI با Jenkins

Jenkins یکی از ابزارهای محبوب و متن‌باز برای پیاده‌سازی CI است که می‌توان از آن برای ساخت، تست و انتشار کدها به صورت خودکار استفاده کرد.

مرحله ۱: نصب Jenkins

برای نصب Jenkins، ابتدا نیاز است که Java نصب شود:

sudo apt update
sudo apt install -y openjdk-11-jdk

سپس مخزن Jenkins را اضافه و Jenkins را نصب کنید:

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install -y jenkins
sudo systemctl start jenkins
sudo systemctl enable jenkins

مرحله ۲: پیکربندی Jenkins

برای دسترسی به Jenkins، آدرس IP سرور را در مرورگر با پورت ۸۰۸۰ باز کنید:

http://<server-ip>:8080

در اولین ورود، از شما یک رمز عبور اولیه درخواست می‌شود. برای دریافت این رمز، دستور زیر را اجرا کنید:

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

پس از ورود، افزونه‌های پیشنهادی را نصب کنید و یک حساب کاربری برای مدیریت ایجاد کنید.

مرحله ۳: ایجاد یک پروژه جدید CI

در Jenkins، یک پروژه جدید به عنوان Pipeline ایجاد کنید. برای این منظور، مراحل زیر را دنبال کنید:

  1. از داشبورد Jenkins گزینه New Item را انتخاب کنید.
  2. نام پروژه را وارد کرده و نوع پروژه را به Pipeline تنظیم کنید.
  3. روی OK کلیک کنید تا پروژه ایجاد شود.

مرحله ۴: نوشتن اسکریپت Pipeline

در بخش Pipeline، یک اسکریپت Pipeline به زبان Groovy وارد کنید. به عنوان مثال، اسکریپتی برای یک پروژه Node.js که شامل مراحل ساخت و اجرای تست‌ها است:

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git 'https://github.com/your-repository/your-project.git'
            }
        }
        stage('Install Dependencies') {
            steps {
                sh 'npm install'
            }
        }
        stage('Run Tests') {
            steps {
                sh 'npm test'
            }
        }
        stage('Build') {
            steps {
                sh 'npm run build'
            }
        }
    }
    post {
        always {
            echo 'Pipeline complete!'
        }
    }
}

این اسکریپت مراحل زیر را به ترتیب انجام می‌دهد:

  1. Checkout: کد را از مخزن دریافت می‌کند.
  2. Install Dependencies: وابستگی‌ها را نصب می‌کند.
  3. Run Tests: تست‌ها را اجرا می‌کند.
  4. Build: پروژه را ساخت می‌کند.

مرحله ۵: اجرای Pipeline

برای اجرای Pipeline، روی Build Now کلیک کنید. Jenkins به طور خودکار تمامی مراحل را اجرا کرده و نتیجه را نمایش می‌دهد.

۳. پیاده‌سازی CI با GitLab CI

GitLab CI یک ابزار CI/CD یکپارچه در GitLab است که به طور مستقیم با مخزن کدها همگام‌سازی می‌شود و به طور خودکار کدها را پس از هر commit تست و بررسی می‌کند.

مرحله ۱: نصب GitLab Runner

ابتدا نیاز به نصب GitLab Runner دارید که وظیفه اجرای کارها را بر عهده دارد:

sudo apt-get install -y curl
curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
sudo gitlab-runner install --user=gitlab-runner --working-directory=/home/gitlab-runner
sudo gitlab-runner start

مرحله ۲: ثبت GitLab Runner

برای اتصال GitLab Runner به پروژه خود، ابتدا وارد مخزن GitLab شوید و از Settings > CI/CD > Runners یک Runner جدید اضافه کنید. دستورات ثبت Runner به شما نمایش داده خواهد شد که به شکل زیر خواهد بود:

sudo gitlab-runner register

اطلاعات خواسته‌شده را وارد کنید، از جمله آدرس پروژه و توکن ثبت.

مرحله ۳: ایجاد فایل .gitlab-ci.yml

در ریشه پروژه، فایل .gitlab-ci.yml را ایجاد کنید و مراحل ساخت و تست را تعریف کنید. به عنوان مثال، یک فایل .gitlab-ci.yml برای پروژه Node.js:

stages:
  - test
  - build

test:
  stage: test
  script:
    - npm install
    - npm test

build:
  stage: build
  script:
    - npm run build

مرحله ۴: اجرای CI

پس از commit کردن و push فایل .gitlab-ci.yml به مخزن، GitLab CI به طور خودکار Pipeline را اجرا خواهد کرد و نتایج مراحل را نمایش می‌دهد.

۴. امنیت و نظارت بر CI

مرحله ۱: استفاده از محیط‌های ایزوله

برای افزایش امنیت، تمامی مراحل CI را در محیط‌های ایزوله Docker اجرا کنید. این کار باعث می‌شود که کد و وابستگی‌ها از سرور اصلی جدا باشند و از خطاهای احتمالی جلوگیری شود.

مرحله ۲: استفاده از تست‌های امنیتی

می‌توانید از ابزارهای تست امنیتی مانند SonarQube برای شناسایی مشکلات امنیتی و کدهای مخرب استفاده کنید. SonarQube به شما کمک می‌کند تا کیفیت و امنیت کد را ارزیابی کنید.

نتیجه‌گیری

در این مستندات، به پیاده‌سازی ادغام مستمر (CI) بر روی سرورهای ابری با استفاده از Jenkins و GitLab CI پرداخته شد. با استفاده از CI، می‌توانید فرآیند تست و ساخت کدها را به صورت خودکار و مداوم انجام داده و از کیفیت کدها اطمینان حاصل کنید. این رویکرد به تیم‌های توسعه کمک می‌کند تا به سرعت تغییرات جدید را اعمال کرده و کیفیت پروژه‌های خود را بهبود بخشند.