جنکینز 101: شروع کار با جنکینز

جنکینز کیست یا چیست
جنکینز یک سرور CI/CD منبع باز و رایگان است. برنامه مبتنی بر جاوا به عنوان بستری برای توسعه، آزمایش و انتشار عمل می کند.
بنابراین، چرا جنکینز؟
Gitlab CI/CD، GitHub CI/CD، CircleCI، Travis CI، Bitbucket pipeline و غیره تنها تعدادی از فناوریهای CI/CD هستند که معمولاً مورد استفاده قرار میگیرند. بسته به موقعیت، می توان از چندین ابزار تا حد امکان استفاده کرد. با این حال، جنکینز دارای چند مزیت است که آن را در مقایسه با رقبای خود ارجح می کند.
برای شروع، همانطور که در هنگام انجام تنظیمات خواهیم دید، نصب و پیکربندی سریع و آسان است. مدیریت مبتنی بر وب این پلت فرم کاربر پسند است و امکان سفارشی سازی گسترده ای را در فرآیندهای ساخت و ساز فراهم می کند. برای تطبیق پذیری و شخصی سازی بیشتر، از یک اکوسیستم پلاگین استفاده می کند. مقیاس پذیری از طریق عوامل و مجریان ساخت غیرمتمرکز جنکینز ارائه می شود. در نهایت، جامعه پررونق کاربران و مستندات آنلاین کامل منابع ارزشمندی هستند.
1. جنکینز استاد گره
داشبورد اداری جنکینز بر روی کنترلر/مستر جنکینز میزبانی می شود. این یک پورتال اداری مبتنی بر وب برای راه اندازی مشاغل، خطوط لوله و پلاگین ها فراهم می کند. استاد برنامه ریزی و توزیع مشاغل ساخت را به عوامل ساخت هماهنگ می کند.
2. عامل ساخت جنکینز
یک build agent که Slave نیز نامیده میشود، یک سرور اختصاصی است که استاد جنکینز با ارسال پیامهای بیلد با آن ارتباط برقرار میکند. همانطور که در نمودار بالا نشان داده شده است، هر عامل قادر به اجرای سیستم عامل خود است.
3. ساخت پروژه
پروژه Build پارامترهایی را برای تنظیم ساخت یک نرم افزار خاص تعریف می کند. الزامات ساخت متفاوتی برای انواع مختلف پروژه وجود دارد. پروژه ساخت پیش فرض در جنکینز عبارتند از:
- پروژه سبک آزاد
- خط لوله
- پروژه چند پیکربندی
- پوشه
- سازمان GitHub
- خط لوله چند شاخه
هر انتخاب پروژه با جزئیات در رابط کاربری جنکینز توضیح داده شده است.
4. برچسب بزنید
گروه بندی عوامل ساخت مختلف بر اساس ابرداده های تعریف شده توسط کاربر. برچسبها را میتوان برای دستهبندی Build Agentها به روشهای مختلفی استفاده کرد، مانند سیستم عامل یا بر اساس نوع فناوری ساخت.
5. گره
همه ماشینهایی را که میتوانند یک خط لوله یا پروژه ساخت معین را اجرا کنند، برچسبگذاری میکند. اکنون می توان محل اجرا را تعیین کرد. خطوط لوله اسکریپت شده از گره ها استفاده می کنند.
6. عامل
همه ماشینهایی را که میتوانند یک خط لوله یا پروژه ساخت معین را اجرا کنند، برچسبگذاری میکند. اکنون می توان محل اجرا را تعیین کرد. خط لوله Declarative از عوامل استفاده می کند.
7. مصنوع
زمانی که یک ساخت و ساز تکمیل شد، سند ایجاد شد. این می تواند یک اسمبلی A.NET، یک جاوا JAR یا حتی یک آرشیو ZIP ساده باشد. مصنوعات تغییرناپذیر در نظر گرفته می شوند و نباید خارج از فرآیند ساخت و ساز که در ابتدا آنها را ایجاد کرده است تغییر داده شوند. اثر انگشت، که یک جمعبندی از فایل Artefact مربوطه است، برای اهداف ردیابی و ردیابی استفاده میشود.
8. خط لوله
خط لوله یک مفهوم مدل سازی است که منطق و فرآیند اساسی ساختمان را نشان می دهد و محصور می کند. جنکینز دو نحو مجزا برای ساخت خطوط لوله ارائه می دهد:
– خطوط لوله اعلامی
یک نحو با یک دیدگاه قوی. قوانین واضح تر و سفت تر تنظیم شده اند. آنها نسبت به خطوط لوله اسکریپت شده سازگاری کمتری دارند، اما اگر Groovy را نمی شناسید، استفاده از آنها ساده تر است.
– خطوط لوله اسکریپت
این زبان که با استفاده از زبان برنامه نویسی Groovy توسعه یافته است، به شما این امکان را می دهد که خطوط لوله پردازشی بسیار شخصی سازی شده ایجاد کنید. با این حال، برای انجام هر کاری به تخصص Groovy نیاز دارید. کسانی که مسئول ساخت و انتشار نرم افزار هستند و با Groovy آشنایی ندارند ممکن است نخواهند از طریق منحنی یادگیری اضافی عبور کنند.
امروزه، خطوط لوله اعلامی بیشتر مورد استفاده قرار می گیرند، زیرا یادگیری آن آسان تر است و با اکثر ابزارهای SCM مانند Gihub، Bitbucket و غیره کار می کند.
روشهای خودکار معروف به خط لوله CI/CD (ادغام پیوسته/ استقرار مستمر) برای ادغام مداوم تغییرات کد، ساخت و آزمایش برنامهها و استقرار آنها در تولید استفاده میشوند. دریافت سریع و مطمئن بهروزرسانیها به کاربران، تمرکز اصلی یک گردش کار CI/CD است.
مختلف مراحل که یک را تشکیل می دهند CI/CD معمولی خط لوله به شرح زیر است:
- یکپارچه سازی کد: در این مرحله، توسعه دهندگان به روز رسانی کدهای فردی خود را در یک مخزن مرکزی ترکیب می کنند.
- ساختن: در این مرحله سیستم CI کد را کامپایل کرده و هر تستی را در این مرحله اجرا می کند.
- تست: این مرحله شامل اجرای تست های مختلف بر روی کد است، مانند تست های واحد، تست های یکپارچه سازی و تست های تمام پشته.
- گسترش: در این مرحله کد در محیط زنده (prod) یا تست (staging) منتشر می شود
- نظارت بر: این معمولا آخرین مرحله است. در این مرحله، سیستم برنامه در حال اجرا را بررسی می کند تا مطمئن شود همه چیز به خوبی اجرا می شود.
9. مرحله
برای تقسیم کل خط لوله به قطعات کوچکتر و قابل کنترل تر استفاده می شود. شناسایی فازهای گسسته دارای مزایای مختلفی است:
- چارچوبی را برای خالق خط لوله برای اجرای نظم فراهم می کند.
- برای نمایش وضعیت ساخت در حین اجرای ساخت استفاده می شود.
Clone، Build، Test، Packaging و Deployment همگی نمونه هایی از مراحل معمولی در چرخه حیات CI/CD هستند.
یک مرحله خط لوله می تواند از چندین مرحله خط لوله تشکیل شود.
10. مرحله
یک مرحله خط لوله یک کار ساخت و آنچه باید رخ دهد را مشخص می کند. یک مرحله خط لوله اغلب شامل چندین فاز خط لوله است.
11. فضای کار
یک فهرست سیستم فایل اختصاصی که در آن کار ساخت برای خط لوله فعلی یا فرآیند ساخت انجام می شود. هنگام اشکال زدایی بیلدها، این دایرکتوری و ساختار زیر شاخه آن برای بررسی مفید هستند. فضای کاری بر روی عامل ساخت که خط لوله یا کار ساخت برای اجرا در آن پیکربندی شده است ایجاد می شود.
12. پایین دست
این به خط لوله یا کار ساخت دیگری اشاره دارد که در نتیجه خط لوله فعلی یا کار ساخت راه اندازی می شود.
13. بالادست
این کار به خط لوله ای اشاره دارد که خط لوله فعلی یا کار ساخت را شروع کرده است.
پیکربندی جنکینز
یک پست وبلاگ در مورد نحوه نصب Jenkins در AWS را می توانید در اینجا پیدا کنید.
به یاد داشته باشید که “initialAdminPassword
“برای اولین باری که وارد می شوید ارزش گذاری کنید.
برای نصب افزونه های رایج، را انتخاب کنید افزونه های پیشنهادی را نصب کنید:
پس از دانلود افزونه ها، خود را وارد کنید اعتبارنامه و کلیک کنید “ذخیره و ادامه دهیدبرای دسترسی به داشبورد خود.
اکنون که اصول جنکینز را پوشش دادیم، بیایید دستمان را با برخی از کارها و پروژه های چالش #90DaysofDevops که از روز 22 تا روز 29 اجرا می شود، کثیف کنیم.
یک نمونه خط لوله آزاد ایجاد کنید که «Hello World!!
- با استفاده از پروژه Freestyle یک شی جدید بسازید. مثلا اسمش رو بذار
HelloBuildJob
. در پایین سمت راست، کلیک کنیدOK
. - پس از ایجاد پروژه، به قسمت Configuration و سپس به “
Build Steps
بخش “، جایی که شما ” را اضافه می کنیدExecute Shell
” گزینه.
- دستور shell را برای چاپ “Hello World!!” اضافه کنید.
echo "Hello World!!
-
صرفه جویی
-
اکنون روی “” کلیک کنید
Build Now
دکمه “. اگر همه چیز مرتب باشد، یک تیک سبز رنگ با علامت #1 در کنار آن خواهید دید که نشان می دهد اولین ساخت موفق بوده است.
- روی شماره ساخت کلیک کنید و به دنبال “
Hello World
متن در صفحه کنسول.
که نتیجه می گیرد پروژه اول!
ابتدا با ایجاد یک عامل برای برنامه خود شروع می کنیم. ما یک پروژه سبک آزاد جنکینز برای این کار ایجاد خواهیم کرد.
- App یک برنامه کاری است که ممکن است در این git repo پیدا شود.
- همانطور که قبلاً گفته شد، یک آیتم جدید به نام toDoApp ایجاد می کنیم و Freestyle Project را به عنوان کار ساخت انتخاب می کنیم. OK را انتخاب کنید.
- در تب Configuration، Github Project را انتخاب کرده و URL GitHub را وارد کنید. تکرار این فرآیند در “مدیریت کد منبع” بخش.
- از آنجایی که کد منبع در شاخه اصلی پیش فرض است، بقیه را به صورت پیش فرض بگذارید. در غیر این صورت، می توانید به شعبه صحیح بروید.
- دستور ایجاد یک تصویر Docker برای کانتینر را به آن اضافه کنید
build
مراحل - همچنین، دستور دوم را برای اجرای یک ظرف با استفاده از تصویری که در مرحله قبل ایجاد کردید اضافه کنید.
docker build -t todoapp .
docker run -d --name todoapp_c -p 8000:8000 todoapp
- اکنون می توانید با کلیک بر روی ” پروژه را بسازید
Build now
” دکمه.
- ما میتوانیم با بررسی کد منبع روی دستگاه کلون شده و مشاهده کنیم پوشه فضای کاری زیر
/var/lib/jenkins/workspace
.
- ایجاد یک
Jenkins project
که دستور “docker-compose up -d
برای شروع چندین کانتینر تعریف شده در فایل نوشتن docker. - یک فایل به نام ایجاد کنید
docker-compose.yml
در پوشه پروژه شما
- اضافه کردن یک “
docker-compose down
” مرحله ساخت برای از بین بردن هر کانتینر تعریف شده در docker-نوشتن فایل. این به جلوگیری از ظروف ناسازگار کمک می کند. - اکنون، “
docker-compose up -d
دستور برای چرخاندن ظروف docker جدید مطابق با محتوای docker-نوشتن فایل.
کانتینر به شکل زیر راه اندازی شده است:
همین برای امروز!!!👋
امروز ما اولین کار خود را با ابزار CI خود جنکینز ایجاد کردیم. ما همچنین به چند شغل ساده که با استفاده از جنکینز ایجاد کردیم نگاه کردیم.
برای مقاله بعدی خود، یک پروژه کامل CI/CD با جنکینز به عنوان ابزار CI خود ایجاد خواهیم کرد.
ممنون از زمانی که برای خواندن این مطلب گذاشته اید! اگر مقاله را دوست داشتید، لطفاً (حداکثر 50 بار!) کف بزنید و در لینکدین و مدیوم با من ارتباط برقرار کنید تا در مقالات بعدی من به روز باشید. 😅