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

ベースブランチ

統計的継続的ベンチマーキングの基礎は、ベースブランチの履歴ベースラインを持つことです。 この履歴ベースラインを使用して、プルリクエストにおけるパフォーマンスの退行を検出することができます。

.github/workflows/base_benchmarks.yml
on:
push:
branches: main
jobs:
benchmark_base_branch:
name: Continuous Benchmarking with Bencher
permissions:
checks: write
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 \
--threshold-measure latency \
--threshold-test t_test \
--threshold-max-sample-size 64 \
--threshold-upper-boundary 0.99 \
--thresholds-reset \
--err \
--adapter json \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
bencher mock
  1. GitHub Actionsのworkflowファイルを作成します。 (例: .github/workflows/base_benchmarks.yml
  2. mainブランチへのpushイベントで実行します。 詳細については、GitHub ActionsのonドキュメントおよびGitHub Actionsのpushドキュメントを参照してください。 (例: on: push: branches: main
  3. GitHub Actionsのjobを作成します。 (例: jobs: benchmark_base_branch
  4. GITHUB_TOKEN権限を設定します checksに対してwriteを設定してください。 (例:permissions: checks: write
  5. ジョブを実行するマシンのタイプを設定します。 詳細については、GitHub Actionsのruns-onドキュメントを参照してください。 (例: runs-on: ubuntu-latest
  6. ベースブランチのソースコードをチェックアウトします。 (例: uses: actions/checkout@v4
  7. GitHub Actionを使用してBencher CLIをインストールします。 (例: uses: bencherdev/bencher@main
  8. bencher run CLIサブコマンドを使用してmainブランチのベンチマークを実行します。 詳細については、bencher run CLIサブコマンドを参照してください。 (例: bencher run
  9. --projectオプションをプロジェクトスラッグに設定します。 詳細については、--project ドキュメントを参照してください。 (例: --project save-walter-white-1234abcd
  10. --tokenオプションをBENCHER_API_TOKEN リポジトリシークレットに設定します。 詳細については、--token ドキュメントを参照してください。 (例: --token '${{ secrets.BENCHER_API_TOKEN }}'
  11. --branchオプションをベースブランチ名に設定します。 詳細については、--branch ドキュメントを参照してください。 (例: --branch main
  12. --testbedオプションをテストベッド名に設定します。 これは、runs-onで選択されたマシンと一致する必要があります。 詳細については、--testbed ドキュメントを参照してください。 (例: --testbed ubuntu-latest
  13. mainブランチ、ubuntu-latestテストベッド、latency測定のしきい値を設定します:
    1. --threshold-measureオプションをbencher mockによって生成される組み込みのlatency測定に設定します。 詳細については、--threshold-measure ドキュメントを参照してください。 (例: --threshold-measure latency
    2. --threshold-testオプションをスチューデントのt検定(t_test)に設定します。 詳細については、--threshold-test ドキュメントを参照してください。 (例: --threshold-test t_test
    3. --threshold-max-sample-sizeオプションを最大サンプルサイズである64に設定します。 詳細については、--threshold-max-sample-size ドキュメントを参照してください。 (例: --threshold-max-sample-size 64
    4. --threshold-upper-boundaryオプションを上限の0.99に設定します。 詳細については、--threshold-upper-boundary ドキュメントを参照してください。 (例: --threshold-upper-boundary 0.99
    5. 指定されたしきい値のみをアクティブにするために--thresholds-resetフラグを設定します。 詳細については、--thresholds-reset ドキュメントを参照してください。 (例: --thresholds-reset
  14. 警告が生成された場合にコマンドを失敗させるように--errフラグを設定します。 詳細については、--err ドキュメントを参照してください。 (例: --err
  15. bencher mockによって生成されるBencher Metric Format JSON(json--adapterオプションに設定します。 詳細については、ベンチマークハーネスアダプタを参照してください。 (例: --adapter json
  16. 結果をGitHub Checksコメントとして投稿するために、GitHub Actions GITHUB_TOKEN 環境変数を使用して、--github-actionsオプションをGitHub API認証トークンに設定します。 詳細については、--github-actions ドキュメントを参照してください。 (例: --github-actions '${{ secrets.GITHUB_TOKEN }}'
  17. ベンチマークコマンド引数を指定します。 詳細については、ベンチマークコマンドを参照してください。 (例: bencher mock

プルリクエスト

プルリクエスト(PR)でパフォーマンスの退行をキャッチするためには、PRでベンチマークを実行する必要があります。 同じリポジトリ内のブランチからのみPRが期待される場合は、 同じリポジトリからのpull_requestイベントで実行される別のワークフローを作成すれば簡単です。

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

.github/workflows/pr_benchmarks.yml
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" \
--start-point "$GITHUB_BASE_REF" \
--start-point-hash '${{ github.event.pull_request.base.sha }}' \
--start-point-clone-thresholds \
--start-point-reset \
--testbed ubuntu-latest \
--err \
--adapter json \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
bencher mock
  1. GitHub Actionsのworkflowファイルを作成します。 (例: .github/workflows/pr_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: 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_HEAD_REFのGitHub Actionsデフォルト環境変数を使用して、--branchオプションをPRブランチ名に設定します。 全体を把握するために--branchドキュメントを参照してください。 (例: --branch "$GITHUB_HEAD_REF")

  13. PRブランチの開始ポイントを設定します:

    1. GITHUB_BASE_REFのGitHub Actionsデフォルト環境変数を使用して、--start-pointオプションをPRブランチの開始ポイントに設定します。 全体を把握するために--start-pointドキュメントを参照してください。 (例: --start-point "$GITHUB_BASE_REF")
    2. pull_requestイベントのGitHub Actionsを使用して、--start-point-hashオプションをPRブランチの開始ポイントgitハッシュに設定します。 全体を把握するために--start-point-hashドキュメントを参照してください。 (例: --start-point-hash '${{ github.event.pull_request.base.sha }}')
    3. 開始ポイントからしきい値をクローンするために、--start-point-clone-thresholdsフラグを設定します。 全体を把握するために--start-point-clone-thresholdsドキュメントを参照してください。 (例: --start-point-clone-thresholds)
    4. ベンチマークデータのドリフトを防ぐために、PRブランチを開始ポイントに常にリセットする--start-point-resetフラグを設定します。 全体を把握するために--start-point-resetドキュメントを参照してください。 (例: --start-point-reset)
  14. --testbedオプションをテストベッド名に設定します。 これはruns-onで選択したマシンと一致する可能性があります。 詳細は--testedドキュメントを参照してください。 (例: --testbed ubuntu-latest)

  15. アラートが生成された場合にコマンドを失敗させるために、--errフラグを設定します。 全体を把握するために--errドキュメントを参照してください。 (例: --err)

  16. Bencher Metric Format JSON (json)を生成するbencher mockを使用して、Bencher Metric Format JSONjson--adapterオプションを設定します。 ベンチマークハーネスアダプタを参照し、全体を把握してください。 (例: --adapter json)

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

  18. ベンチマークコマンドの引数を指定します。 全体を把握するためにベンチマークコマンドを参照してください。 (例: bencher mock)

PRがクローズされた後にPRブランチをクリーンアップするためには、closedタイプのpull_requestイベントで実行される別のワークフローを作成できます。このワークフローはbencher archiveコマンドを使用してPRブランチをアーカイブします。

.github/workflows/pr_benchmarks_closed.yml
on:
pull_request:
types: [closed]
jobs:
archive_pr_branch:
name: Archive closed PR branch 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
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bencherdev/bencher@main
- name: Archive closed PR branch with Bencher
run: |
bencher archive \
--project save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch "$GITHUB_HEAD_REF"
  1. GitHub Actionsのworkflowファイルを作成します。 (例: .github/workflows/pr_benchmarks_closed.yml)

  2. pull_requestイベントで実行:

    • closed - プルリクエストがクローズされた。

    完全な概要についてはGitHub ActionsのonドキュメントGitHub Actionsのpull_requestドキュメントをご覧ください。 (例: on: pull_request: types: [closed])

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

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

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

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

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

  8. bencher archive CLIサブコマンドを使用してPRブランチをアーカイブします。 (例: bencher archive)

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

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

  11. GitHub ActionsのGITHUB_HEAD_REFデフォルト環境変数を使用して、PRブランチ名を--branchオプションに設定します。 (例: --branch "$GITHUB_HEAD_REF")


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

公開のオープンソースプロジェクトでよくあるようにフォークからのプルリクエストを受け入れる予定の場合、少し異なる方法で処理する必要があります。 セキュリティ上の理由から、フォークのプルリクエストでは BENCHER_API_TOKENGITHUB_TOKEN などのシークレットは GitHub Actions で利用できません。 つまり、外部のコントリビューターがフォークから PR を作成すると、上記の例は 動作しません。 完全な概要については、この GitHub Security Lab の説明 と、 この ブログ記事 を参照してください。

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

.github/workflows/fork_pr_benchmarks_run.yml
name: Run 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/fork_pr_benchmarks_run.yml)

  2. このワークフローに名前を付けて、2番目のワークフローから参照できるようにします。 (例: name: Run 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)

.github/workflows/fork_pr_benchmarks_track.yml
name: Track Benchmarks with Bencher
on:
workflow_run:
workflows: [Run 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: dawidd6/action-download-artifact@v6
with:
name: ${{ env.BENCHMARK_RESULTS }}
run_id: ${{ github.event.workflow_run.id }}
- name: Download PR Event
uses: dawidd6/action-download-artifact@v6
with:
name: ${{ env.PR_EVENT }}
run_id: ${{ github.event.workflow_run.id }}
- 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.pull_request.head.ref);
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 "$PR_HEAD" \
--start-point "$PR_BASE" \
--start-point-hash "$PR_BASE_SHA" \
--start-point-clone-thresholds \
--start-point-reset \
--testbed ubuntu-latest \
--err \
--adapter json \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
--ci-number "$PR_NUMBER" \
--file "$BENCHMARK_RESULTS"
  1. 最初のGitHub Actions workflowファイルを作成します。 (例: .github/workflows/fork_pr_benchmarks_track.yml)
  2. このワークフローに名前を付けます。 (例: name: Track Benchmarks with Bencher)
  3. 2つのワークフローを workflow_run イベントで連鎖させます。 (例: on: workflow_run: ...)
  4. GitHub Actions job を作成します。 (例: jobs: track_fork_pr_branch)
  5. 前のワークフローの結論が成功した場合のみこのジョブを実行します。 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イベントを action-download-artifact GitHub Action を使用してダウンロードします。 (例: uses: dawidd6/action-download-artifact@v6)
  9. 必要なデータをpull_requestイベントから環境変数としてエクスポートします。 (例: core.exportVariable(...))
  10. GitHub Action を使用してBencher CLIをインストールします。 (例: uses: bencherdev/bencher@main)
  11. bencher run CLIサブコマンドを使用してフォークプルブランチのベンチマークを追跡します。 bencher run CLIサブコマンドの全体的な概要を参照してください。 (例: bencher run)
  12. --project オプションをプロジェクトスラッグに設定します。 詳細は --project ドキュメントを参照してください。 (例: --project save-walter-white-1234abcd)
  13. --token オプションをBENCHER_API_TOKEN リポジトリシークレットに設定します。 詳細は --token ドキュメントを参照してください。 (例: --token '${{ secrets.BENCHER_API_TOKEN }}')
  14. --branch オプションをフォークPRブランチ名に 仲介環境変数 を使用して設定します。 --branch ドキュメント を参照して全体像を確認してください。 (例: --branch "$PR_HEAD")
  15. フォークPRブランチの開始ポイントを設定します:
    1. --start-point オプションをフォークPRブランチの開始ポイントに 仲介環境変数 を使用して設定します。 --start-point ドキュメント を参照して全体像を確認してください。 (例: --start-point "$PR_BASE")
    2. --start-point-hash オプションをフォークPRブランチ開始ポイントのgitハッシュに 仲介環境変数 を使用して設定します。 --start-point-hash ドキュメント を参照して全体像を確認してください。 (例: --start-point-hash "$PR_BASE_SHA")
    3. --start-point-clone-thresholds フラグを設定して開始ポイントからしきい値をクローンします。 --start-point-clone-thresholds ドキュメント を参照して全体像を確認してください。 (例: --start-point-clone-thresholds)
    4. --start-point-reset フラグを設定してフォークPRブランチを常に開始ポイントにリセットします。 これはベンチマークデータのドリフトを防ぎます。 --start-point-reset ドキュメント を参照してください。 (例: --start-point-reset)
  16. --testbed オプションをテストベッド名に設定します。 これはおそらく runs-on で選択されたマシンと一致しているべきです。 詳細は --tested ドキュメントを参照してください。 (例: --testbed ubuntu-latest)
  17. アラートが生成された場合にコマンドが失敗するように--err フラグを設定します。 --err ドキュメント を参照して全体像を確認してください。 (例: --err)
  18. Bencher Metric Format JSON (json) にオプションを設定して bencher mock によって生成された形式を指定します。 ベンチマークハーネスアダプタ を参照して全体像を確認してください。 (例: --adapter json)
  19. --github-actions オプションをGitHub API認証トークンに設定して、 プルリクエストにコメントとして結果を投稿します。 GitHub Actions GITHUB_TOKEN 環境変数 を使用して設定します。 詳細は --github-actions ドキュメント を参照してください。 (例: --github-actions '${{ secrets.GITHUB_TOKEN }}')
  20. --ci-number オプションをプルリクエスト番号に設定します。 仲介環境変数 を使用します。 詳細は --ci-number ドキュメント を参照してください。 (例: --ci-number "$PR_NUMBER")
  21. --file オプションをベンチマーク結果のファイルパスに設定します。 ベンチマークコマンド を参照して全体像を確認してください。 (例: --file "$BENCHMARK_RESULTS")

フォークPRのブランチをクリーンアップするために、そのPRがクローズされた後、 pull_request_targetイベントのclosedタイプで実行される別のワークフローを作成できます。 このワークフローは、bencher archiveコマンドを使用してフォークPRのブランチをアーカイブします。

.github/workflows/fork_pr_benchmarks_closed.yml
on:
pull_request_target:
types: [closed]
jobs:
archive_fork_pr_branch:
name: Archive closed fork PR branch with Bencher
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: bencherdev/bencher@main
- name: Archive closed fork PR branch with Bencher
run: |
bencher archive \
--project save-walter-white-1234abcd \
--token '${{ secrets.BENCHER_API_TOKEN }}' \
--branch "$GITHUB_HEAD_REF"
  1. GitHub Actionsのworkflowファイルを作成します。 (例: .github/workflows/fork_pr_benchmarks_closed.yml)

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

    • closed - プルリクエストがクローズされた。

    詳細はGitHub Actions onドキュメントGitHub Actions pull_request_targetドキュメントを参照してください。 (例: on: pull_request_target: types: [closed])

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

  4. ジョブが実行されるマシンの種類を設定します。 詳細はGitHub Actions runs-onドキュメントを参照してください。 (例: runs-on: ubuntu-latest)

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

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

  7. bencher archive CLIサブコマンドを使用してPRブランチをアーカイブします。 (例: bencher archive)

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

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

  10. PRブランチ名を指定して--branchオプションを設定します。 GitHub Actions GITHUB_HEAD_REF デフォルト環境変数を使用してください。 (例: --branch "$GITHUB_HEAD_REF")



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


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

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


Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Mon, November 4, 2024 at 7:40:00 AM UTC