کارهای تکراری معمولاً خسته کننده هستند و در نهایت وقت و انرژی شما را می گیرند. با گذشت زمان، چندین ابزار اتوماسیون برای کمک به کاهش دردسر اجرای کارهای تکراری تولید شده است. یکی از این ابزارهای اتوماسیون ، جنکینز است. 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 اجرا کنید.