GitHub ActionsでBencherを使用する方法


GitHub Actionsであなたのユースケースに応じて、以下のために継続的ベンチマーキングを設定できます:

APIトークンを作成したことを 確認し、それをBENCHER_API_TOKENという名前のリポジトリシークレットとして設定する前に進むこと! Your Repo -> Settings -> Secrets and variables -> Actions -> New repository secretに移動します。 シークレットの名前をBENCHER_API_TOKENに設定し、シークレットの値にあなたのAPIトークンを設定してください。

GitHub Actionsでは、 ワークフローがフォークされたリポジトリからトリガーされた場合、セcretsはランナーに渡されません。 したがって、以下のいずれかのワークフローをプルリクエストでリポジトリに追加する場合は、 同じ リポジトリのブランチを使用する必要があります。 フォークからプルリクエストでBencherを追加しようとすると、 BENCHER_API_TOKEN secretが利用できません。 ${{ secrets.BENCHER_API_TOKEN }}は空の文字列になります。

基本ブランチ

統計的連続ベンチマーキング の基本は、基本ブランチのための歴史的なベースラインを持つことです。 この歴史的なベースラインを利用して、プルリクエスト中のパフォーマンスの退行を検出できます。

on:
push:
branches: main
jobs:
benchmark_base_branch:
name: Continuous Benchmarking with Bencher
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bencherdev/bencher@main
- name: Track base branch benchmarks with Bencher
run: |
bencher run \
--project save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch main \
--testbed ubuntu-latest \
--adapter json \
--err \
bencher mock
  1. GitHub Actions workflow ファイルを作成します。 (例: .github/workflows/base_benchmarks.yml)
  2. main ブランチへの push イベントで実行します。 GitHub Actions on documentation および GitHub Actions push documentation を参照して全体を理解してください。 (例: on: push: branches: main)
  3. GitHub Actions job を作成します。 (例: jobs: benchmark_base_branch)
  4. ジョブが実行されるマシンのタイプを設定します。 GitHub Actions runs-on documentation を参照して全体を理解してください。 (例: runs-on: ubuntu-latest)
  5. 基本ブランチのソースコードをチェックアウトします。 (例: uses: actions/checkout@v4)
  6. GitHub Action を使用して Bencher CLI をインストールします。 (例: uses: bencherdev/bencher@main)
  7. main ブランチのベンチマークを実行するために bencher run CLI サブコマンドを使用してください。 the bencher run CLI サブコマンド を参照して全体を理解してください。 (例: bencher run)
  8. --project オプションをプロジェクトスラグに設定します。 the --project docs を詳しく読んでください。 (例: --project save-walter-white-1234abcd)
  9. --token オプションを BENCHER_API_TOKEN リポジトリー シークレットに設定します。 the --token docs を詳しく読んでください。 (例: --token '${{ secrets.BENCHER_API_TOKEN }}')
  10. --branch オプションをブランチ名に設定します。 branch selection を参照して全体を理解してください。 (例: --branch main)
  11. --testbed オプションをテストベッド名に設定します。 これは runs-on で選択したマシンと一致するべきです。 the --tested docs を詳しく読んでください。 (例: --testbed ubuntu-latest)
  12. --adapter オプションを希望のベンチマークハーネスアダプターに設定します。 benchmark harness adapters を参照して全体を理解してください。 (例: --adapter json)
  13. アラートが生成された場合にコマンドを失敗させる --err フラグを設定します。 Threshold & Alerts を参照して全体を理解してください。 (例: --err)
  14. ベンチマークコマンド引数を指定します。 benchmark command を参照して全体を理解してください。 (例: bencher mock)

プルリクエスト

プルリクエストでのパフォーマンスの退行をキャッチするためには、PRでベンチマークを実行する必要があります。 同じリポジトリ内の同じブランチからのみプルリクエストを受け取ることを期待する場合は、 同じリポジトリからのプルリクエストイベントでonを実行する別のワークフローを作成するだけで済みます。

