ابزار Jenkins یک ابزار منبع باز محبوب برای خودکارسازی فرآیندهای توسعه نرم افزار است. در این راهنما، ما ابتدا jenkins را با استفاده از ابزارهای docker و docker-compose راهاندازی میکنیم و سپس یک pipeline ساده برای مثال ایجاد میکنیم.
توجه داشته باشید که لازم است Docker را بر روی سیستم خود نصب کرده باشید.
یک فایل به نام docker-compose.yml
ایجاد کرده و محتوای آن را به صورت زیر قرار میدهیم:
services:
jenkins:
image: jenkins/jenkins:lts
privileged: true
user: root
ports:
- 8080:8080
- 50000:50000
container_name: jenkins
volumes:
- jenkins_home:/var/jenkins_home
volumes:
jenkins_home:
سپس دستور زیر را اجرا کنید:
docker compose up -d
اگر در pull کردن image دچار خطای ۴۰۳ شدید، میتوانید اسم image را به registry.docker.ir/jenkins/jenkins:lts
تغییر دهید تا از یک registry داخلی برای pull کردن image استفاده شود.
پس از اجرای این دستور، سرور جنکنیز باید در آدرس localhost:8080
قابل دسترسی باشد.
برای به دست آوردن رمز عبور یوزر admin، دستور زیر را اجرا کنید.
docker compose logs
پس از آن پیامی شبیه پیام زیر مشاهده خواهید کرد:
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
[password]
رمز عبور نشان داده شده را در پنل jenkins وارد کنید. سپس گزینهی install suggested plugins را انتخاب کنید. سپس صبر کنید تا دانلود plugin ها تمام شود.
سپس اطلاعات مربوطه برای یوزر admin را مطابق میل خود وارد کنید. در صفحه بعدی هم دکمه save and finish را بزنید. در نهایت سرور جنکینز شما آماده است!
از منوی بالا، سمت راست، گزینهی New Item را انتخاب کنید.
سپس یک نام برای pipeline انتخاب کنید و گزینه pipeline را انتخاب کنید.
در ادامه، در بخش pipeline، در script، کد زیر را قرار میدهیم:
pipeline {
agent any
stages {
stage('Clone Repository') {
steps {
checkout scmGit(
branches: [[name: 'main']],
userRemoteConfigs: [[url: 'https://github.com/MuhammadKhosravi/ci-cd-test.git']])
}
}
stage('Run Tests') {
steps {
// here you can run your sample tests
sh """
ls
echo "Running Tests..."
"""
}
}
stage('Deploy') {
steps {
// you can connect to your server in here and deploy the current release
sh """
echo "Deploying..."
"""
}
}
}
}
پس از آن هرگاه روی Build Now در سمت چپ کلیک کنیم، یک pipeline جدید اجرا میشود.
همانطور که در پایپلاین بالا مشاهده میکنید، میتوان از این پایپلاین برای اجرای تستها، build کردن پروژه، وصل شدن به سرور و استقرار نسخه جدید بر روی آن استفاده کرد.
همانطور که در شکل زیر مشاهده میکنید، گزینههای بسیاری برای اجرا شدن اتوماتیک پایپلاین بعد از trigger های مختلف وجود دارند.
در اینجا چهارمورد از آنها را توضیح میدهیم:
تغییرات SCM (SCM Changes (Git Push, Pull Request, etc.)): هنگامی که تغییراتی در یک مخزن گیت به وجود میآید (مثلا یک کامیت جدید) جنکینز به صورت خودکار پایپلاین را اجرا میکند.
برنامه ریزی شده (Build periodically): میتوان مشخص کرد که در بازههای مشخص، پروژه بیلد شود. به عنوان مثال، هر روز ساعت ۹ صبح.
محرکهای خارجی (Remote Trigger): این مورد تا حدی به این موضوع برمیگردد که از چه remote repository provider ای استفاده میکنید. به عنوان مثال در github میتوانید یک webhook تعریف کنید که هنگام انجام یک تغییر، آن را فراخوانی کند تا یک pipeline اجرا شود.