วิธีเพิ่ม Lighthouse ลงในระบบการรวมอย่างต่อเนื่อง เช่น GitHub Actions
Lighthouse CI คือชุดเครื่องมือสำหรับใช้ Lighthouse ในระหว่างการรวมอย่างต่อเนื่อง Lighthouse CI สามารถรวมเข้ากับเวิร์กโฟลว์ของนักพัฒนาซอฟต์แวร์ได้หลายวิธี คู่มือนี้ครอบคลุมหัวข้อต่อไปนี้
- การใช้ Lighthouse CI CLI
- การกำหนดค่าผู้ให้บริการ CI เพื่อเรียกใช้ Lighthouse CI
- การตั้งค่า GitHub Action และการตรวจสอบสถานะสำหรับ Lighthouse CI ซึ่งจะแสดงผลลัพธ์ของ Lighthouse ใน Pull Request ของ 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 ที่ทำงานและแสดงความคิดเห็นในทุก Pull Request
- การติดตามประสิทธิภาพเมื่อเวลาผ่านไปผ่านแดชบอร์ดที่ 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/cliกำหนดค่า Lighthouse 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เพื่อระบุ URL ที่ Lighthouse CI ควรเรียกใช้ Lighthouse ค่าของพร็อพเพอร์ตี้urlควรระบุเป็นอาร์เรย์ของ URL ซึ่งอาร์เรย์นี้อาจมี URL อย่างน้อย 1 รายการ โดยค่าเริ่มต้น Lighthouse CI จะเรียกใช้ Lighthouse 3 ครั้งกับ URL แต่ละรายการcollect: { // ... url: ['http://localhost:8080'] }เพิ่มพร็อพเพอร์ตี้
targetลงในออบเจ็กต์ci.uploadและตั้งค่าเป็น'temporary-public-storage'ระบบจะอัปโหลดรายงาน Lighthouse ที่รวบรวมโดย Lighthouse CI ไปยังพื้นที่เก็บข้อมูลสาธารณะชั่วคราว รายงานจะยังคงอยู่ในนั้นเป็นเวลา 7 วัน จากนั้นระบบจะลบโดยอัตโนมัติ คู่มือการตั้งค่านี้ใช้ตัวเลือกการอัปโหลด "พื้นที่เก็บข้อมูลสาธารณะชั่วคราว" เนื่องจากตั้งค่าได้รวดเร็ว ดูข้อมูลเกี่ยวกับวิธีอื่นๆ ในการจัดเก็บรายงาน Lighthouse ได้ที่เอกสารประกอบupload: { target: 'temporary-public-storage', }ตำแหน่งพื้นที่เก็บข้อมูลของรายงานจะมีลักษณะคล้ายกับตัวอย่างต่อไปนี้
https://storage.googleapis.com/lighthouse-infrastructure.appspot.com/reports/1580152437799-46441.report.html(URL นี้จะใช้งานไม่ได้เนื่องจากรายงานถูกลบไปแล้ว)
เรียกใช้ Lighthouse CI CLI จากเทอร์มินัลโดยใช้คำสั่ง
autorunซึ่งจะเรียกใช้ Lighthouse 3 ครั้งและอัปโหลดรายงาน 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ด้านล่างระบุว่าควรเก็บรวบรวมการเรียกใช้ Lighthouse 5 ครั้งทุกครั้งที่autorunทำงานอัปเดต
lighthouserc.jsเพื่อใช้พร็อพเพอร์ตี้numberOfRunsmodule.exports = { // ... collect: { numberOfRuns: 5 }, // ... }, };เรียกใช้คำสั่ง
autorunอีกครั้งlhci autorunเอาต์พุตเทอร์มินัลควรแสดงว่า Lighthouse ทำงาน 5 ครั้งแทนที่จะเป็น 3 ครั้งตามค่าเริ่มต้น
✅ .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 รองรับการยืนยัน 3 ระดับ ได้แก่
off: ละเว้นการยืนยันwarn: พิมพ์ข้อผิดพลาดไปยัง stderrerror: พิมพ์ข้อผิดพลาดไปยัง stderr และออกจาก Lighthouse CI ด้วยรหัสออกที่ไม่ใช่ 0
ด้านล่างนี้คือตัวอย่างการกำหนดค่า 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 ได้ ซึ่งจะสร้างรายงาน Lighthouse ใหม่ทุกครั้งที่มีการพุชการเปลี่ยนแปลงโค้ดไปยังสาขาใดก็ตามของที่เก็บ GitHub ใช้ร่วมกับการตรวจสอบสถานะเพื่อแสดงผลลัพธ์เหล่านี้ใน Pull Request แต่ละรายการ
สร้างไดเรกทอรีชื่อ
.github/workflowsในรูทของที่เก็บ เวิร์กโฟลว์สำหรับโปรเจ็กต์จะอยู่ในไดเรกทอรีนี้ เวิร์กโฟลว์คือกระบวนการที่ทำงานตามเวลาที่กำหนดไว้ล่วงหน้า (เช่น เมื่อมีการพุชโค้ด) และประกอบด้วยการดำเนินการอย่างน้อย 1 รายการmkdir .github mkdir .github/workflowsสร้างไฟล์ชื่อ
lighthouse-ci.yamlใน.github/workflowsไฟล์นี้จะเก็บการกำหนดค่าสำหรับเวิร์กโฟลว์ใหม่touch lighthouse-ci.yamlเพิ่มข้อความต่อไปนี้ลงใน
lighthouse-ci.yamlname: 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!"การกำหนดค่านี้จะตั้งค่าเวิร์กโฟลว์ที่ประกอบด้วยงานเดียวที่จะทำงานเมื่อมีการพุชโค้ดใหม่ไปยังที่เก็บ งานนี้มี 4 ขั้นตอนดังนี้
- ตรวจสอบที่เก็บซึ่ง Lighthouse CI จะทำงาน
- ติดตั้งและกำหนดค่า Node
- ติดตั้งแพ็กเกจ npm ที่จำเป็น
- เรียกใช้ Lighthouse CI และอัปโหลดผลลัพธ์ไปยังพื้นที่เก็บข้อมูลสาธารณะชั่วคราว
คอมมิตการเปลี่ยนแปลงเหล่านี้และพุชไปยัง GitHub หากคุณทำตามขั้นตอนข้างต้นอย่างถูกต้อง การพุชโค้ดไปยัง GitHub จะทริกเกอร์การเรียกใช้เวิร์กโฟลว์ที่คุณเพิ่งเพิ่ม
หากต้องการยืนยันว่า Lighthouse CI ทำงานแล้วและดูรายงานที่สร้างขึ้น ให้ไปที่แท็บการดำเนินการของโปรเจ็กต์ คุณควรเห็นเวิร์กโฟลว์สร้างโปรเจ็กต์และเรียกใช้ Lighthouse CI แสดงอยู่ใต้คอมมิตล่าสุด
คุณสามารถไปยังรายงาน Lighthouse ที่สอดคล้องกับคอมมิตหนึ่งๆ ได้จากแท็บการดำเนินการ คลิกคอมมิต คลิกขั้นตอนเวิร์กโฟลว์ Lighthouse CI แล้วขยายผลลัพธ์ของขั้นตอนเรียกใช้ Lighthouse CI
คุณเพิ่งตั้งค่า GitHub Action เพื่อเรียกใช้ Lighthouse CI ซึ่งจะมีประโยชน์มากที่สุดเมื่อใช้ร่วมกับการตรวจสอบสถานะของ GitHub
ตั้งค่าการตรวจสอบสถานะ GitHub
การตรวจสอบสถานะ (หากกำหนดค่าไว้) คือข้อความที่ปรากฏใน PR ทุกรายการ และโดยทั่วไปจะมีข้อมูล เช่น ผลการทดสอบหรือความสำเร็จของบิลด์
ขั้นตอนด้านล่างอธิบายวิธีตั้งค่าการตรวจสอบสถานะสำหรับ Lighthouse CI
ไปที่หน้าแอป Lighthouse CI GitHub แล้วคลิกกำหนดค่า
(ไม่บังคับ) หากคุณเป็นส่วนหนึ่งของหลายองค์กรใน GitHub ให้เลือกองค์กรที่เป็นเจ้าของที่เก็บซึ่งคุณต้องการใช้ Lighthouse CI
เลือกที่เก็บทั้งหมดหากต้องการเปิดใช้ Lighthouse CI ในที่เก็บทั้งหมด หรือเลือกเฉพาะที่เก็บที่เลือกหากต้องการใช้ในที่เก็บที่เฉพาะเจาะจงเท่านั้น แล้วเลือกที่เก็บ จากนั้นคลิกติดตั้งและให้สิทธิ์
คัดลอกโทเค็นที่แสดง คุณจะต้องใช้รหัสนี้ในขั้นตอนถัดไป
หากต้องการเพิ่มโทเค็น ให้ไปที่หน้าการตั้งค่าของที่เก็บ GitHub คลิกข้อมูลลับ แล้วคลิกเพิ่มข้อมูลลับใหม่
ตั้งค่าช่องชื่อเป็น
LHCI_GITHUB_APP_TOKENและตั้งค่าช่องค่าเป็นโทเค็นที่คุณคัดลอกไว้ในขั้นตอนสุดท้าย แล้วคลิกปุ่มเพิ่มข้อมูลลับไปที่ไฟล์
lighthouse-ci.yamlแล้วเพิ่มข้อมูลลับของสภาพแวดล้อมใหม่ลงในคำสั่ง "run 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: $
- การตรวจสอบสถานะพร้อมใช้งานแล้ว หากต้องการทดสอบ ให้สร้าง Pull Request ใหม่หรือพุชคอมมิตไปยัง Pull Request ที่มีอยู่
ตั้งค่าเซิร์ฟเวอร์ Lighthouse CI
เซิร์ฟเวอร์ Lighthouse CI มีแดชบอร์ดสำหรับสำรวจการรายงาน Lighthouse ที่ผ่านมา นอกจากนี้ยังทำหน้าที่เป็นพื้นที่เก็บข้อมูลส่วนตัวระยะยาวสำหรับรายงาน Lighthouse ได้ด้วย
- เลือกคอมมิตที่จะเปรียบเทียบ
- จำนวนที่คะแนน Lighthouse เปลี่ยนแปลงระหว่างคอมมิตทั้ง 2 รายการ
- ส่วนนี้จะแสดงเฉพาะเมตริกที่มีการเปลี่ยนแปลงระหว่างคอมมิตทั้ง 2 รายการ
- การถดถอยจะไฮไลต์ด้วยสีชมพู
- การปรับปรุงจะไฮไลต์ด้วยสีน้ำเงิน
Lighthouse CI Server เหมาะที่สุดสำหรับผู้ใช้ที่สะดวกในการติดตั้งใช้งานและจัดการโครงสร้างพื้นฐานของตนเอง
ดูข้อมูลเกี่ยวกับการตั้งค่าเซิร์ฟเวอร์ Lighthouse CI รวมถึงสูตรการใช้ Heroku และ Docker สำหรับการติดตั้งใช้งานได้ที่วิธีการเหล่านี้