کارهای تکراری معمولاً خسته کننده هستند و در نهایت وقت و انرژی شما را می گیرند. با گذشت زمان، چندین ابزار اتوماسیون برای کمک به کاهش دردسر اجرای کارهای تکراری تولید شده است. یکی از این ابزارهای اتوماسیون ، جنکینز است. Jenkins یک سرور اتوماسیون Open Source است که برای کمک به توسعه دهندگان نرم افزار در ساخت ، آزمایش و deploy (استقرار) برنامه ها و در نتیجه ساده سازی روند ادغام و تحویل مداوم CI/CD (Continuous Integration/Continuous Delivery) طراحی شده است. در این مقاله ، ما سرور Jenkins را در Docker به عنوان یک سرویس systemd اجرا خواهیم کرد.

پیش نیازها داکر روی سیستم لینوکس شما نصب شده است. یک کاربر عادی و دارای امتیازات sudo وجود دارد.

مرحله 1) Docker Engine را نصب کنید

برای شروع ، شما بایدDocker Engine را روی سیستم خود نصب کنید.

برای چگونگی نصب داکر مطلب “نحوه نصب Docker CE در CentOS 8 / RHEL 8” را دنبال کنید.

برای نمایش نسخه docker، دستور زیر را اجرا کنید:

sudo docker version

از عکس بالا ، تأیید کردیم که docker نصب شده است و ما در حال اجرا کردن docker نسخه 19.03.13 هستیم.

مرحله 2) یک کاربر jenkins ایجاد کنید

برای مدیریت سرویس Jenkins نیاز به یک کاربر سیستمی خواهیم داشت. ابتدا یک گروه سیستم برای جنکینز ایجاد کنید:

sudo groupadd --system jenkins

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

sudo useradd -s /sbin/nologin --system -g jenkins jenkins

و در آخر همانطور که نشان داده شده کاربر Jenkins را به گروه docker اضافه کنید:

sudo usermod -aG docker jenkins

برای تأیید اضافه شدن کاربر Jenkins به گروه docker ، دستور id را همانطور که نشان داده شده اجرا کنید:

id jenkins

مرحله 3) دریافت ایمیج Jenkins از Docker Hub:

sudo docker pull jenkins/jenkins:lts

با داشتن اینترنت نسبتا پایدار این‌کار بیشتر از چند ثانیه طول نمی‌کشد. پس از دانلود ، با اجرای دستور زیر مطمئن شوید که ایمیج جنکینز وجود دارد:

sudo docker images | grep jenkins

جنکینز برای ذخیره داده ها و استفاده مجدد حتی در صورت خرابی کانتینر به یک محل ذخیره‌سازی دائمی نیاز دارد. بنابراین یک دایرکتوری ذخیره سازی ایجاد خواهیم کرد.

sudo mkdir /var/jenkins 
sudo chown -R 1000:1000 /var/jenkins

مرحله 4) یک سرویس systemd برای Jenkins ایجاد کنید

با استفاده از ویرایشگر متن مورد نظر خود ، یک فایل systemd Jenkins ایجاد کنید:

sudo vim /etc/systemd/system/jenkins-docker.service

محتویات زیر را جایگذاری کنید و پرونده را ذخیره کنید.

[Unit]
Description=Jenkins Server
Documentation=https://jenkins.io/doc/
After=docker.service
Requires=docker.service
[Service]
Type=simple
User=jenkins
Group=jenkins
TimeoutStartSec=0
Restart=on-failure
RestartSec=30s
ExecStartPre=-/usr/bin/docker kill jenkins-server
ExecStartPre=-/usr/bin/docker rm jenkins-server
ExecStartPre=/usr/bin/docker pull jenkins/jenkins:lts
ExecStart=/usr/bin/docker run --name jenkins-server --publish 8080:8080 --publish 50000:50000 --volume /var/jenkins:/var/jenkins_home jenkins/jenkins:lts
SyslogIdentifier=jenkins
ExecStop=/usr/bin/docker stop jenkins-server
[Install]
WantedBy=multi-user.target

برای شروع سرویس Jenkins ، ابتدا systemd را بارگیری مجدد کنید و پس از آن جنکینز را start کنید.

sudo systemctl daemon-reload && sudo systemctl start jenkins-docker

بررسی کنید که آیا جنکینز در حال اجرا است یا خیر. برای انجام این کار ، ما موارد زیر را اجرا خواهیم کرد:

sudo systemctl status jenkins-docker

جنکینز به عنوان یک سرویس systemd فعال است. از آنجا که جنکینز روی پورت 8080 در حال اجرا است ، پورت 8080 را روی فایروال همانطور که نشان داده شده باز کنید:در Centos :

sudo firewall-cmd --permanent --add-port=8080/tcp 
sudo firewall-cmd --reload

در Ubuntu :

sudo ufw allow 8080

برای تنظیم جنکینز ، به سادگی همانطور که در تصویر نشان داده شده ، URL سرور را مرورگر وارد کنید:همانطور که نشان داده شده است صفحه “باز کردن قفل جنکینز” را دریافت خواهید کرد. برای ادامه کار ، باید رمز عبوری را که در پرونده نشان داده شده است ارائه دهید

cat /var/jenkins/secrets/initialAdminPassword

پس از اتمام ، روی “ادامه” کلیک کنید.در مرحله بعد ، گزینه “Install suggested plugins” را مانند تصویر انتخاب کنید.

سپس یک کاربر مدیریتی برای حساب Jenkins ایجاد کنید و روی “ذخیره و ادامه” کلیک کنید

نصب کننده شما را در مراحل باقی مانده راهنمایی می کند. پس از نصب موفقیت آمیز ، داشبورد جنکینز زیر را دریافت خواهیم کرد:

شما یاد گرفتید که چگونه Jenkins را درون docker container به عنوان یک سرویس systemd اجرا کنید.

نوشته‌های مشابه

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *