git-perf 0.15.4

Track, plot, and statistically validate simple measurements using git-notes for storage
Documentation
name: 'git-perf report'
on:
  workflow_call:
    inputs:
      release:
        description: 'release to install'
        required: false
        type: string
        default: 'latest'
      concurrency-token:
        description: 'token to prevent concurrent updates of github pages'
        required: false
        type: string
        default: 'gh-pages-concurrency'
      depth:
        description: 'depth of the report in number of commits'
        required: false
        type: number
        default: 40
      additional-args:
        description: 'additional arguments to git-perf report invocation'
        required: false
        type: string
        default: ''


permissions:
  pages: write
  contents: write
  pull-requests: write

concurrency:
  group: ${{ inputs.concurrency-token }}

jobs:
  report:
    runs-on: ubuntu-22.04

    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: ${{ inputs.depth }}
      - id: install
        name: install git-perf
        uses: kaihowl/git-perf/.github/actions/install@master
        with:
          release: ${{ inputs.release }}
      - name: Inject slug/short variables
        uses: rlespinasse/github-slug-action@v4
      - name: use commit name as report name
        if: ${{ github.event_name == 'pull_request' }}
        run: |
          echo "REPORT_NAME=${{github.sha}}" >> $GITHUB_ENV
      - name: use branch name as report name
        if: ${{ github.event_name != 'pull_request' }}
        run: |
          echo "REPORT_NAME=${GITHUB_REF_SLUG}" >> $GITHUB_ENV
      - name: report
        shell: bash
        run: |
          git perf pull
          mkdir reports/
          git perf report -n ${{ inputs.depth }} -o reports/${{env.REPORT_NAME}}.html ${{ inputs.additional-args }}
      - name: Publish new perf reports
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./reports
          keep_files: true
      - uses: actions/github-script@v7
        if: github.event_name == 'pull_request'
        with:
          github-token: ${{secrets.GITHUB_TOKEN}}
          script: |
            const { REPORT_NAME } = process.env
            const pages = await github.rest.repos.getPages({
              owner: context.repo.owner,
              repo: context.repo.repo,
            })
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: `⏱  [Performance Results](${pages.data.html_url}/${REPORT_NAME}.html)`
              })