نحوه افزودن Lighthouse به سیستم ادغام پیوسته، مانند GitHub Actions.
Lighthouse CI مجموعهای از ابزارها برای استفاده از Lighthouse درطول ادغام مداوم است. Lighthouse CI را میتوان به روشهای مختلفی در گردش کار توسعهدهنده گنجاند. این راهنما شامل موضوعات زیر است:
- استفاده از Lighthouse CI CLI.
- پیکربندی ارائهدهنده CI برای اجرای Lighthouse CI.
- درحال راهاندازی GitHub Action و بررسی وضعیت برای Lighthouse CI. این کار بهطور خودکار نتایج Lighthouse را در درخواستهای pull در GitHub نمایش میدهد.
- ساختن داشبورد عملکرد و ذخیرهسازی داده برای گزارشهای Lighthouse.
نمای کلی
Lighthouse CI مجموعهای از ابزارهای رایگان است که استفاده از Lighthouse را برای پایش عملکرد تسهیل میکند. یک گزارش Lighthouse، نمایی کلی از عملکرد صفحه وب در زمان اجرا ارائه میدهد؛ Lighthouse CI نشان میدهد که این یافتهها چگونه درطول زمان تغییر کردهاند. از این ابزار میتوان برای شناسایی تأثیر تغییرات خاص در کد یا اطمینان از رعایت آستانههای عملکرد درطول فرایندهای ادغام مداوم استفاده کرد. اگرچه نظارت بر عملکرد رایجترین مورد استفاده برای Lighthouse CI است، اما میتوان از آن برای نظارت بر سایر جنبههای گزارش Lighthouse استفاده کرد - برای مثال، SEO یا دسترسپذیری.
کارکرد اصلی Lighthouse CI توسط میانای خط فرمان Lighthouse CI ارائه میشود. (توجه: این ابزار با Lighthouse
CLI متفاوت است.) Lighthouse CI CLI مجموعهای از
فرمانها
برای استفاده از Lighthouse CI ارائه میدهد. برای مثال، فرمان autorun چندین Lighthouse را اجرا میکند، گزارش Lighthouse میانه را شناسایی میکند، و گزارش را برای ذخیرهسازی بارگذاری میکند. این رفتار را میتوان با ارسال پرچمهای اضافی
یا سفارشیسازی فایل پیکربندی Lighthouse CI، lighthouserc.js، بهشدت سفارشیسازی کرد.
اگرچه عملکرد اصلی Lighthouse CI در درجه اول در Lighthouse CI CLI خلاصه میشود، Lighthouse CI معمولاً ازطریق یکی از رویکردهای زیر استفاده میشود:
- اجرا کردن Lighthouse CI بهعنوان بخشی از یکپارچهسازی مداوم
- استفاده از Lighthouse CI GitHub Action که روی هر درخواست کشش اجرا میشود و نظر میدهد
- ردیابی عملکرد درطول زمان ازطریق داشبورد ارائهشده توسط Lighthouse Server.
همه این رویکردها براساس Lighthouse CI CLI ساخته شدهاند.
جایگزینهای Lighthouse CI شامل سرویسهای نظارت بر عملکرد شخص ثالث یا نوشتن اسکریپت خودتان برای جمعآوری دادههای عملکرد درطول فرایند CI است. اگر ترجیح میدهید مدیریت سرور پایش عملکرد و دستگاههای آزمایشی را به شخص دیگری بسپارید، یا اگر میخواهید قابلیتهای اعلان (مانند ایمیل یا ادغام Slack) را بدون نیاز به ساختن این ویژگیها توسط خودتان داشته باشید، باید از سرویس شخص ثالث استفاده کنید.
استفاده از Lighthouse CI بهصورت محلی
این بخش نحوه اجرا و نصب Lighthouse CI CLI بهصورت محلی و
نحوه پیکربندی lighthouserc.js را توضیح میدهد. اجرای Lighthouse CI CLI بهصورت محلی
سادهترین راه برای اطمینان از پیکربندی صحیح lighthouserc.js است.
Lighthouse CI CLI را نصب کنید.
npm install -g @lhci/cliLighthouse CI با قرار دادن فایل
lighthouserc.jsدر ریشه مخزن پروژهتان پیکربندی میشود. این فایل اجباری است و حاوی اطلاعات پیکربندی مربوط به Lighthouse CI خواهد بود. اگرچه Lighthouse CI را میتوان پیکربندی کرد تا بدون مخزن git استفاده شود، دستورالعملهای این مقاله فرض میکنند که مخزن پروژه شما برای استفاده از git پیکربندی شده است.در ریشه مخزن، فایل پیکربندی
lighthouserc.jsایجاد کنید.touch lighthouserc.jsکد زیر را به
lighthouserc.jsاضافه کنید. این کد پیکربندی Lighthouse CI خالی است. در مراحل بعدی، به این پیکربندی اضافه خواهید کرد.module.exports = { ci: { collect: { /* Add configuration here */ }, upload: { /* Add configuration here */ }, }, };هر بار که Lighthouse CI اجرا میشود، سروری را برای ارائه سایتتان راهاندازی میکند. این سرور همان چیزی است که Lighthouse را قادر میسازد تا سایت شما را بارگیری کند، حتی زمانی که هیچ سرور دیگری درحال اجرا نیست. وقتی Lighthouse CI اجرا شد، سرور را بهطور خودکار خاموش میکند. برای اطمینان از اینکه ارائه بهدرستی کار میکند، باید ویژگیهای
staticDistDirیاstartServerCommandرا پیکربندی کنید.اگر سایتتان ایستا است، ویژگی
staticDistDirرا به شیءci.collectاضافه کنید تا نشان دهید فایلهای ایستای شما کجا قرار دارند. Lighthouse CI هنگام آزمایش سایتتان، از سرور خودش برای ارائه این فایلها استفاده خواهد کرد. اگر سایتتان ایستا نیست، ویژگیstartServerCommandرا به شیءci.collectاضافه کنید تا فرمانی را که سرورتان را راهاندازی میکند نشان دهد. Lighthouse CI درطول آزمایش، فرایند سرور جدیدی را شروع میکند و پساز آن، آن را خاموش میکند.// Static site example collect: { staticDistDir: './public', }// Dynamic site example collect: { startServerCommand: 'npm run start', }ویژگی
urlرا به شیءci.collectاضافه کنید تا نشانی(های) وبی را که Lighthouse CI باید Lighthouse را در آن اجرا کند نشان دهید. مقدار ویژگیurlباید بهصورت آرایهای از نشانیهای وب ارائه شود؛ این آرایه میتواند شامل یک یا چند نشانی وب باشد. بهطور پیشفرض، Lighthouse CI سه بار Lighthouse را برای هر نشانی وب اجرا میکند.collect: { // ... url: ['http://localhost:8080'] }ویژگی
targetرا به شیءci.uploadاضافه کنید و مقدار را روی'temporary-public-storage'تنظیم کنید. گزارش(های) Lighthouse جمعآوریشده توسط Lighthouse CI در فضای ذخیرهسازی عمومی موقت بارگذاری خواهد شد. گزارش بهمدت هفت روز در آنجا باقی میماند و سپس بهطور خودکار حذف میشود. این راهنمای راهاندازی از گزینه بارگذاری «فضای ذخیرهسازی عمومی موقت» استفاده میکند زیرا راهاندازی آن سریع است. برای کسب اطلاعات درباره روشهای دیگر ذخیره کردن گزارشهای Lighthouse، به اسناد مراجعه کنید.upload: { target: 'temporary-public-storage', }مکان ذخیرهسازی گزارش مشابه این خواهد بود:
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1580152437799-46441.report.html(این نشانی وب کار نخواهد کرد زیرا گزارش قبلاً حذف شده است.)
Lighthouse CI CLI را از پایانه بااستفاده از فرمان
autorunاجرا کنید. با این کار، Lighthouse سه بار اجرا میشود و گزارش Lighthouse میانه بارگذاری میشود.lhci autorunاگر Lighthouse CI را بهدرستی پیکربندی کرده باشید، اجرای این فرمان باید خروجیای مشابه این تولید کند:
✅ .lighthouseci/ directory writable ✅ Configuration file found ✅ Chrome installation found ⚠️ GitHub token not set Healthcheck passed! Started a web server on port 65324... Running Lighthouse 3 time(s) on http://localhost:65324/index.html Run #1...done. Run #2...done. Run #3...done. Done running Lighthouse! Uploading median LHR of http://localhost:65324/index.html...success! Open the report at https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1591720514021-82403.report.html No GitHub token set, skipping GitHub status check. Done running autorun.میتوانید پیام
GitHub token not setرا در خروجی کنسول نادیده بگیرید. فقط درصورتی به کد GitHub نیاز دارید که بخواهید از Lighthouse CI با GitHub Action استفاده کنید. نحوه راهاندازی GitHub Action در ادامه این مقاله توضیح داده شده است.با کلیک کردن روی پیوند موجود در خروجی که با
https://storage.googleapis.com...شروع میشود، به گزارش Lighthouse مربوط به اجرای میانه Lighthouse هدایت میشوید.پیشفرضهای مورداستفاده
autorunرا میتوان ازطریق خط فرمان یاlighthouserc.jsلغو کرد. برای مثال، پیکربندیlighthouserc.jsزیر نشان میدهد که هر بار کهautorunاجرا میشود، باید پنج اجرای Lighthouse جمعآوری شود.lighthouserc.jsرا بهروز کنید تا از خصوصیتnumberOfRunsاستفاده کند:module.exports = { // ... collect: { numberOfRuns: 5 }, // ... }, };فرمان
autorunرا دوباره اجرا کنید:lhci autorunخروجی پایانه باید نشان دهد که Lighthouse بهجای سه بار پیشفرض، پنج بار اجرا شده است:
✅ .lighthouseci/ directory writable ✅ Configuration file found ✅ Chrome installation found ⚠️ GitHub token not set Healthcheck passed! Automatically determined ./dist as `staticDistDir`. Set it explicitly in lighthouserc.json if incorrect. Started a web server on port 64444... Running Lighthouse 5 time(s) on http://localhost:64444/index.html Run #1...done. Run #2...done. Run #3...done. Run #4...done. Run #5...done. Done running Lighthouse! Uploading median LHR of http://localhost:64444/index.html...success! Open the report at https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1591716944028-6048.report.html No GitHub token set, skipping GitHub status check. Done running autorun.برای آشنایی با دیگر گزینههای پیکربندی، به اسناد پیکربندی Lighthouse CI مراجعه کنید.
فرایند CI خود را برای اجرای Lighthouse CI راهاندازی کنید
Lighthouse CI را میتوان با ابزار CI دلخواهتان استفاده کرد. بخش پیکربندی ارائهدهنده CI در اسناد Lighthouse CI حاوی نمونه کدهایی است که نحوه گنجاندن Lighthouse CI را در فایلهای پیکربندی ابزارهای رایج CI نشان میدهد. بهطور خاص، این نمونه کدها نشان میدهند که چگونه Lighthouse CI را برای جمعآوری اندازهگیریهای عملکرد درطول فرایند CI اجرا کنید.
استفاده از Lighthouse CI برای جمعآوری اندازهگیریهای عملکرد، نقطه شروع خوبی برای نظارت بر عملکرد است. بااینحال، کاربران پیشرفته ممکن است بخواهند یک گام فراتر بروند و از Lighthouse CI برای رد کردن ساختها درصورت عدم برآورده کردن معیارهای ازپیش تعریفشده، مانند گذراندن ممیزیهای خاص Lighthouse یا برآورده کردن تمام بودجههای عملکرد، استفاده کنند. این رفتار ازطریق ویژگی
assert
فایل lighthouserc.js پیکربندی میشود.
Lighthouse CI از سه سطح ادعا پشتیبانی میکند:
off: نادیده گرفتن ادعاها-
warn: چاپ موارد ناموفق در خطای استاندارد error: چاپ کردن موارد ناموفق در stderr و خارج شدن از Lighthouse CI با کد خروج غیرصفر
در زیر نمونهای از پیکربندی lighthouserc.js که شامل
ادعاها است آورده شده است. این ابزار ادعاهایی را برای امتیازهای عملکرد و دستههای دسترسپذیری Lighthouse تنظیم میکند. برای امتحان کردن این ویژگی، ادعاهای نشاندادهشده در زیر را به
فایل lighthouserc.js اضافه کنید، سپس Lighthouse CI را دوباره اجرا کنید.
module.exports = {
ci: {
collect: {
// ...
},
assert: {
assertions: {
'categories:performance': ['warn', {minScore: 1}],
'categories:accessibility': ['error', {minScore: 1}]
}
},
upload: {
// ...
},
},
};
برونداد کنسولی که تولید میکند به این شکل است:
برای کسب اطلاعات بیشتر درباره ادعاهای Lighthouse CI، به اسناد مراجعه کنید.
راهاندازی GitHub Action برای اجرای Lighthouse CI
از GitHub Action میتوان برای اجرای Lighthouse CI استفاده کرد. با این کار، هربار که تغییر کد به هر شاخهای از مخزن GitHub ارسال میشود، گزارش Lighthouse جدیدی تولید میشود. از این مورد همراه با بررسی وضعیت استفاده کنید تا این نتایج در هر درخواست واکشی نمایش داده شود.
در ریشه مخزن، دایرکتوریای با نام
.github/workflowsایجاد کنید. گردشهای کاری پروژهتان در این دایرکتوری قرار خواهد گرفت. گردش کار فرایندی است که در زمان ازپیش تعیینشدهای اجرا میشود (برای مثال، وقتی کد ارسال میشود) و از یک یا چند کنش تشکیل شده است.mkdir .github mkdir .github/workflowsدر
.github/workflows، فایلی با نامlighthouse-ci.yamlایجاد کنید. این فایل پیکربندی گردش کار جدید را نگه میدارد.touch lighthouse-ci.yamlنوشتار زیر را به
lighthouse-ci.yamlاضافه کنید.name: Build project and run Lighthouse CI on: [push] jobs: lhci: name: Lighthouse CI runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Use Node.js 10.x uses: actions/setup-node@v1 with: node-version: 10.x - name: npm install run: | npm install - name: run Lighthouse CI run: | npm install -g @lhci/cli@0.3.x lhci autorun --upload.target=temporary-public-storage || echo "LHCI failed!"این پیکربندی گردش کاری متشکل از یک کار واحد را راهاندازی میکند که هرگاه کد جدیدی به مخزن ارسال شود اجرا خواهد شد. این کار چهار مرحله دارد:
- مخزنی را که Lighthouse CI در آن اجرا خواهد شد بررسی کنید
- نصب و پیکربندی Node
- نصب بستههای npm موردنیاز
- Lighthouse CI را اجرا کنید و نتایج را در فضای ذخیرهسازی عمومی موقت بارگذاری کنید.
این تغییرات را ثبت کنید و آنها را به GitHub ارسال کنید. اگر مراحل بالا را بهدرستی دنبال کرده باشید، ارسال کد به GitHub باعث اجرای گردش کاری میشود که بهتازگی اضافه کردهاید.
برای تأیید اینکه Lighthouse CI راهاندازی شده است و برای مشاهده گزارشی که تولید کرده است، به برگه Actions پروژه خود بروید. باید گردش کار Build project and Run Lighthouse CI را در فهرست زیر جدیدترین commit خود ببینید.
میتوانید از برگه کنشها به گزارش Lighthouse مربوط به یک ثبت خاص بروید. روی commit کلیک کنید، روی مرحله گردش کار Lighthouse CI کلیک کنید، سپس نتایج مرحله اجرای Lighthouse CI را ازهم باز کنید.
شما بهتازگی یک GitHub Action برای اجرای Lighthouse CI راهاندازی کردهاید. این ویژگی زمانی بیشترین کاربرد را دارد که همراه با بررسی وضعیت GitHub استفاده شود.
راهاندازی بررسی وضعیت GitHub
بررسی وضعیت، درصورت پیکربندی، پیامی است که در هر درخواست ارسال ظاهر میشود و معمولاً شامل اطلاعاتی مانند نتایج آزمایش یا موفقیتآمیز بودن ساخت است.
مراحل زیر نحوه راهاندازی بررسی وضعیت برای Lighthouse CI را توضیح میدهد.
به صفحه برنامه Lighthouse CI GitHub بروید و روی پیکربندی کلیک کنید.
(اختیاری) اگر در GitHub عضو چند سازمان هستید، سازمانی را انتخاب کنید که مالک مخزنی است که میخواهید برای آن از Lighthouse CI استفاده کنید.
اگر میخواهید Lighthouse CI را در همه مخزنها فعال کنید، همه مخزنها را انتخاب کنید یا اگر میخواهید فقط در مخزنهای خاصی از آن استفاده کنید، فقط مخزنهای انتخابی را انتخاب کنید و سپس مخزنها را انتخاب کنید. سپس روی نصب و صدور مجوز کلیک کنید.
کدی را که نمایش داده میشود کپی کنید. در مرحله بعد از آن استفاده خواهید کرد.
برای افزودن کد، به صفحه تنظیمات مخزن GitHub خود بروید، روی رمزها کلیک کنید، سپس روی افزودن رمز جدید کلیک کنید.
فیلد نام را روی
LHCI_GITHUB_APP_TOKENتنظیم کنید و فیلد مقدار را روی کدی که در مرحله قبل کپی کردید تنظیم کنید و سپس روی دکمه افزودن رمز کلیک کنید.به فایل
lighthouse-ci.yamlبروید و رمز محیط جدید را به فرمان «اجرای Lighthouse CI» اضافه کنید.
- name: run Lighthouse CI
run: |
npm install -g @lhci/cli@0.3.x
lhci autorun --upload.target=temporary-public-storage || echo "LHCI failed!"
+ env:
+ LHCI_GITHUB_APP_TOKEN: $
- بررسی وضعیت آماده استفاده است. برای آزمایش آن، درخواست واکشی جدیدی ایجاد کنید یا یک commit را به درخواست واکشی موجود ارسال کنید.
راهاندازی سرور Lighthouse CI
سرور Lighthouse CI داشبوردی برای کاوش گزارشهای تاریخی Lighthouse ارائه میدهد. همچنین میتواند بهعنوان یک پایگاه داده خصوصی و بلندمدت برای گزارشهای Lighthouse عمل کند.
- انتخاب کنید کدام ثبتها مقایسه شوند.
- مقداری که امتیاز Lighthouse بین دو ثبت تغییر کرده است.
- این بخش فقط سنجههایی را نشان میدهد که بین دو ثبت تغییر کردهاند.
- پسرفتها با رنگ صورتی برجسته شدهاند.
- بهبودها با رنگ آبی برجسته شدهاند.
Lighthouse CI Server برای کاربرانی مناسب است که با استقرار و مدیریت زیرساخت خودشان راحت هستند.
برای کسب اطلاعات درباره راهاندازی سرور Lighthouse CI، ازجمله دستورالعملهای استفاده از Heroku و Docker برای استقرار، به این دستورالعملها مراجعه کنید.