/
CATEGORY
工具與觀念
/
在本機以及 GitLab CI/CD 整合效能監測工具 Google LightHouse

在本機以及 GitLab CI/CD 整合效能監測工具 Google LightHouse

MUKI AI Summary

最近閱讀了一本關於 Web 前端效能優化的書,提到 Google LightHouse 可以整合到 GitLab CI/CD。由於公司使用 GitLab,因此花時間研究並成功測試,還能透過 Google API 暫存報告並生成連結。

在本機安裝 LightHouse 後,建置專案並啟動,使用 LightHouse 檢測網站效能。整合 GitLab CI/CD 則需新增 .gitlab-ci.yml 檔案,使用 edicom/lighthouse:latest 鏡像檔,並在腳本中加入相應指令。設定靜態目錄與 ChromeFlags 後,即可成功執行。...

最近在看「今晚來點 Web 前端效能優化大補帖:一次搞定指標 × 工具 × 技巧,打造超高速網站」,開章就提到 Google LightHouse 有 CI 工具可以整在 Git 裡。

不過書裡的範例是跟 Github 整合,那因為公司用的是 GitLab,所以就花了點時間研究 GitLab,初步測試成功,也可以透過 Google API 將報告暫存起來並產生連結。

這邊記錄使用方法,希望未來可以再跟 PR 合在一起 (繼續研究 XD)

在本機跑 Google LightHouse

先來分享如何在本機跑 Google LightHouse

▼ 首先請安裝 LightHouse:

$ npm install -g lighthouse

▼ 接著 build 你的專案

$ npm run build

▼ 啟動專案 (我是用 serve 的套件模擬環境)

$ serve -s dist

▼ 接著會得到一個 localhost 位置,請用 LightHouse 檢測這個網站的效能

$ lighthouse http://localhost:5173/

▼ 偵測完畢後,會在本機產生一份 html 檔案,提示訊息如下,打開這份 HTML 可以看到檢測報告

$ LH:Printer html output written to /Users/muki/Documents/00.project/localhost_2022-11-22_16-00-13.report.html +53ms

▼ 如果希望跑完檢測後,直接跳出 HTML 檔案,可以在網址後面加入 --view 指令

$ lighthouse http://localhost:5173/ --view

整合 GitLab CI/CD 自動化偵測

在專案目錄下新增 .gitlab-ci.yml,我們使用的鏡像檔是 edicom/lighthouse:latest

stages:
- lighthouse

lighthouse:
  stage: lighthouse
  image: edicom/lighthouse:latest
  script:
    - npm install
    - npm run build
    - lhci autorun --collect.staticDistDir="./dist" --collect.settings.chromeFlags="--no-sandbox" -–upload.target=temporary-public-storage -–assert.preset="lighthouse:recommended" || echo "LHCI failed!"
  allow_failure: true
  except:
    refs:
      - master

以上!完成!

我這邊設定是排除 master branch,如果要測試記得在非 master branch 下試試看唷。

卡了很久的部分,在於每次丟到 GitLab 時,他都會產生一個隨機的 port,導致 LightHouse 讀取 timeout,原本看官網文件有提到,設定靜態目錄為 --collect.staticDistDir="./dist",就不需要管那個隨機的 port,但我試了發現沒有用。

爬了很多文章,看到有人說要再加入 --collect.settings.chromeFlags="--no-sandbox",加上去之後就可以成功執行了,開心~。

配置設定檔

如果想要設定的東西太多,可以拉出來獨立成一個檔案,官方有提供多種命名方式,我自己是命名成 .lighthouserc.json

▼ 可以將在自動化檔案的配置獨立出來

{
  "ci": {
    "collect": {
      "numberOfRuns": 5,
      "staticDistDir": "./dist",
      "settings": {
        "chromeFlags": "--no-sandbox"
      }
    },
    "upload": {
      "target": "temporary-public-storage"
    }
  }
}

▼ 然後設定 .gitlab-ci.ymllhci config 為這隻 json 檔

- lhci autorun --config="./.lighthouserc.json" || echo "LHCI failed!"

官方文件

關於更多的 LightHouse CI 文件,官方的說明很詳細,有興趣的朋友可以自行點閱

lighthouse-ci/configuration.md at main · GoogleChrome/lighthouse-ci

lighthouse-ci/configuration.md at main · GoogleChrome/lighthouse-ci

Automate running Lighthouse for every commit, viewing the changes, and preventing regressions - lighthouse-ci/configuration.md at main · GoogleChrome/lighthouse-ci

https://github.com/GoogleChrome/lighthouse-ci

目前看起來感覺對 Github 的支援度比較好(?,書中提到可以在 Github CI workflow 與 PR 的 status check 顯示偵測的內容,我也想要再研究研究,怎麼跟 Gitlab 的 PR 整合,或是有更方便的檢視方法。

未來如果有相關的進展,都會更新在這篇文章。

歡迎給我點鼓勵,讓我知道你來過 :)

3
5
MUKI says:

如果文章有幫助到你,歡迎分享給更多人知道。文章內容皆為 MUKI 本人的原創文章,我會經常更新文章以及修正錯誤內容,因此轉載時建議保留原出處,避免出現版本不一致或已過時的資訊。

本文地址:https://muki.tw/google-lighthouse-gitlab-cicd/ 已複製

Subscribe
Notify of
guest

0 則留言
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Copyright © since 2008 MUKI space* / omegaSS theme All Rights Reserved.