Skip to content

Lighthouse performance metrics setup #19

Lighthouse performance metrics setup

Lighthouse performance metrics setup #19

name: Performance Testing
on:
pull_request:
branches:
- main
env:
NODE_OPTIONS: '--max-old-space-size=6144 --dns-result-order=ipv4first'
LATEST_VERSION: '2.17.0'
jobs:
lighthouse:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v2
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
- name: Setup Yarn
run: |
npm uninstall -g yarn
npm i -g [email protected]
- name: Run bootstrap
run: yarn osd bootstrap
- name: Download OpenSearch
uses: suisei-cn/[email protected]
with:
url: https://artifacts.opensearch.org/releases/bundle/opensearch/${{ env.LATEST_VERSION }}/opensearch-${{ env.LATEST_VERSION }}-linux-x64.tar.gz
- name: Extract OpenSearch
run: |
tar -xzf opensearch-*.tar.gz
rm -f opensearch-*.tar.gz
shell: bash
- name: Remove security plugin
run: |
/bin/bash -c "yes | ./opensearch-${{ env.LATEST_VERSION }}/bin/opensearch-plugin remove opensearch-security"
shell: bash
- name: Run OpenSearch
run: |
/bin/bash -c "./opensearch-${{ env.LATEST_VERSION }}/opensearch-tar-install.sh &"
sleep 30
shell: bash
- name: Install Lighthouse CI
run: yarn add --dev @lhci/cli
- name: Run bootstrap
run: yarn osd bootstrap
- name: Start OpenSearch Dashboards
run: |
yarn wait-on http://localhost:9200
yarn start --no-base-path & yarn wait-on http://localhost:5601
# - name: Wait for OpenSearch to be ready
# run: |
# until curl -s http://localhost:9200 >/dev/null; do
# echo "Waiting for OpenSearch..."
# sleep 10
# done
# echo "OpenSearch is up!"
# - name: Start OpenSearch Dashboards
# run: |
# yarn start --no-base-path &
# until curl -s http://localhost:5601 >/dev/null; do
# echo "Waiting for OpenSearch Dashboards..."
# sleep 10
# done
# echo "OpenSearch Dashboards is up!"
- name: Mock data
run: |
curl 'http://localhost:5601/api/sample_data/ecommerce' -X 'POST' -H 'osd-version: 3.0.0' -H 'osd-xsrf: osd-fetch'
- name: Run Lighthouse CI
run: yarn lhci autorun || echo "Lighthouse assertion failed, check results"
- name: Post Lighthouse Report to PR
if: always()
run: |
echo "🚦 **Lighthouse CI Report**" > comment.txt
echo "" >> comment.txt
lhci upload --target=temporary-public-storage | tee lhci_output.txt
REPORT_URL=$(grep -o 'https://storage.googleapis.com/lighthouse-infrastructure-.*' lhci_output.txt | head -n 1)
echo "🔗 [View Full Lighthouse Report]($REPORT_URL)" >> comment.txt
gh pr comment ${{ github.event.pull_request.number }} --body "$(cat comment.txt)"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}