ادغام مستمر (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 ایجاد کنید. برای این منظور، مراحل زیر را دنبال کنید:
- از داشبورد Jenkins گزینه New Item را انتخاب کنید.
- نام پروژه را وارد کرده و نوع پروژه را به Pipeline تنظیم کنید.
- روی 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!'
}
}
}
این اسکریپت مراحل زیر را به ترتیب انجام میدهد:
- Checkout: کد را از مخزن دریافت میکند.
- Install Dependencies: وابستگیها را نصب میکند.
- Run Tests: تستها را اجرا میکند.
- 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، میتوانید فرآیند تست و ساخت کدها را به صورت خودکار و مداوم انجام داده و از کیفیت کدها اطمینان حاصل کنید. این رویکرد به تیمهای توسعه کمک میکند تا به سرعت تغییرات جدید را اعمال کرده و کیفیت پروژههای خود را بهبود بخشند.