جنکینز – Jenkins چیست؟ مفاهیم کلیدی و آموزش
جنکینز – Jenkins چیست؟ مفاهیم کلیدی و آموزش
جنکینز برای ساده کردن فرآیند تحویل نرم افزار طراحی شده است. یک پلت فرم همه کاره که برای کارهای مختلف مهندسی نرم افزار مناسب است، در درجه اول برای مدیریت خطوط لوله CI/CD استفاده می شود تا اطمینان حاصل شود که تغییرات تایید شده و به طور موثر اجرا می شوند. در این مقاله، ویژگیهای کلیدی، مزایا و کاربردهای کاربردی جنکینز در توسعه نرمافزار مدرن و نقش آن در شیوههای DevOps را بررسی خواهیم کرد.
آنچه را پوشش خواهیم داد:
- جنکینز چیست؟
- جنکینز چگونه کار می کند؟
- مفاهیم و ویژگی های اصلی جنکینز
- مزایای استفاده از جنکینز چیست؟
- معایب جنکینز چیست؟
- آموزش: چگونه از جنکینز استفاده کنیم؟
- بهترین روش ها برای کار با جنکینز
- جایگزینی برای ابزارهای عمومی CI/CD
جنکینز Jenkins چیست؟
جنکینز یک پلت فرم اتوماسیون متن باز است که برای اجرای فرآیندهای یکپارچه سازی و تحویل مداوم (CI/CD) استفاده می شود. وظایف ساخت، آزمایش و استقرار را با اجرای کارهایی که توسط رویدادهایی مانند commitهای جدید، شاخهها و pull requests در انواع مختلف محیطها ایجاد میشوند، خودکار میکند. معماری پلاگین بسیار توسعه پذیر آن، ادغام یکپارچه با ابزارها و فناوری های متعدد را امکان پذیر می کند. به عنوان یک برنامه مبتنی بر جاوا، جنکینز با چندین سیستم عامل از جمله ویندوز، لینوکس و macOS سازگار است.
جنکینز برای چه مواردی استفاده می شود؟
جنکینز برای ساخت، آزمایش و استقرار پروژه های نرم افزاری و خودکارسازی خطوط لوله CI/CD استفاده می شود. این جریان های کاری پیچیده را در مراحل مختلف توسعه هماهنگ می کند و با ابزارها و فناوری های مختلف در چرخه عمر توسعه نرم افزار یکپارچه می شود. جنکینز همچنین میتواند فرآیندهای ساخت و استقرار را نظارت و گزارش دهد.
آیا جنکینز یک ابزار CI یا CD است؟
جنکینز در درجه اول ابزاری برای ادغام پیوسته (CI) است اما می تواند برای تحویل مداوم(CD) نیز استفاده شود.
CI تیم های توسعه را تشویق می کند تا کد منبع در حال توسعه را در سیستم کنترل نسخه ادغام کنند تا خط لوله اتوماسیون مسئول ساخت و اجرای موارد آزمایشی بازخورد سریعی را به توسعه دهندگان ارائه دهد. تمرکز اصلی CI ارائه این بازخورد در سریع ترین زمان ممکن است تا به توسعه دهندگان اجازه دهد تا قبل از استقرار در محیط های تولید/بالاتر، باگ ها را برطرف کرده و به طور فعال خطرات را کاهش دهند.
CD روشی است که در آن از خطوط لوله اتوماسیون برای مدیریت انتشار نرم افزار استفاده می شود. این شامل استفاده از ابزارهایی است که ایجاد وابستگی های مصنوع استقرار را تسهیل می کند و متغیرهای خاص محیط را به روشی قابل تکرار و قابل اعتماد تنظیم می کند. تحویل مداوم با استقرار مستمر متفاوت است زیرا قبل از استقرار نرمافزارهای جدید در تولید، به تأیید دستی نیاز دارد.
جنکینز چگونه کار می کند؟
جنکینز با مخازن Git ادغام می شود، جایی که توسعه دهندگان با یکدیگر همکاری می کنند و تغییرات کد را انجام می دهند. جنکینز این تغییرات را برای شروع خودکار فرآیند ساخت، که شامل جمعآوری، آزمایش و گزارش خطا به عنوان یک حلقه بازخورد به توسعهدهندگان میشود، انتخاب میکند. این امکان چرخش سریعتر چرخه عمر توسعه را بدون تأثیر بر تولید فراهم می کند.
به عنوان بخشی از تحویل مداوم، میتوانید از وظایف مختلف اتوماسیون برای مدیریت وابستگیها و انتقال مصنوعات استقرار به مخازن مناسب استفاده کنید. نمونههایی از مصنوعات شامل فایلهای jar مورد نیاز برنامههای جاوا و تصاویر کانتینر برای استقرار مبتنی بر کانتینر است.
از آنجایی که این ابزار منبع باز و قابل توسعه است، جامعه جنکینز را برای توسعه یک اکوسیستم قوی از افزونه ها توانمند کرده است. افزونههای متعددی برای کارهای خاص مربوط به کنترل نسخه، مدیریت کد منبع، ساخت، چارچوبهای آزمایشی، اهداف استقرار، گزارشگیری و موارد دیگر در دسترس هستند. این رویکرد ماژولار همچنین به سازمان ها اجازه می دهد خطوط لوله انعطاف پذیر و بسیار سفارشی سازی شده را ایجاد کنند.
مفاهیم و ویژگی های اصلی جنکینز
درک مفاهیم خاص برای درک کامل جنکینز مهم است. لیست زیر شما را با ساخت خطوط لوله اساسی آشنا می کند که در بخش های بعدی به آنها خواهیم پرداخت.
توجه: این لیست کاملی از ویژگی ها نیست.
1. Jenkins pipeline
یک Jenkins pipeline نشان دهنده یک گردش کار سرتاسری است که برای CI/CD با استفاده از ابزارهای متعدد ساخته شده است. مراحل مورد نیاز برای ساخت، آزمایش و ارائه/ استقرار خودکار برنامهها را در محیطهای مختلف تعریف میکند.
خطوط لوله با استفاده از فایل های YAML تعریف می شوند و در زمینه جنکینز، این فایل “Jenkinsfile” نام دارد. ایجاد pipeline – خطوط لوله CI/CD استانداردسازی را تضمین میکند، بهترین شیوهها را اعمال میکند، همکاری آسان را تسهیل میکند و ارائه ویژگیهای جدید برنامه را سرعت میبخشد.
نمودار زیر نمونه Jenkins pipeline را نشان می دهد:
2. Builds in Jenkins
ساختها – Builds در جنکینز به مرحلهای اطلاق میشود که در آن کد منبع برنامه کامپایل، آزمایش و در یک مصنوع قابل استقرار بستهبندی میشود. یک ساخت می تواند به صورت دستی یا خودکار راه اندازی شود، جایی که سرور اتوماسیون جنکینز تغییرات در مخزن کد منبع را نظرسنجی می کند. بیلد شامل وظایف فرعی مختلفی مانند کامپایل کد، اجرای تست واحد، تجزیه و تحلیل کد استاتیک، تولید سند و غیره است.
بسته به زبان برنامه نویسی که نرم افزار در آن توسعه می یابد، پلاگین های مختلفی برای پشتیبانی از فرآیند ساخت در جنکینز موجود است. همچنین، بسته به نوع استقرار، انواع مختلفی از مصنوعات – artifacts نسخهبندی، ایجاد و در مکانهای از پیش تعریفشده ذخیره میشوند.
3. Jenkins triggers
همانطور که از نام آن پیداست، تریگرها اقدامات یا رویدادهایی هستند که ساخت یا استقرار خطوط لوله را آغاز می کنند. جنکینز از انواع مختلفی از محرک ها پشتیبانی می کند. نمونه هایی در زیر ذکر شده است:
SCM triggers:
نظرسنجی جنکینز برای تغییرات در مخزن SCM. هنگامی که تغییرات پیدا شد، جنکینز شروع به اجرای وظایف خط لوله می کند و آخرین کد منبع را پردازش می کند.
Parameterized triggers:
این ماشه ساخت ها را بر اساس ورودی های تعریف شده توسط کاربر فعال می کند.
Manual triggers:
ممکن است لازم باشد با وارد شدن به محیط جنکینز، خط لوله را به صراحت راه اندازی کنید.
Time-based triggers:
خطوط لوله را می توان بر اساس یک برنامه زمانی خاص اجرا کرد. یک cron job برای شروع اجرای خط لوله پس از هر بازه تنظیم شده است.
Webhooks:
هنگامی که خط لوله بسته به رویدادی که در یک پلت فرم خارجی رخ می دهد اجرا می شود، می توانیم از webhook ها برای راه اندازی اجرای خط لوله در جنکینز استفاده کنیم.
4. Jenkins artifacts
Artifacts فایل هایی هستند که از یک فرآیند ساخت بیرون می آیند و برای استقرار یا برای اهداف گزارش مورد نیاز هستند. محیط های مختلف زمان اجرا به انواع مختلفی از فایل های اجرایی و باینری نیاز دارند که اغلب از فرآیند کامپایل و ساخت ناشی می شوند.
جنکینز مدیریت Artifacts را ارائه می دهد که به کاربران اجازه می دهد به صورت محلی در سرور جنکینز یا در یک پلت فرم خارجی منتشر یا بایگانی کنند. این امر قابلیت ردیابی، تکرارپذیری و قابلیت اطمینان را در فرآیند توسعه نرم افزار بهبود می بخشد.
5. Jenkins agents
Agents اجزای زیرساختی هستند که توسط جنکینز برای اجرای کارهای خط لوله استفاده می شود. اجرای خط لوله برای اجرای اسکریپت ها و دستورات مشخص شده در مراحل اجرا به منابع محاسباتی نیاز دارد. به غیر از اجرای محلی در سرور جنکینز، امکان اجرای کارهای ساخت بر روی سرورهای دیگر، ماشین های مجازی یا در یک محیط کانتینری نیز وجود دارد.
در واقع، به شدت توصیه می شود که کارهای ساخت نباید روی سروری که جنکینز در آن نصب شده است اجرا شود. به این منابع/VM ها Agent گفته می شود. عوامل کمک می کنند تا عملیات جنکینز را فراتر از یک تیم واحد برای خدمت به اتوماسیون و ایجاد الزامات در سطح پروژه/سازمان گسترش دهند.
6. Jenkins pipeline stages
مراحل یک ساختار منطقی برای سازماندهی و تجسم گردش کار یک خط لوله در جنکینز ارائه می دهد. این به توسعه دهندگان اجازه می دهد تا یک خط لوله پیچیده جنکینز را به فازهای واضح جدا کنند، که به اشکال زدایی یا عیب یابی کمک می کند. یک مرحله نشان دهنده فازی از خط لوله است.
به عنوان مثال، ما می توانیم مراحل ساخت، تست و استقرار داشته باشیم. هر یک از این مراحل بیشتر شامل کارهایی است که وظایفی را که انتظار می رود یک مرحله انجام دهد، انجام می دهد. به طور کلی، مراحل در جنکینز یک ساختار منطقی برای خطوط لوله فراهم می کند.
مراحل در “نمای مرحله” نشان داده شده است:
7. Jenkins jobs (projects)
یک کار مجموعه ای از اقدامات از پیش تعریف شده را نشان می دهد که توسط خط لوله به ترتیب خاصی انجام می شود. به عنوان مثال، فرآیند ساخت شامل چندین کار است – build, test, push و غیره – که بلوک های سازنده خط لوله pipeline جنکینز هستند. ما می توانیم کارها را برای اجرای اسکریپت ها و دستورات مختلف پیکربندی کنیم. در جنکینز، کارها ورودیهای پارامترهای مختلفی را میپذیرند و میتوانید با استفاده از آنها گردشهای کاری پیچیده را تعریف کنید.
8. Steps in Jenkins pipelines
Steps کوچکترین واحد کار در خطوط لوله –pipeline جنکینز هستند. هر دستور یا خط نوشته شده در اسکریپت یک مرحله است. جنکینز از طیف گسترده ای از مراحل داخلی و پلاگین ارائه شده و همچنین توانایی نوشتن مراحل سفارشی به زبان Groovy پشتیبانی می کند.
برای قرار دادن مراحل، کارها و مراحل در چشم انداز، خط لوله-pipeline جنکینز دارای چندین فاز است که توسط مراحل تعریف شده اند. هر مرحله شامل چندین کار است که هر کدام با تعدادی از مراحل نوشته شده با استفاده از یک زبان برنامه نویسی تعریف شده اند.
9. Jenkins plugins
یک نصب معمولی جنکینز شامل پلت فرم اصلی است. پلاگین ها عملکرد آن را گسترش می دهند و ویژگی ها و ادغام های اضافی را برای موارد استفاده مختلف ارائه می دهند.
پلاگین های جنکینز طیف گسترده ای از ویژگی ها را در تمام مراحل مدیریت خط لوله و پلت فرم ارائه می دهند. سیستم های third-party مختلف را می توان از طریق پلاگین ها با جنکینز ادغام کرد. موارد سفارشی را نیز می توان توسعه داد. پلاگین ها از قابلیت استفاده مجدد استفاده می کنند، بنابراین بهره وری و کارایی تیم توسعه را افزایش می دهند.
10. Jenkinsfile
Jenkinsfile یک فایل متنی است که خط لوله- pipeline را به عنوان کد به سرور جنکینز توصیف می کند. هر پروژه ای که از جنکینز برای CI/CD خود استفاده می کند، این فایل را در فهرست اصلی پروژه دارد و معمولاً به مخزن کد منبع متعهد است. این باعث می شود که سرور جنکینز ترتیب مراحلی را که باید در هر مرحله انجام شود، درک کند. این فایل راهی برای تعریف خطوط لولهpipeline به شیوهای کنترلشده و قابل تکرار ارائه میکند و به تیمها اجازه میدهد فرآیند تحویل خود را در کنار کد برنامه خود مدیریت کنند.
در زیر نمونه ای از Jenkinsfile برای خط لوله–pipeline تحویل پیوستهcontinuous delivery -CD است که شامل سه مرحله است:
معماری جنکینز چیست؟
هسته جنکینز با استفاده از زبان برنامه نویسی جاوا توسعه یافته است. نصب ساده یک سرور جنکینز شامل اجزای داخلی مختلفی است که ارتباطات را مدیریت کرده و درخواستهای برنامههای خارجی مانند CLI، درخواستها، عوامل و غیره را پردازش میکند.
نمودار زیر تمام اجزای مهم جنکینز را نشان می دهد:
ما برخی از جنبه های مهم را در زیر بررسی می کنیم تا بهتر بفهمیم که جنکینز چگونه در داخل کار می کند.
JENKINS_HOME
در سروری که جنکینز در آن نصب شده است، تمام فایلهای مورد نیاز برای مدیریت و پیکربندی پلاگینها و خطوط لوله، آرتیفکتهای ساخت، دادههای زمان اجرا و غیره در یک فهرست خاص به نام «JENKINS_HOME» ذخیره میشوند. بسته به سیستم عامل، مسیر دقیق این فهرست ممکن است متفاوت باشد. فایل های پیکربندی ذخیره شده در این دایرکتوری تداوم راه اندازی مجدد سرور را تضمین می کند. این همچنین در صورت بازیابی فاجعه مفید است و یک نسخه پشتیبان ایجاد می کند.
Business layer
این لایه مسئول مدیریت فعالیت های اصلی مانند مدیریت شغل و کاربر، اجرای ساخت و ادغام پلاگین است. لایه تجاری تعاملات بین این اجزا و درخواست های دریافتی از سیستم های خارجی را مدیریت می کند. هر درخواست دریافتی برای راه اندازی اجرای خط لوله برای مجوزها تأیید می شود، اقدامات را به ماشین های عامل واگذار می کند، به روز رسانی وضعیت را در دسترس سیستم های مناسب قرار می دهد و اعلان ها را مدیریت می کند. لایه تجاری نشان داده شده در نمودار معماری جنکینز، سیستم مرکزی است که مقدمات را انجام می دهد و پیچیدگی را انتزاعی می کند.
Stapler web framework
در نمودار بالا، جنکینز ارتباطات HTTP را از طریق CLI، نقاط پایانی و رابط های وب پیاده سازی می کند. چارچوب وب Stapler مسئول رسیدگی به درخواست های HTTP ورودی و تولید محتوای وب پویا است. نگاشت URL ها و درخواست بدنه ها را به کلاس های جاوا مناسب انجام می دهد که بسیار مهم است. این امر توسعه پلاگین های جدید را برای جنکینز آسان تر می کند زیرا الگوهای ارتباطی توسط چارچوب وب Stapler استاندارد شده اند.
Remoting
remoting در معماری جنکینز یک فایل JAR اجرایی است که مسئول ارتباط بین هسته جنکینز و عوامل است. با توزیع مشاغل ساخت به چندین عامل، اجرای ساخت را غیرمتمرکز می کند. این همچنین امکان اجرای موازی را فراهم می کند و در نتیجه مقیاس پذیری افزایش می یابد.
مزایای استفاده از جنکینز چیست؟
جنکینز به دلیل انعطاف پذیری، اکوسیستم افزونه گسترده و پشتیبانی قوی جامعه همچنان محبوب است. این یکپارچه سازی آسان با ابزارهای مختلف را ارائه می دهد، خطوط لوله CI/CD را به طور موثر خودکار می کند، و از ساخت های توزیع شده پشتیبانی می کند. جنکینز با منبع باز و رایگان بودن، راه حلی مقرون به صرفه برای سازمان ها در هر اندازه ارائه می دهد. بلوغ، قابلیت اطمینان و بهبود مستمر آن را به یک انتخاب قابل اعتماد برای خودکارسازی فرآیندهای توسعه نرم افزار تبدیل کرده است.
بیایید با جزئیات بیشتر به مزایای جنکینز نگاه کنیم:
معایب جنکینز چیست؟
چالش های اصلی استفاده از جنکینز شامل مسائل مربوط به عملکرد و مقیاس پذیری، پیکربندی و نگهداری پیچیده و مشکلات مدیریت پلاگین است. جنکینز همچنین میتواند منابع فشرده باشد و منجر به ساختهای کند شود و اگر به درستی پیکربندی نشود ممکن است دارای آسیبپذیریهای امنیتی باشد. در اینجا بزرگترین محدودیت های جنکینز آمده است:
آموزش: چگونه از جنکینز استفاده کنیم؟
بیایید یک پروژه Jenkins ساده با خط لوله در سرور Jenkins که به صورت محلی میزبانی شده است بسازیم. در این تمرین عملی، ما به اجزای مختلفی که در این پست مورد بحث قرار گرفته اند، خواهیم پرداخت.
استفاده از جنکینز شامل مراحل زیر است:
وارد داشبورد جنکینز شوید.
یک خط لوله جنکینز ایجاد کنید.
پیکربندی گزینه های خط لوله یک اسکریپت خط لوله ایجاد کنید.
اجرای خط لوله را فعال کنید.
مرحله 1: وارد داشبورد جنکینز شوید
هنگامی که Jenkins را برای اولین بار نصب می کنید، از شما خواسته می شود که اعتبار ورود به سیستم را برای کاربر ادمین تنظیم کنید. از این اعتبارنامه ها برای ورود به سرور جنکینز در http://localhost:8080 استفاده کنید.
پس از ورود به سیستم، مانند تصویر زیر، یک داشبورد در رابط کاربری وب Jenkins به شما نمایش داده می شود. اگر نصب جدیدی داشته باشید، هیچ خط لوله ای را نخواهید دید.
مرحله 2: خط لوله جنکینز را ایجاد کنید
از منو روی دکمه “مورد جدید” کلیک کنید. برای انتخاب نوع “مورد” که می خواهید ایجاد کنید، صفحه ای به شما نمایش داده می شود. مانند تصویر زیر، “Pipeline” را انتخاب کنید و به این خط لوله یک نام بدهید. روی “OK” کلیک کنید و به صفحه پیکربندی هدایت می شوید.
مرحله 3: گزینه های خط لوله را پیکربندی کنید
در برگه عمومی، چندین گزینه پیکربندی مربوط به پارامترسازی، ادغام SCM، همزمانی ساخت و غیره را مشاهده خواهید کرد که در زیر نشان داده شده است. همچنین باید یک بخش جداگانه برای تنظیم انواع مختلف تریگرهای ساخت مشاهده کنید. فعلاً میتوانیم این گزینههای پیکربندی را دست نخورده بگذاریم.
مرحله 4: یک اسکریپت خط لوله ایجاد کنید
به قسمت Pipeline بروید. در اینجا، شما دو گزینه برای ایجاد اسکریپت های خط لوله دارید: یا آنها را از SCM واکشی کنید یا خودتان آنها را بنویسید. ما هیچ SCM را پیکربندی نکردهایم، بنابراین اسکریپت خط لوله ساده خود را در بلوک اسکریپت زیر مینویسیم:
اسکریپت زیر را اضافه کنید:
این یک اسکریپت خط لوله بازنمایی بسیار ابتدایی است که در Groovy نوشته شده است. بیرونی ترین پرانتز نشان دهنده خود خط لوله است. سپس ویژگی agent را به عنوان “any” تعریف می کنیم زیرا در حال حاضر می توانیم این خط لوله را روی هر عامل موجود اجرا کنیم. در این مورد، عامل نیز روی همان ماشین سرور جنکینز اجرا میشود، زیرا ما هیچ عاملی را به صراحت پیکربندی نکردهایم. مشخصه agent توسط بلوک های مرحله متوالی دنبال می شود که به نوبه خود مراحلی را که باید در هر مرحله اجرا شوند را مشخص می کنند.
خط لوله بالا سه مرحله را شبیه سازی می کند:
مرحله 1 – کد منبع را از SCM خارج کنید. به پیکربندی SCM و مراحل اضافی نیاز دارد.
مرحله 2 – کد منبعی که pull می شود را کامپایل کنید.
مرحله 3 – تست های واحد را روی کد کامپایل شده اجرا کنید.
روی “ذخیره” کلیک کنید.
مرحله 5: خط لوله را به صورت دستی فعال کنید
به خط لوله جدید ایجاد شده بروید و گزینه های مختلفی مانند زیر به شما نمایش داده می شود:
اگر می خواهید پیکربندی های مرحله قبل را مجدداً مشاهده کنید، روی “پیکربندی” کلیک کنید. در غیر این صورت، بر روی “Build Now” کلیک کنید تا اجرای خط لوله آغاز شود. صفحه زیر یک خلاصه گرافیکی از تمام اجرای خط لوله را نشان می دهد، همانطور که در زیر نشان داده شده است:
در اینجا می توان فهمید که خط لوله دو بار اجرا شده است و اجرای دوم موفقیت آمیز بوده است. برای بررسی گزارشهای اجرای دوم، روی “#2” در زیر Build History کلیک کنید و سپس روی “Console Output” کلیک کنید.
ما با موفقیت یک خط لوله بسیار ابتدایی را در جنکینز اجرا کردیم! به شما توصیه میشود رابط جنکینز را کاوش کنید، SCM را پیکربندی کنید، افزونهها را کاوش کنید و خطوط لوله معنادارتری بسازید. برای شروع، آموزش مدیریت Terraform با جنکینز را بررسی کنید.
بهترین روش ها برای کار با جنکینز
در اینجا خلاصه ای سریع از برخی از بهترین روش هایی که باید هنگام استفاده از جنکینز رعایت کنید، آورده شده است:
دسترسی به فایل های پیکربندی مورد استفاده جنکینز را محدود کرده و ایمن کنید، زیرا ممکن است حاوی اطلاعات حساسی باشند. توصیه می شود از یک افزونه اعتبارنامه برای مدیریت اعتبار حساب سرویس مورد استفاده برای اتوماسیون استفاده کنید.
Jenkinsfile را به عنوان کد در نظر بگیرید و آن را به SCM متعهد کنید. این امکان نسخهسازی تعریف خط لوله را فراهم میکند و به بازگشت آسان، همکاری تیمی و قابلیت ردیابی کمک میکند.
جنکینز همه چیز در مورد اتوماسیون است. تریگرها را برای خودکارسازی ساخت خطوط لوله پیکربندی کنید.
پیکربندی خطوط لوله برای شکست در مراحل اولیه اجرا و پیاده سازی پیام های ثبت اطلاعات. این به توسعه دهندگان امکان می دهد تا خطاها را به سرعت درک کنند و بنابراین بر رفع اشکالات برای تحویل سریعتر و قابل اطمینان تر نرم افزار تمرکز کنند.
به طور منظم از پیکربندی جنکینز نسخه پشتیبان تهیه کنید تا در صورت بروز فاجعه، بازیابی منجر به حداقل از دست رفتن اطلاعات شود.
از پلاگین ها برای ساخت سریعتر خطوط لوله به جای ساختن آنها از ابتدا استفاده کنید مگر اینکه کاملاً ضروری باشد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.