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에 선택된 머신과 일치해야 합니다. 자세한 내용은 --tested 문서를 참조하세요. (예: --testbed ubuntu-latest)
  13. main 브랜치, ubuntu-latest 테스트베드, latency 측정을 위한 임계값을 설정하세요:
    1. --threshold-measure 옵션을 bencher mock에 의해 생성된 기본 latency 측정값으로 설정하세요. 자세한 내용은 --threshold-measure 문서를 참조하세요. (예: --threshold-measure latency)
    2. --threshold-test 옵션을 Student의 t-test (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 Metric Format JSON (json)에 대해 --adapter 옵션을 설정하세요. 이 형식은 bencher mock에 의해 생성됩니다. 전체 개요는 벤치마크 하니스 어댑터를 참조하세요. (예: --adapter json)
  16. GitHub Checks 댓글로 결과를 게시하기 위해 GitHub Actions GITHUB_TOKEN 환경 변수를 사용하여 GitHub API 인증 토큰을 --github-actions 옵션에 설정하세요. 자세한 내용은 --github-actions 문서를 참조하세요. (예: --github-actions '${{ secrets.GITHUB_TOKEN }}')
  17. 벤치마크 명령 인수를 지정하세요. 전체 개요는 벤치마크 명령를 참조하세요. (예: bencher mock)

Pull Requests

성능 성능 회귀를 감지하려면 PR에서 벤치마크를 실행해야 합니다. 만약 PR들이 동일한 저장소에서만 있다고 가정한다면, 단순히 같은 저장소에서 pull_request 이벤트를 트리거하도록 하는 또 다른 워크플로우를 생성할 수 있습니다.

⚠️ 이 솔루션은 모든 PR이 동일한 저장소에서 온 경우에만 작동합니다! 아래의 포크에서의 Pull Requests를 참조하십시오.

.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 - Pull request가 생성되었습니다.
    • reopened - 이전에 닫혔던 pull request가 다시 열렸습니다.
    • edited - pull request의 제목이나 본문이 편집되었거나 pull request의 기본 브랜치가 변경되었습니다.
    • synchronize - pull request의 헤드 브랜치가 업데이트되었습니다. 예를 들어, 헤드 브랜치가 기본 브랜치에서 업데이트되었거나 새로운 커밋이 헤드 브랜치로 푸쉬되었습니다.

    전체 개요는 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가 동일한 저장소에서 온 경우에만 pull_request 이벤트에서 실행합니다. ⚠️ 이 라인을 제거하지 마십시오! 포크 PR 처리에 관해서는 아래의 포크에서의 Pull Requests를 참조하세요. (예: if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository)

  5. GITHUB_TOKEN권한을 설정하여 pull-requestswrite를 부여합니다. 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. PR 브랜치 벤치마크를 실행하기 위해 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_HEAD_REF 기본 환경 변수를 사용하여 PR 브랜치 이름을 --branch 옵션으로 설정합니다. 전체 개요는 --branch 문서를 참조하세요. (예: --branch "$GITHUB_HEAD_REF")

  13. PR 브랜치의 시작점을 설정합니다:

    1. GitHub Actions GITHUB_BASE_REF 기본 환경 변수을 사용하여 PR 브랜치 시작점으로 --start-point 옵션을 설정합니다. 전체 개요는 --start-point 문서를 참조하세요. (예: --start-point "$GITHUB_BASE_REF")
    2. PR 브랜치 시작점 git 해시값을 사용하여 --start-point-hash 옵션을 설정합니다. GitHub Actions pull_request 이벤트를 사용하여. 전체 개요는 --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에서 선택한 머신과 일치해야 합니다. 더 많은 세부 사항은 --testbed 문서를 참조하세요. (예: --testbed ubuntu-latest)

  15. 알림이 생성되면 명령어를 실패시키도록 --err 플래그를 설정합니다. 전체 개요는 --err 문서를 참조하세요. (예: --err)

  16. bencher mock에 의해 생성된 Bencher Metric Format JSON (json)--adapter 옵션을 설정합니다. 전체 개요는 벤치마크 하네스 어댑터를 참조하세요. (예: --adapter json)

  17. GitHub Actions GITHUB_TOKEN 환경 변수을 사용하여 결과를 Pull Request에 댓글로 게시하는 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 이벤트에서 실행하십시오. ⚠️ 이 줄을 제거하지 마십시오! 포크 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. PR 브랜치를 아카이브하기 위해 bencher archive CLI 서브커맨드를 사용하십시오. (예: 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")


포크로부터의 풀 리퀘스트

공개 오픈 소스 프로젝트에서 일반적으로 발생하는 것처럼 포크로부터의 풀 리퀘스트를 수락할 계획이라면 조금 다르게 처리해야 합니다. 보안상의 이유로, 포크 PR에서는 BENCHER_API_TOKENGITHUB_TOKEN과 같은 비밀이 GitHub Actions에서 사용할 수 없습니다. 즉, 외부 기여자가 포크로부터 PR을 열면 위의 예제는 작동하지 않습니다. 전체 개요를 보려면 GitHub Security Lab 글 작성블로그 게시물 을 참조하십시오.

포크 풀 리퀘스트에 지속적인 벤치마킹을 추가하는 안전하고 권장되는 방법입니다. 두 개의 별도 워크플로우가 필요합니다. 첫 번째 워크플로우는 pull_request 컨텍스트에서 벤치마크 결과를 실행하고 캐시합니다. 여기에는 BENCHER_API_TOKENGITHUB_TOKEN 같은 비밀은 사용할 수 없습니다. 그런 다음 두 번째 워크플로우는 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. 두 번째 워크플로에서 참조할 수 있도록 이 워크플로의 이름을 지정합니다. (예: 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. the workflow_run event을 사용하여 두 워크플로를 연결하세요. (예: on: workflow_run: ...)
  4. GitHub Actions job을 만드세요. (예: jobs: track_fork_pr_branch)
  5. the GitHub Actions workflow_run event을 사용하여 이전 워크플로의 결론이 성공적일 경우에만 이 작업을 실행하도록 하세요. (예: if: github.event.workflow_run.conclusion == 'success')
  6. 작업이 실행될 머신 유형을 설정하세요. 전체 개요는 GitHub Actions runs-on documentation을 참조하세요. (예: runs-on: ubuntu-latest)
  7. 벤치마크 결과와 pull_request 이벤트 객체 파일 이름을 환경 변수로 설정하세요. (예: env: ...)
  8. the action-download-artifact GitHub Action을 사용하여 캐시된 벤치마크 결과와 pull_request 이벤트를 다운로드하세요. (예: uses: dawidd6/action-download-artifact@v6)
  9. 필요한 데이터를 pull_request 이벤트에서 환경 변수로 내보내세요. (예: core.exportVariable(...))
  10. the GitHub Action을 사용하여 Bencher CLI를 설치하세요. (예: uses: bencherdev/bencher@main)
  11. bencher run CLI 서브커맨드를 사용하여 포크 풀 브랜치 벤치마크를 추적하세요. 자세한 내용은 the bencher run CLI subcommand을 참조하세요. (예: bencher run)
  12. --project 옵션을 프로젝트 슬러그로 설정하세요. 자세한 내용은 the --project docs을 참조하세요. (예: --project save-walter-white-1234abcd)
  13. --token 옵션을 BENCHER_API_TOKEN Repository 비밀로 설정하세요. 자세한 내용은 the --token docs을 참조하세요. (예: --token '${{ secrets.BENCHER_API_TOKEN }}')
  14. an intermediate environment variable을 사용하여 포크 PR 브랜치 이름을 --branch 옵션에 설정하세요. 전체 개요는 the --branch docs을 참조하세요. (예: --branch "$PR_HEAD")
  15. 포크 PR 브랜치의 시작 지점을 설정하세요:
    1. an intermediate environment variable을 사용하여 포크 PR 브랜치 시작 지점을 --start-point 옵션에 설정하세요. 전체 개요는 the --start-point docs을 참조하세요. (예: --start-point "$PR_BASE")
    2. an intermediate environment variable을 사용하여 포크 PR 브랜치 시작 지점 git 해시를 --start-point-hash 옵션에 설정하세요. 전체 개요는 the --start-point-hash docs을 참조하세요. (예: --start-point-hash "$PR_BASE_SHA")
    3. 시작 지점에서 임계값을 복제하려면 --start-point-clone-thresholds 플래그를 설정하세요. 전체 개요는 the --start-point-clone-thresholds docs을 참조하세요. (예: --start-point-clone-thresholds)
    4. 벤치마크 데이터 드리프트를 방지하기 위해 포크 PR 브랜치를 항상 시작 지점으로 재설정하려면 --start-point-reset 플래그를 설정하세요. 전체 개요는 the --start-point-reset docs을 참조하세요. (예: --start-point-reset)
  16. 시험대 이름을 --testbed 옵션에 설정하세요. 이는 runs-on에서 선택한 머신과 일치해야 할 것입니다. 자세한 내용은 the --tested docs을 참조하세요. (예: --testbed ubuntu-latest)
  17. 경고가 생성되면 명령을 실패하게 하려면 --err 플래그를 설정하세요. 전체 개요는 the --err docs을 참조하세요. (예: --err)
  18. bencher mock에 의해 생성된 Bencher Metric Format JSON (json)--adapter 옵션에 설정하세요. 전체 개요는 benchmark harness adapters을 참조하세요. (예: --adapter json)
  19. the GitHub Actions GITHUB_TOKEN environment variable을 사용하여 Pull Request에 대한 결과를 댓글로 게시하고자 할 때 GitHub API 인증 토큰을 --github-actions 옵션에 설정하세요. 자세한 내용은 the --github-actions docs을 참조하세요. (예: --github-actions '${{ secrets.GITHUB_TOKEN }}')
  20. an intermediate environment variable을 사용하여 풀 리퀘스트 번호를 --ci-number 옵션에 설정하세요. 자세한 내용은 the --ci-number docs을 참조하세요. (예: --ci-number "$PR_NUMBER")
  21. 벤치마크 결과 파일 경로를 --file 옵션에 설정하세요. 전체 개요는 benchmark command를 참조하세요. (예: --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. PR 브랜치를 아카이브하기 위해 bencher archive CLI 서브커맨드를 사용합니다. (예: bencher archive)

  8. --project 옵션을 프로젝트 슬러그로 설정합니다. 자세한 사항은 --project 문서를 참조하십시오. (예: --project save-walter-white-1234abcd)

  9. --token 옵션을 BENCHER_API_TOKEN 저장소 시크릿으로 설정합니다. 자세한 사항은 --token 문서를 참조하십시오. (예: --token '${{ secrets.BENCHER_API_TOKEN }}')

  10. GitHub Actions GITHUB_HEAD_REF 기본 환경 변수를 사용하여 PR 브랜치 이름을 --branch 옵션으로 설정합니다. (예: --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