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)`
})