Lighthouse performance metrics setup #19
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 }} |