.github/workflows/benchmark.yml

Summary

Maintainability
Test Coverage
name: Benchmark

on:
  workflow_dispatch:
  push:
    branches:
      - "master"
    paths:
      - "lib/**"
      - ".github/workflows/benchmark.yml"
  pull_request:
    branches:
      - "master"
    paths:
      - "lib/**"
      - ".github/workflows/benchmark.yml"

jobs:
  benchmark:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        node-version: ["14", "16", "18"]
      fail-fast: false
    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm install --silent
      - name: Running benchmark
        run: node test/benchmark.js --benchmark

  profiling:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest]
        node-version: ["14", "16", "18"]
      fail-fast: false
    env:
      comment_file: ".tmp-comment-flamegraph-node${{ matrix.node-version }}.md"
    steps:
      - uses: actions/checkout@v4
      - name: Use Node.js ${{ matrix.node-version }}
        uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm install --silent
      - name: Running profiling
        run: node test/benchmark.js --profiling
      - name: Publish flamegraph to https://${{ github.sha }}-${{ matrix.node-version }}-hexo.surge.sh/flamegraph.html
        uses: dswistowski/surge-sh-action@v1
        with:
          domain: ${{ github.sha }}-${{ matrix.node-version }}-hexo.surge.sh
          project: ./.tmp-hexo-theme-unit-test/0x/
          login: ${{ secrets.SURGE_LOGIN }}
          token: ${{ secrets.SURGE_TOKEN }}

      - name: save comment to file
        if: ${{github.event_name == 'pull_request' }}
        run: |
          echo "https://${{ github.sha }}-${{ matrix.node-version }}-hexo.surge.sh/flamegraph.html" > ${{env.comment_file}}

      - uses: actions/upload-artifact@v4
        if: ${{github.event_name == 'pull_request' }}
        with:
          retention-days: 1
          name: comment-node${{ matrix.node-version }}
          path: ${{env.comment_file}}

  number:
    runs-on: ubuntu-latest
    if: ${{github.event_name == 'pull_request' }}
    env:
      pr_number_file: .tmp-comment-pr_number
    steps:
      - name: save PR number to file
        run: |
          echo -n "${{ github.event.number }}" > ${{env.pr_number_file}}
      - uses: actions/upload-artifact@v4
        with:
          retention-days: 1
          name: comment-pr_number
          path: ${{env.pr_number_file}}