یکی از بهترین ابزارهایی که در زمینه CI وجود دارد وب اپلیکیشن Jenkins می باشد. Jenkins صدها پلاگین برای پشتیبانی از ساخت، راه اندازی و اتوماسیون هر پروژه فراهم می کند.
در این مقاله عملیات خودکار Build و پابلیش یک وب اپلیکیشن که بر روی TFSنگهداری می شود ، شرح داده خواد شد که در نتیجه بعد از هر بار تغییر سورس کد و CheckIn تغییرات انجام شده بصورت خودکار بر روی سرور Remote پابلیش شود.
Jenkins:
از Jenkins می توان برای اجرای دستورات طبقه بندی و مرتب شده جهت تست ، تولید ، و تحویل یا پابلیش نرم افزار استفاده کرد.
Job در Jenkins یکی از اصلی ترین بخش های این نرم افزار است. در صفحه اصلی و از پنل سمت چپ (تصویر بالا) از New Item برای تعریف وتنظیم Job ها استفاده می کنیم.
Job شامل عملیاتی است که می خواهیم روی پروژه یا پروژه ها اجرا شود. Job ها معمولا همان کارهایی هستند که قرار است برای تولید نسخه ، پابلیش،تست کدهای اصلی مان انجام دهیم. مثلا یک Job میتواند شامل عملیاتی باشد که به ازای هر بار Check in یک نسخه از پروژ ایجادنماید. جهت برقراری ارتباط با TFS پلاگین مورد نیاز را نصب و برای انجام سایر عملیات روی پروژه ، یک job تعریف کنید.
تعریف Job :
1- در ابتدای کار جهت تعریف یک Job از پنل سمت چپ صفحه اصلی بر روی new item کلیک کنید.
2- یک نام برای item جدید انتخاب کرده و گزینه free style project را انتخاب کنید و برروی ok کلیک کنید.
3- لیست Job های موجود در Jenkins در صفحه اصلی نمایش داده می شوند.
نصب پلاگین TFS :
جهت برقراری ارتباط بین Jenkins و TFS ابتدا در مسیر زیر
Manage Jenkins > Manage Plugins > Team Foundation Server
پلاگین Team Foundation Server را نصب کنید.
برقراری ارتباط با TFS :
1- در صفحه اصلی Job ایجاد شده را کلیک و سپس در قسمت پنل سمت چپ گزینه Configure را انتخاب کنید.
2- در صفحه جدید و در قسمت Source Code Management گزینه Team Foundation Version Control (TFVC) را انتخاب کنید و تنظیمات مربوط به repository خود را وارد کنید.
3- در فیلد های Username و User Password ، نام کاربری و رمز عبور معتبر TFS خود را وارد کنید.
4- برای مطلع شدن Jenkins از آخرین تغییرات بر روی سورس کد ، نیاز به تعریف یک Service hook در سرور TFS می باشد.
5- برای تعریف Service Hooks وارد نسخه آنلاین TFS شوید و از لیست پروژه های موجود در TFS پروژه مورد نظر را کلیک کنید، در صفحه بعد دکمه Setting و سپس Service Hooks را انتخاب کنید.
6- بعد از کلیک بر روی Service Hooks اقدام به ساختن یک Subscription کنید. از لیست باز شده Jenkins را انتخاب کنید.
7- در مرحله بعد Username و Password ورود به Jenkins همچنین آدرس Jenkins را وارد و در این مرحله ساخت Subscription به پایان می رسد.
تعریف WorkSpace :
1- از صفحه اصلی وارد job شده و روی Configure کلید نمایید .
2- در تب Source Management دکمه Advanced را کلید و مقدار فیلد Workspace Name را مشخص کنید.به عبارت دیگر Workspace Name یعنی مسیری که Jenkins پروژه را از TFS دریافت و در آن قرار می دهد.
Build :
پس از برقراری ارتباط بین Jenkins و TFS ، تنظیمات اولیه برای Build شدن اپلیکیشن نوشته شده با دات نت را انجام می دهیم.
1- در صفحه اصلی از پنل سمت چپ گزینه Manage Jenkins را انتخاب کنید.
در مسیر زیر در فیلد Path To MSBuild آدرس MS Build سازگار با ویژوال استودیو را وارد کنید.
Manage Jenkins > Global Tool Configuration > MSBuild Installations
Publish:
1- ساخت فایل تنظیمات Publish
برای پابلیش محصولات ویژوال استودیو نیاز به نصب پلاگین بر روی Jenkins نمی باشد. MsBuild می تواند با استفاده از یک فایل تنظیمات پابلیش (Publish Profile) ، پس از Build و تولید نسخه،عملیات پابلیش را نیز اجرا کند.
جهت ساختن یک Publish Profile سورس را در محیط ویژوال استودیو باز و در فرم پابلیش پارامتر Publish method را روی مقدار File System و Target location را در مسیر Workspaceتنظیم کنید.
پس از اتمام تنظیمات دکمه Save را کلیک و از منوی Actions >Rename یک نام دلخواه برای فایل تولید شده در نظر بگیرید.
پروژه خود را CheckIn تا فایل تنظیمات پابلیش به سرور منتقل و توسط Jenkins قابل دسترس باشد.
2- Build And Publish
به صفحه اصلی بازگشته و Job مورد نظر را انتخاب سپس Configure را کلیک و برای تنظیمات Build وارد تب Build شوید و از لیست MSBuild Version پروفایل MsBuild15 را که در مرحله قبل ساخته بوده اید را انتخاب نمایید.
در فیلد Command line Argument پارامترهای زیر را وارد نمایید
/p:DeployOnBuild=true
/p:PublishProfile=MyPublishProfile <<<< فایل تنظیمات پابلیش
/p:Configuration=Release
در این مرحله پس از هر تغییر در سورس پروژه و CheckIn آخرین تغییرات توسط Jenkins در مسیر Workspace دریافت، Build و Publish خواهد شد.
انتقال نسخه پابلیش شده به سرور Remote
به مسیر زیر رفته و مشخصات سرور FTP را وارد کنید
Jenkins > configuration > FTP repository hosts
و در فیلد Profile Name یک نام دلخواه برای این تنظیمات انتخاب کنید.
از مسیر نصب پلاگینها پلاگین FTP Publisher Plugin را نصب و Jenkins را Restart کنید.
Jenkins > Plugin Manager >
به صفحه اصلی بازگشته و Job را انتخاب و در تنظیمات Job روی تب Post-Build Actions کلیک نمایید.
بر روی دکمه Add Post-Build Action کلیک و از لیست باز شده گزینه Publish Artifacts To Ftp را انتخاب نمایید
برای فیلد FTP site تنظیماتFTP که در مرحله قبل ساخته اید را انتخاب نمایید وبر روی دکمه Add کلیک نمایید و مقدار فیلد Source از کادر باز شده را همان مسیری که در فایل تنظیمات پابلیش مشخص کرده اید قرار دهید.
در فیلد Source مسیری که در فایل تنظیمات پابلیش مشخص کرده اید را وارد کنید.
در این گام به هدف مورد نظرمان که Build و پابلیش خودکار پروژه بر روی سرور Remote بود رسیده ایم.در صورتیکه قسمتی از کد را تغییر و Checkin نمایید تغییرات را بر روی نسخه پابلیش شده مشاهده خواهید کرد
در صفحه اصلی job در پنل Build History تاریخ و وضعیت نسخه های تولید و پابلیش شده را میتوانید مشاهده کنید. با کلیک بر روی هر مورد وارد جزییات نسخه تولید شده می شوید و در قسمت Console Output می توانید نتیجه (Log) Build ، پابلیش و یا انتقال فایلها بر روی سرور Remote را بررسی نمایید.این Log خروجی MsBuild می باشد.
منبع: وبسایت Jenkins