⚠️ この解決策は、すべてのプルリクエストが同じリポジトリからの場合にのみ機能します! 下記のフォークからのプルリクエストを参照してください。

on:
pull_request:
types: [opened, reopened, edited, synchronize]
jobs:
benchmark_pr_branch:
name: Continuous Benchmarking PRs with Bencher
# DO NOT REMOVE: For handling Fork PRs see Pull Requests from Forks
if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
permissions:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bencherdev/bencher@main
- name: Track PR Benchmarks with Bencher
run: |
bencher run \
--project save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.head_ref }}' \
--branch-start-point '${{ github.base_ref }}' \
--branch-start-point-hash '${{ github.event.pull_request.base.sha }}' \
--branch-reset \
--testbed ubuntu-latest \
--adapter json \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
bencher mock
  1. GitHub Actionsのworkflowファイルを作成します。 (例: .github/workflows/pr_benchmarks.yml

  2. pull_requestイベントで実行します:

    • opened - プルリクエストが作成されました。
    • reopened - 以前に閉じられたプルリクエストが再開されました。
    • edited - プルリクエストのタイトルや本文が編集されたり、ベースブランチが変更された場合。
    • synchronize - プルリクエストのheadブランチが更新されました。 例えば、headブランチがベースブランチから更新されたり、新しいコミットがheadブランチにプッシュされた場合。

    完全な概要については、GitHub Actions on ドキュメントおよびGitHub Actions pull_request ドキュメントを参照してください。 (例: on: pull_request: types: [opened, reopened, edited, synchronize]

  3. GitHub Actionsのjobを作成します。 (例: jobs: benchmark_pr_branch

  4. プルリクエストが同じリポジトリからの場合に限り、pull_requestイベントで実行します。 ⚠️この行を削除しないでください! フォークされたPRの処理については、下記のフォークからのプルリクエストを参照してください。 (例: if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository

  5. GITHUB_TOKEN の権限をpull-requestsに対してwriteに設定します。 GitHubの設定に応じて、これは必須ではないかもしれません。 しかし、2023年2月2日以降に作成されたすべての組織および個人リポジトリの場合、 これがデフォルトの動作です。 完全な概要については、GitHubドキュメントを参照してください。 (例: permissions: pull-requests: write

  6. ジョブを実行するマシンのタイプを設定します。 完全な概要については、GitHub Actions runs-on ドキュメントを参照してください。 (例: runs-on: ubuntu-latest

  7. PRブランチのソースコードをチェックアウトします。 (例: uses: actions/checkout@v4

  8. GitHub Actionを使用してBencher CLIをインストールします。 (例: uses: bencherdev/bencher@main

  9. プルリクエストブランチのベンチマークを実行するために、bencher run CLIサブコマンドを使用します。 完全な概要については、bencher run CLIサブコマンドを参照してください。 (例: bencher run

  10. --projectオプションをプロジェクトスラッグに設定します。 詳細については、--project ドキュメントを参照してください。 (例: --project save-walter-white-1234abcd

  11. --token オプションをリポジトリシークレットのBENCHER_API_TOKENに設定します。 詳細については、--token ドキュメントを参照してください。 (例: --token '${{ secrets.BENCHER_API_TOKEN }}'

  12. GitHub Actionsのgithubコンテキストを使用して、--branchオプションをPRブランチ名に設定します。 完全な概要については、ブランチ選択を参照してください。 (例: --branch '${{ github.head_ref }}'

  13. GitHub Actionsのgithubコンテキストを使用して、PRベースブランチの開始点に--branch-start-pointオプションを設定します。 完全な概要については、ブランチ選択を参照してください。 (例: --branch-start-point '${{ github.base_ref }}'

  14. GitHub Actionsのpull_requestイベントを使用して、PRベースブランチの開始点ハッシュに--branch-start-point-hashオプションを設定します。 完全な概要については、ブランチ選択を参照してください。 (例: --branch-start-point-hash '${{ github.event.pull_request.base.sha }}'

  15. --branch-resetフラグを設定して、常にブランチを開始点にリセットします。 これにより、ベンチマークデータのドリフトが防止されます。 完全な概要については、ブランチ選択を参照してください。 (例: --branch-reset

  16. --testbedオプションをテストベッド名に設定します。 これは、おそらくruns-onで選択したマシンと一致するはずです。 詳細については、--tested ドキュメントを参照してください。 (例: --testbed ubuntu-latest

  17. 望ましいベンチマークハーネスアダプターに--adapterオプションを設定します。 完全な概要については、ベンチマークハーネスアダプターを参照してください。 (例: --adapter json

  18. アラートが生成された場合にコマンドが失敗するように、--errフラグを設定します。 完全な概要については、しきい値とアラートを参照してください。 (例: --err

  19. GitHub ActionsのGITHUB_TOKEN環境変数を使用して、結果をプルリクエストのコメントとして投稿するために、--github-actionsオプションをGitHub API認証トークンに設定します。 詳細については、--github-actions ドキュメントを参照してください。 (例: --github-actions '${{ secrets.GITHUB_TOKEN }}'

  20. ベンチマークコマンドの引数を指定します。 完全な概要については、ベンチマークコマンドを参照してください。 (例: bencher mock


フォークからのプルリクエスト

公開されたオープンソースプロジェクトではよくあることですが、フォークからプルリクエストを受け付ける予定の場合、少し異なる扱いが必要になります。 セキュリティ上の理由から、BENCHER_API_TOKENGITHUB_TOKENなどの秘密情報は、フォークのPRでGitHub Actionsでは利用できません。 つまり、外部のコントリビュータがフォークからPRを開いた場合、上記の例は動作しません。 フォークのPRには2つの選択肢があります:

pwnリクエストを防ぐためのフルオーバービューについては、このGitHub Security Labの記事このブログ投稿を参照してください。

デフォルトブランチからフォークPRをベンチマークしてアップロード

これはフォークプルリクエストに継続的ベンチマーキングを追加するための安全で推奨される方法です。 これには2つの別々のワークフローが必要です。 最初のワークフローは、pull_requestコンテキストでベンチマーク結果を実行してキャッシュします。 BENCHER_API_TOKENGITHUB_TOKENのようなシークレットはそこでは利用できません。 次に、2番目のワークフローがworkflow_runコンテキストでキャッシュされたベンチマーク結果をダウンロードし、Bencherにアップロードします。 これは、workflow_runがリポジトリのデフォルトブランチのコンテキストで実行されるため、 BENCHER_API_TOKENGITHUB_TOKENなどのシークレットが利用可能だからです。 最初のpull_requestワークフローで使用されるプルリクエスト番号、ヘッドブランチ、およびベースブランチも、 そこでは利用できないため、明示的にworkflow_runワークフローに渡す必要があります。 これらのワークフローは、_デフォルト_ブランチに存在する場合にのみ実行されます。 完全な概要については、トリガーワークフローのデータ使用を参照してください。

name: Run and Cache Benchmarks
on:
pull_request:
types: [opened, reopened, edited, synchronize]
jobs:
benchmark_fork_pr_branch:
name: Run Fork PR Benchmarks
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Mock Benchmarking
run: |
/bin/echo '{ "bencher::mock_0": { "latency": { "value": 1.0 } } }' > benchmark_results.json
- name: Upload Benchmark Results
uses: actions/upload-artifact@v4
with:
name: benchmark_results.json
path: ./benchmark_results.json
- name: Upload GitHub Pull Request Event
uses: actions/upload-artifact@v4
with:
name: event.json
path: ${{ github.event_path }}
  1. 最初のGitHub Actions workflow ファイルを作成します。 (例: .github/workflows/run_fork_pr_benchmarks.yml)

  2. このワークフローに名前を付け、2番目のワークフローから参照できるようにします。 (例: name: Run and Cache Benchmarks)

  3. pull_requestイベントで実行します:

    • opened - プルリクエストが作成されました。
    • reopened - 以前閉じられたプルリクエストが再開されました。
    • edited - プルリクエストのタイトルや本文が編集されたか、ベースブランチが変更されました。
    • synchronize - プルリクエストのヘッドブランチが更新されました。 例えば、ヘッドブランチがベースブランチから更新されたり、新しいコミットがヘッドブランチにプッシュされたりした場合です。

    完全な概要については、GitHub Actions の on ドキュメント および GitHub Actions の pull_request ドキュメント を参照してください。 (例: on: pull_request: types: [opened, reopened, edited, synchronize])

  4. GitHub Actions jobを作成します。 (例: jobs: benchmark_fork_pr_branch)

  5. ジョブが実行するマシンの種類を設定します。 完全な概要については、GitHub Actions の runs-on ドキュメント を参照してください。 (例: runs-on: ubuntu-latest)

  6. フォークPRブランチのソースコードをチェックアウトします。 (例: uses: actions/checkout@v4)

  7. ベンチマークを実行し、結果をファイルに保存します。 (例: /bin/echo '{ ... }' > benchmark_results.json)

  8. ベンチマーク結果ファイルをアーティファクトとしてアップロードします。 (例: uses: actions/upload-artifact@v4)

  9. pull_requestイベントオブジェクトをアーティファクトとしてアップロードします。 (例: uses: actions/upload-artifact@v4)

name: Track Benchmarks with Bencher
on:
workflow_run:
workflows: [Run and Cache Benchmarks]
types: [completed]
jobs:
track_fork_pr_branch:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
env:
BENCHMARK_RESULTS: benchmark_results.json
PR_EVENT: event.json
steps:
- name: Download Benchmark Results
uses: actions/github-script@v6
with:
script: |
async function downloadArtifact(artifactName) {
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == artifactName
})[0];
if (!matchArtifact) {
core.setFailed(`Failed to find artifact: ${artifactName}`);
}
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(`${process.env.GITHUB_WORKSPACE}/${artifactName}.zip`, Buffer.from(download.data));
}
await downloadArtifact(process.env.BENCHMARK_RESULTS);
await downloadArtifact(process.env.PR_EVENT);
- name: Unzip Benchmark Results
run: |
unzip $BENCHMARK_RESULTS.zip
unzip $PR_EVENT.zip
- name: Export PR Event Data
uses: actions/github-script@v6
with:
script: |
let fs = require('fs');
let prEvent = JSON.parse(fs.readFileSync(process.env.PR_EVENT, {encoding: 'utf8'}));
core.exportVariable("PR_HEAD", `${prEvent.number}/merge`);
core.exportVariable("PR_BASE", prEvent.pull_request.base.ref);
core.exportVariable("PR_BASE_SHA", prEvent.pull_request.base.sha);
core.exportVariable("PR_NUMBER", prEvent.number);
- uses: bencherdev/bencher@main
- name: Track Benchmarks with Bencher
run: |
bencher run \
--project save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ env.PR_HEAD }}' \
--branch-start-point '${{ env.PR_BASE }}' \
--branch-start-point-hash '${{ env.PR_BASE_SHA }}' \
--branch-reset \
--testbed ubuntu-latest \
--adapter json \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
--ci-number '${{ env.PR_NUMBER }}' \
--file "$BENCHMARK_RESULTS"
  1. 最初のGitHub Actions workflow ファイルを作成します。 (例: .github/workflows/track_fork_pr_benchmarks.yml)
  2. このワークフローを名前付きの2番目のワークフローとします。 (例: name: Track Benchmarks with Bencher)
  3. 2つのワークフローを workflow_run イベント でチェーンします。 (例: on: workflow_run: ...)
  4. GitHub Actionsjobを作成します。 (例: jobs: track_fork_pr_branch)
  5. 前のワークフローの結論が成功した場合にのみこのジョブを実行します。 GitHub Actions の workflow_run イベント を参照してください。 (例: if: github.event.workflow_run.conclusion == 'success')
  6. ジョブが実行するマシンの種類を設定します。 完全な概要については、GitHub Actions の runs-on ドキュメント を参照してください。 (例: runs-on: ubuntu-latest)
  7. ベンチマーク結果とpull_requestイベント オブジェクトのファイル名を環境変数として設定します。 (例: env: ...)
  8. キャッシュされたベンチマーク結果と pull_request イベントをダウンロードします。 (例: uses: actions/github-script@v6)
  9. キャッシュからベンチマーク結果と pull_request イベントを抽出します。 (例: unzip ...)
  10. 必要なデータを pull_request イベントから環境変数としてエクスポートします。 (例: core.exportVariable(...))
  11. GitHub Action を使用して Bencher CLI をインストール します。 (例: uses: bencherdev/bencher@main)
  12. bencher run CLI サブコマンドを使用して、 フォークプルブランチのベンチマークを追跡します。 完全な概要については、bencher run CLI サブコマンド を参照してください。 (例: bencher run)
  13. --project オプションをプロジェクトのスラッグに設定します。 詳細については、--project ドキュメント を参照してください。 (例: --project save-walter-white-1234abcd)
  14. --token オプションを リポジトリ のシークレットである BENCHER_API_TOKEN に設定します。 詳細については、--token ドキュメント を参照してください。 (例: --token '${{ secrets.BENCHER_API_TOKEN }}')
  15. --branch オプションをGitHub Actions pull_request イベントを使用してフォークPR番号にフォーマットします。 完全な概要については、ブランチ選択 を参照してください。 (例: --branch '${{ env.PR_HEAD }}')
  16. --branch-start-point オプションをGitHub Actions pull_request イベントを使用してフォーク PR ベース ブランチの開始ポイントに設定します。 完全な概要については、ブランチ選択 を参照してください。 (例: --branch-start-point '${{ env.PR_BASE }}')
  17. --branch-start-point-hash オプションをpull_request イベントを使用してフォークPRベースブランチの開始ポイントハッシュに設定します。 完全な概要については、ブランチ選択 を参照してください。 (例: --branch-start-point-hash '${{ env.PR_BASE_SHA }}')
  18. --branch-reset フラグを設定して、ブランチを開始ポイントに常にリセットします。 これにより、ベンチマークデータのドリフトを防ぐことができます。 完全な概要については、ブランチ選択 を参照してください。 (例: --branch-reset)
  19. --testbed オプションをテストベッドの名前に設定します。 これはおそらく runs-on で選択されたマシンと一致する必要があります。 詳細については、--tested ドキュメント を参照してください。 (例: --testbed ubuntu-latest)
  20. --adapter オプションを希望するベンチマークハーネスアダプターに設定します。 完全な概要については、ベンチマーク ハーネス アダプター を参照してください。 (例: --adapter json)
  21. --err フラグを設定して、アラートが生成された場合にコマンドを失敗させます。 完全な概要については、しきい値とアラート を参照してください。 (例: --err)
  22. 結果をプルリクエストのコメントとして投稿するために GitHub API 認証トークンを使用するため、--github-actions オプションを設定します。 詳細については、GitHub Actions GITHUB_TOKEN 環境変数 を参照してください。 詳細については、github actions ドキュメント を参照してください。 (例: --github-actions '${{ secrets.GITHUB_TOKEN }}')
  23. --ci-number オプションをプルリクエスト番号に設定します。 詳細については、--ci-number ドキュメント を参照してください。 (例: --ci-number '${{ env.PR_NUMBER }}')
  24. --file オプションをベンチマーク結果ファイルのパスに設定します。 完全な概要については、ベンチマーク コマンド を参照してください。 (例: --file "$BENCHMARK_RESULTS")

ターゲットブランチからフォークしたPRのベンチマークと必要なレビュアー

フォークプルリクエストのコードが安全であることを保証するために、このGitHub Actionはフォークが他のリポジトリからのものであるかどうかを確認します。他のリポジトリからのフォークであれば、レビューが必要です。

⚠️ 各フォークPRを承認前に完全にレビューすることが非常重要です! そうしないと、攻撃リクエストになる可能性があります!

これを避けたい場合は、デフォルトブランチからのフォークPRのベンチマークとアップロード を参照してください。

このワークフローを設定するには、2つのGitHub Actions 環境を作成する必要があります。 Your Repo -> Settings -> Environments -> New environmentに移動します。 internalexternal の2つの新しい環境を作成します。 internal 環境には Deployment protection rules が設定されていない必要があります。 一方、external 環境にはフォークPRをベンチマーク前にレビューする信頼できるレビュアーがRequired reviewersとして設定されている必要があります。 詳細はこのブログ投稿 を参照してください。

この設定は、pull_request_target がプルリクエストのターゲットブランチのコンテキストで実行されるため機能します。 そのため、BENCHER_API_TOKENGITHUB_TOKEN のようなシークレットが利用可能です。 したがって、このワークフローはターゲットブランチに存在する場合のみ実行されます。 シークレットを環境変数として設定することは避け、代わりに明示的に bencher run にシークレットを渡してください。

on:
pull_request_target:
types: [opened, reopened, edited, synchronize]
jobs:
fork_pr_requires_review:
environment: ${{ (github.event.pull_request.head.repo.full_name == github.repository && 'internal') || 'external' }}
runs-on: ubuntu-latest
steps:
- run: true
benchmark_fork_pr_branch:
needs: fork_pr_requires_review
name: Continuous Benchmarking Fork PRs with Bencher
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
repository: ${{ github.event.pull_request.head.repo.full_name }}
ref: ${{ github.event.pull_request.head.sha }}
persist-credentials: false
- uses: bencherdev/bencher@main
- name: Track Fork PR Benchmarks with Bencher
run: |
bencher run \
--project save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch '${{ github.event.number }}/merge' \
--branch-start-point '${{ github.base_ref }}' \
--branch-start-point-hash '${{ github.event.pull_request.base.sha }}' \
--branch-reset \
--testbed ubuntu-latest \
--adapter json \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
bencher mock
  1. GitHub Actions の workflow ファイルを作成します。 (例: .github/workflows/pr_target_benchmarks.yml)

  2. pull_request イベントで実行します:

    • opened - プルリクエストが作成された。
    • reopened - 閉じられていたプルリクエストが再開された。
    • edited - プルリクエストのタイトルや本文が編集された、またはベースブランチが変更された。
    • synchronize - プルリクエストのヘッドブランチが更新された。 例えば、ベースブランチからの更新や新しいコミットがヘッドブランチにプッシュされた場合です。

    完全な概要については、GitHub Actions on ドキュメント および GitHub Actions pull_request ドキュメント を参照してください。 (例: on: pull_request: types: [opened, reopened, edited, synchronize])

  3. ワークフローがレビューを必要とするかどうかを確認する最初の GitHub Actions job を作成します。 (例: jobs: fork_pr_requires_review)

  4. プルリクエストが同じリポジトリから来ている場合にのみ environmentinternal に設定します。 それ以外の場合は、environmentexternal に設定し、レビュー担当者の承認が必要となります。 ⚠️ この行を削除しないでください! (例: environment: ${{ (github.event.pull_request.head.repo.full_name == github.repository && 'internal') || 'external' }})

  5. ベンチマークを実行するための2つ目の GitHub Actions job を作成します。 (例: benchmark_fork_pr_branch)

  6. benchmark_fork_pr_branch ジョブが fork_pr_requires_review ジョブを必要とするように指定します。 ⚠️ この行を削除しないでください! 完全な概要については、GitHub Actions needs ドキュメント を参照してください。 (例: needs: fork_pr_requires_review)

  7. ジョブが実行されるマシンのタイプを設定します。 完全な概要については、GitHub Actions runs-on ドキュメント を参照してください。 (例: runs-on: ubuntu-latest)

  8. フォークPRのソースコードをチェックアウトします。 pull_request_targetがプルリクエストのターゲットブランチのコンテキストで実行されるため、プルリクエストブランチをチェックアウトする必要があります。 (例: uses: actions/checkout@v4)

    • フォークPRのリポジトリを指定 (例: repository: ${{ github.event.pull_request.head.repo.full_name }})
    • フォークPRのハッシュを指定 (例: ref: ${{ github.event.pull_request.head.sha }})
    • gitクレデンシャルを保持しない (例: persist-credentials: false)
  9. GitHub Action を使用して Bencher CLI をインストールします。 (例: uses: bencherdev/bencher@main)

  10. bencher run CLIのサブコマンドを使って、 フォークプルブランチのベンチマークを実行します。 the bencher run CLI subcommandを参照して、完全な概要をご覧ください。 (例: bencher run)

  11. --project オプションをプロジェクトスラッグに設定します。 詳細は --project ドキュメント を参照してください。 (例: --project save-walter-white-1234abcd)

  12. --token オプションをリポジトリ シークレット BENCHER_API_TOKEN に設定します。 詳細は --token ドキュメント を参照してください。 (例: --token '${{ secrets.BENCHER_API_TOKEN }}')

  13. --branch オプションをフォークPRの番号をフォーマットして設定します GitHub Actions pull_request イベント を使用します。 完全な概要についてはブランチセレクション を参照してください。 (例: --branch '${{ github.event.number }}/merge')

  14. --branch-start-point オプションをフォークPRのベースブランチの開始ポイントに設定します GitHub Actions github コンテキストを使用します。 完全な概要についてはブランチセレクション を参照してください。 (例: --branch-start-point '${{ github.base_ref }}')

  15. --branch-start-point-hash オプションをフォークPRのベースブランチの開始ポイントハッシュに設定します GitHub Actions pull_request イベント を使用します。 完全な概要についてはブランチセレクション を参照してください。 (例: --branch-start-point-hash '${{ github.event.pull_request.base.sha }}')

  16. --branch-reset フラグを設定して常にブランチを開始ポイントにリセットします。 これにより、ベンチマークデータのドリフトを防止できます。 完全な概要についてはブランチセレクション を参照してください。 (例: --branch-reset)

  17. --testbed オプションをテストベッド名に設定します。 これは選択したマシンと一致する必要があります。 詳細は --tested ドキュメント を参照してください。 (例: --testbed ubuntu-latest)

  18. --adapter オプションを希望するベンチマークハーネスアダプタに設定します。 完全な概要については ベンチマークハーネスアダプタ を参照してください。 (例: --adapter json)

  19. --err フラグを設定して、アラートが生成された場合にコマンドを失敗させるようにします。 完全な概要については しきい値とアラート を参照してください。 (例: --err)

  20. --github-actions オプションを GitHub API 認証トークンに設定して、結果をプルリクエストのコメントとして投稿します。 GitHub Actions GITHUB_TOKEN 環境変数 を使用します。 完全な概要については --github-actions ドキュメント を参照してください。 (例: --github-actions '${{ secrets.GITHUB_TOKEN }}')

  21. ベンチマークコマンドの引数を指定します。 完全な概要については ベンチマークコマンド を参照してください。 (例: bencher mock)



🐰 おめでとうございます!GitHub ActionsでBencherを使用する方法を学びました!🎉


続ける: ベンチマーキングの概要 ➡

🤖 このドキュメントは OpenAI GPT-4 によって自動的に生成されました。 正確ではない可能性があり、間違いが含まれている可能性があります。 エラーを見つけた場合は、GitHub で問題を開いてください。.


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Thu, August 22, 2024 at 12:40:00 PM UTC