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 }}는 빈 문자열이 될 것입니다.
기본 브랜치
통계적 지속 벤치마킹의 초석은 기본 브랜치에 대한 역사적 기준선을 보유하는 것입니다. 이 역사적 기준선은 풀 리퀘스트에서 성능 저하를 감지하는 데 사용될 수 있습니다.
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 project-abc4567-wxyz123456789 \ --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- GitHub Actions
workflow파일을 생성하세요. (예:.github/workflows/base_benchmarks.yml) main브랜치에 대한push이벤트에서 실행하세요. 전체 개요는 GitHub Actionson문서 및 GitHub Actionspush문서를 참조하세요. (예:on: push: branches: main)- GitHub Actions
job을 생성하세요. (예:jobs: benchmark_base_branch) GITHUB_TOKEN의 권한을 설정하십시오checks에 대해write로 설정합니다. (예:permissions: checks: write)- 작업이 실행될 머신의 유형을 설정하세요.
전체 개요는 GitHub Actions
runs-on문서를 참조하세요. (예:runs-on: ubuntu-latest) - 기본 브랜치 소스 코드를 체크아웃하세요.
(예:
uses: actions/checkout@v4) - GitHub Action을 사용하여 Bencher CLI를 설치하세요.
(예:
uses: bencherdev/bencher@main) bencher runCLI 서브 커맨드를 사용하여main브랜치 벤치마크를 실행하세요. 전체 개요는bencher runCLI 서브 커맨드를 참조하세요. (예:bencher run)--project옵션을 프로젝트 슬러그로 설정하세요. 자세한 내용은--project문서를 참조하세요. (예:--project project-abc4567-wxyz123456789)--token옵션을BENCHER_API_TOKEN레포지토리 비밀로 설정하세요. 자세한 내용은--token문서를 참조하세요. (예:--token '${{ secrets.BENCHER_API_TOKEN }}')--branch옵션을 기본 브랜치 이름으로 설정하세요. 전체 개요는--branch문서를 참조하세요. (예:--branch main)--testbed옵션을 테스트베드 이름으로 설정하세요. 이는 아마도runs-on에 선택된 머신과 일치해야 합니다. 자세한 내용은--tested문서를 참조하세요. (예:--testbed ubuntu-latest)main브랜치,ubuntu-latest테스트베드,latency측정을 위한 임계값을 설정하세요:--threshold-measure옵션을bencher mock에 의해 생성된 기본latency측정값으로 설정하세요. 자세한 내용은--threshold-measure문서를 참조하세요. (예:--threshold-measure latency)--threshold-test옵션을 Student의 t-test (t_test)로 설정하세요. 전체 개요는--threshold-test문서를 참조하세요. (예:--threshold-test t_test)--threshold-max-sample-size옵션을 최대 샘플 크기64로 설정하세요. 자세한 내용은--threshold-max-sample-size문서를 참조하세요. (예:--threshold-max-sample-size 64)--threshold-upper-boundary옵션을0.99의 상한으로 설정하세요. 자세한 내용은--threshold-upper-boundary문서를 참조하세요. (예:--threshold-upper-boundary 0.99)--thresholds-reset플래그를 설정하여 지정된 임계값만 활성 상태가 되도록 하세요. 전체 개요는--thresholds-reset문서를 참조하세요. (예:--thresholds-reset)
- 알림이 생성되면 명령을 실패하도록
--err플래그를 설정하세요. 전체 개요는--err문서를 참조하세요. (예:--err) - Bencher Metric Format JSON (
json)에 대해--adapter옵션을 설정하세요. 이 형식은bencher mock에 의해 생성됩니다. 전체 개요는 벤치마크 하니스 어댑터를 참조하세요. (예:--adapter json) - GitHub Checks 댓글로 결과를 게시하기 위해 GitHub Actions
GITHUB_TOKEN환경 변수를 사용하여 GitHub API 인증 토큰을--github-actions옵션에 설정하세요. 자세한 내용은--github-actions문서를 참조하세요. (예:--github-actions '${{ secrets.GITHUB_TOKEN }}') - 벤치마크 명령 인수를 지정하세요.
전체 개요는 벤치마크 명령를 참조하세요.
(예:
bencher mock)
Pull Requests
성능 성능 회귀를 감지하려면 PR에서 벤치마크를 실행해야 합니다. 만약 PR들이 동일한 저장소에서만 있다고 가정한다면, 단순히 같은 저장소에서 pull_request 이벤트를 트리거하도록 하는 또 다른 워크플로우를 생성할 수 있습니다.
⚠️ 이 솔루션은 모든 PR이 동일한 저장소에서 온 경우에만 작동합니다! 아래의 포크에서의 Pull Requests를 참조하십시오.
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 project-abc4567-wxyz123456789 \ --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-
GitHub Actions
workflow파일을 생성합니다. (예:.github/workflows/pr_benchmarks.yml) -
pull_request이벤트에서 실행합니다:opened- Pull request가 생성되었습니다.reopened- 이전에 닫혔던 pull request가 다시 열렸습니다.edited- pull request의 제목이나 본문이 편집되었거나 pull request의 기본 브랜치가 변경되었습니다.synchronize- pull request의 헤드 브랜치가 업데이트되었습니다. 예를 들어, 헤드 브랜치가 기본 브랜치에서 업데이트되었거나 새로운 커밋이 헤드 브랜치로 푸쉬되었습니다.
전체 개요는 GitHub Actions
on문서 및 GitHub Actionspull_request문서를 참조하세요. (예:on: pull_request: types: [opened, reopened, edited, synchronize]) -
GitHub Actions
job을 생성합니다. (예:jobs: benchmark_pr_branch) -
pull request가 동일한 저장소에서 온 경우에만
pull_request이벤트에서 실행합니다. ⚠️ 이 라인을 제거하지 마십시오! 포크 PR 처리에 관해서는 아래의 포크에서의 Pull Requests를 참조하세요. (예:if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) -
GITHUB_TOKEN의 권한을 설정하여pull-requests에write를 부여합니다. GitHub 설정에 따라 이 작업이 필요하지 않을 수 있습니다. 그러나 2023년 2월 2일 이후에 생성된 모든 조직 및 개인 저장소의 경우 기본 동작입니다. 전체 개요는 GitHub 문서를 참조하세요. (예:permissions: pull-requests: write) -
작업을 실행할 머신의 유형을 설정합니다. 전체 개요는 GitHub Actions
runs-on문서를 참조하세요. (예:runs-on: ubuntu-latest) -
PR 브랜치의 소스 코드를 체크아웃합니다. (예:
uses: actions/checkout@v4) -
GitHub Action을 사용하여 Bencher CLI를 설치합니다. (예:
uses: bencherdev/bencher@main) -
PR 브랜치 벤치마크를 실행하기 위해
bencher runCLI 서브커맨드를 사용합니다. 전체 개요는bencher runCLI 서브커맨드를 참조하세요. (예:bencher run) -
--project옵션을 프로젝트 슬러그로 설정합니다. 더 많은 세부 사항은--project문서를 참조하세요. (예:--project project-abc4567-wxyz123456789) -
--token옵션을BENCHER_API_TOKEN레포지토리 시크릿으로 설정합니다. 더 많은 세부 사항은--token문서를 참조하세요. (예:--token '${{ secrets.BENCHER_API_TOKEN }}') -
GitHub Actions
GITHUB_HEAD_REF기본 환경 변수를 사용하여 PR 브랜치 이름을--branch옵션으로 설정합니다. 전체 개요는--branch문서를 참조하세요. (예:--branch "$GITHUB_HEAD_REF") -
PR 브랜치의 시작점을 설정합니다:
- GitHub Actions
GITHUB_BASE_REF기본 환경 변수을 사용하여 PR 브랜치 시작점으로--start-point옵션을 설정합니다. 전체 개요는--start-point문서를 참조하세요. (예:--start-point "$GITHUB_BASE_REF") - PR 브랜치 시작점
git해시값을 사용하여--start-point-hash옵션을 설정합니다. GitHub Actionspull_request이벤트를 사용하여. 전체 개요는--start-point-hash문서를 참조하세요. (예:--start-point-hash '${{ github.event.pull_request.base.sha }}') - 시작점에서 임계값을 복제하도록
--start-point-clone-thresholds플래그를 설정합니다. 전체 개요는--start-point-clone-thresholds문서를 참조하세요. (예:--start-point-clone-thresholds) - 항상 PR 브랜치를 시작점으로 재설정하도록
--start-point-reset플래그를 설정합니다. 이는 벤치마크 데이터 드리프트를 방지합니다. 전체 개요는--start-point-reset문서를 참조하세요. (예:--start-point-reset)
- GitHub Actions
-
--testbed옵션을 테스트베드 이름으로 설정합니다. 이는runs-on에서 선택한 머신과 일치해야 합니다. 더 많은 세부 사항은--testbed문서를 참조하세요. (예:--testbed ubuntu-latest) -
알림이 생성되면 명령어를 실패시키도록
--err플래그를 설정합니다. 전체 개요는--err문서를 참조하세요. (예:--err) -
bencher mock에 의해 생성된 Bencher Metric Format JSON (json)에--adapter옵션을 설정합니다. 전체 개요는 벤치마크 하네스 어댑터를 참조하세요. (예:--adapter json) -
GitHub Actions
GITHUB_TOKEN환경 변수을 사용하여 결과를 Pull Request에 댓글로 게시하는 GitHub API 인증 토큰에--github-actions옵션을 설정합니다. 더 많은 세부 사항은--github-actions문서를 참조하세요. (예:--github-actions '${{ secrets.GITHUB_TOKEN }}') -
벤치마크 명령어 인수를 지정합니다. 전체 개요는 벤치마크 명령어를 참조하세요. (예:
bencher mock)
PR이 닫힌 후 PR 브랜치를 정리하려면 closed 타입의 pull_request 이벤트에서 실행할 별도의 워크플로를 생성할 수 있습니다. 이 워크플로는 bencher archive 명령을 사용하여 PR 브랜치를 아카이브합니다.
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 project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$GITHUB_HEAD_REF"-
GitHub Actions
workflow파일을 생성합니다. (예:.github/workflows/pr_benchmarks_closed.yml) -
pull_request이벤트에서 실행하십시오:closed- 풀 리퀘스트가 닫혔습니다.
전체 개요는 GitHub Actions
on문서 및 GitHub Actionspull_request문서를 참조하십시오. (예:on: pull_request: types: [closed]) -
GitHub Actions
job을 생성하십시오. (예:jobs: archive_pr_branch) -
풀 리퀘스트가 동일한 저장소에서 온 경우에만
pull_request이벤트에서 실행하십시오. ⚠️ 이 줄을 제거하지 마십시오! 포크 PR 처리에 대해서는 아래 포크로부터 풀 리퀘스트를 참조하십시오. (예:if: github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) -
잡을 실행할 머신의 유형을 설정하십시오. 전체 개요는 GitHub Actions
runs-on문서를 참조하십시오. (예:runs-on: ubuntu-latest) -
PR 브랜치 소스 코드를 체크아웃합니다. (예:
uses: actions/checkout@v4) -
GitHub Action을 사용하여 Bencher CLI를 설치합니다. (예:
uses: bencherdev/bencher@main) -
PR 브랜치를 아카이브하기 위해
bencher archiveCLI 서브커맨드를 사용하십시오. (예:bencher archive) -
프로젝트 슬러그로
--project옵션을 설정하십시오. 자세한 내용은--project문서를 참조하십시오. (예:--project project-abc4567-wxyz123456789) -
--token옵션을BENCHER_API_TOKEN저장소 시크릿으로 설정하십시오. 자세한 내용은--token문서를 참조하십시오. (예:--token '${{ secrets.BENCHER_API_TOKEN }}') -
GitHub Actions
GITHUB_HEAD_REF기본 환경 변수를 사용하여 PR 브랜치 이름으로--branch옵션을 설정하십시오. (예:--branch "$GITHUB_HEAD_REF")
포크로부터의 풀 리퀘스트
공개 오픈 소스 프로젝트에서 일반적으로 발생하는 것처럼 포크로부터의 풀 리퀘스트를 수락할 계획이라면
조금 다르게 처리해야 합니다.
보안상의 이유로, 포크 PR에서는 BENCHER_API_TOKEN과 GITHUB_TOKEN과 같은 비밀이 GitHub Actions에서 사용할 수 없습니다.
즉, 외부 기여자가 포크로부터 PR을 열면 위의 예제는 작동하지 않습니다.
전체 개요를 보려면 GitHub Security Lab 글 작성
및 블로그 게시물
을 참조하십시오.
포크 풀 리퀘스트에 지속적인 벤치마킹을 추가하는 안전하고 권장되는 방법입니다.
두 개의 별도 워크플로우가 필요합니다.
첫 번째 워크플로우는 pull_request 컨텍스트에서 벤치마크 결과를 실행하고 캐시합니다.
여기에는 BENCHER_API_TOKEN과 GITHUB_TOKEN 같은 비밀은 사용할 수 없습니다.
그런 다음 두 번째 워크플로우는 workflow_run 컨텍스트에서 캐시된 벤치마크 결과를 다운로드하여 Bencher에 업로드합니다.
이 방법은 workflow_run이 저장소의 기본 브랜치 컨텍스트에서 실행되기 때문에
BENCHER_API_TOKEN과 GITHUB_TOKEN 같은 비밀이 사용 가능하기 때문입니다.
초기의 pull_request 워크플로우에서 사용된 풀 리퀘스트 번호, 헤드 브랜치, 그리고 베이스 브랜치도
명시적으로 workflow_run 워크플로우에 전달되어야 합니다.
이 워크플로우는 기본 브랜치에 있을 때만 실행됩니다.
전체 개요는 트리거링 워크플로우에서 데이터 사용하기를 참조하십시오.
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 }}-
첫 번째 GitHub Actions
workflow파일을 생성합니다. (예:.github/workflows/fork_pr_benchmarks_run.yml) -
두 번째 워크플로에서 참조할 수 있도록 이 워크플로의 이름을 지정합니다. (예:
name: Run Benchmarks) -
pull_request이벤트에 대해 실행합니다:opened- 풀 리퀘스트가 생성되었습니다.reopened- 이전에 닫힌 풀 리퀘스트가 다시 열렸습니다.edited- 풀 리퀘스트의 제목 또는 본문이 편집되었거나, 풀 리퀘스트의 기본 분기가 변경되었습니다.synchronize- 풀 리퀘스트의 헤드 분기가 업데이트되었습니다. 예를 들어, 기본 분기로부터 헤드 분기가 업데이트되거나 새로운 커밋이 헤드 분기로 푸시되었습니다.
전체 개요는 GitHub Actions
on문서 및 GitHub Actionspull_request문서를 참조하세요. (예:on: pull_request: types: [opened, reopened, edited, synchronize]) -
GitHub Actions
job을 생성합니다. (예:jobs: benchmark_fork_pr_branch) -
잡을 실행할 머신의 유형을 설정합니다. 전체 개요는 GitHub Actions
runs-on문서 를 참조하세요. (예:runs-on: ubuntu-latest) -
포크 PR 브랜치의 소스 코드를 체크아웃합니다. (예:
uses: actions/checkout@v4) -
벤치마크를 실행하고 결과를 파일에 저장합니다. (예:
/bin/echo '{ ... }' > benchmark_results.json) -
벤치마크 결과 파일을 아티팩트로 업로드합니다. (예:
uses: actions/upload-artifact@v4) -
pull_request이벤트 객체를 아티팩트로 업로드합니다. (예:uses: actions/upload-artifact@v4)
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' permissions: pull-requests: write 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_HEAD_SHA", prEvent.pull_request.head.sha); 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 project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$PR_HEAD" \ --hash "$PR_HEAD_SHA" \ --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"- 첫 번째 GitHub Actions
workflow파일을 생성합니다. (예:.github/workflows/fork_pr_benchmarks_track.yml) - 이 워크플로우의 이름을 두 번째 워크플로우로 지정합니다.
(예:
name: Track Benchmarks with Bencher) - 두 워크플로우를
workflow_run이벤트와 연결합니다. (예:on: workflow_run: ...) - GitHub Actions
job을 만듭니다. (예:jobs: track_fork_pr_branch) - 이전 워크플로우의 결론이 성공일 경우에만 이 작업을 실행합니다
GitHub Actions
workflow_run이벤트. (예:if: github.event.workflow_run.conclusion == 'success') GITHUB_TOKEN에 대한 권한을pull-requests에 대해write로 설정합니다. GitHub 설정에 따라, 이 작업이 필요하지 않을 수 있습니다. 하지만 2023년 2월 2일 이후에 생성된 모든 조직과 개인 저장소에서는 이 동작이 기본입니다. 전체 개요는 GitHub 문서를 참조하세요. (예:permissions: pull-requests: write)- 작업이 실행될 머신 유형을 설정합니다.
전체 개요는 GitHub Actions
runs-ondocumentation을 참조하세요. (예:runs-on: ubuntu-latest) - 벤치마크 결과와
pull_request이벤트 객체 파일 이름을 환경 변수로 설정합니다. (예:env: ...) - 캐시된 벤치마크 결과와
pull_request이벤트를 다운로드합니다 GitHub Actionaction-download-artifact를 사용하여. (예:uses: dawidd6/action-download-artifact@v6) pull_request이벤트에서 필요한 데이터를 중간 환경 변수로 내보냅니다. (예:core.exportVariable(...))- GitHub Action을 사용하여 Bencher CLI를 설치합니다.
(예:
uses: bencherdev/bencher@main) bencher runCLI 하위 명령을 사용하여 포크 풀 브랜치의 벤치마크를 추적합니다.bencher runCLI 하위 명령의 전체 개요를 참조하세요. (예:bencher run)--project옵션을 프로젝트 슬러그로 설정합니다. 더 자세한 내용은--project문서를 참조하세요. (예:--project project-abc4567-wxyz123456789)--token옵션을BENCHER_API_TOKENRepository 시크릿으로 설정합니다. 더 자세한 내용은--token문서를 참조하세요. (예:--token '${{ secrets.BENCHER_API_TOKEN }}')--branch옵션을 포크 PR 브랜치 이름으로 설정합니다 중간 환경 변수를 사용하여. 전체 개요는--branch문서를 참조하세요. (예:--branch "$PR_HEAD")--hash옵션을 포크 PR 브랜치의git해시로 설정합니다 중간 환경 변수를 사용하여. 전체 개요는--hash문서를 참조하세요. (예:--hash "$PR_HEAD_SHA")- 포크 PR 브랜치의 시작점을 설정합니다:
--start-point옵션을 포크 PR 브랜치 시작점으로 설정합니다 중간 환경 변수를 사용하여. 전체 개요는--start-point문서를 참조하세요. (예:--start-point "$PR_BASE")--start-point-hash옵션을 포크 PR 브랜치 시작점의git해시로 설정합니다 중간 환경 변수를 사용하여. 전체 개요는--start-point-hash문서를 참조하세요. (예:--start-point-hash "$PR_BASE_SHA")--start-point-clone-thresholds플래그를 설정하여 시작점에서 임계값을 복제합니다. 전체 개요는--start-point-clone-thresholds문서를 참조하세요. (예:--start-point-clone-thresholds)- 포크 PR 브랜치를 항상 시작점으로 재설정하기 위해
--start-point-reset플래그를 설정합니다. 이는 벤치마크 데이터 드리프트를 방지합니다. 전체 개요는--start-point-reset문서를 참조하세요. (예:--start-point-reset)
--testbed옵션을 테스트베드 이름으로 설정합니다. 이는runs-on에서 선택한 머신과 일치해야 합니다. 더 자세한 내용은--tested문서를 참조하세요. (예:--testbed ubuntu-latest)- 경고가 생성되면 명령을 실패 처리하는
--err플래그를 설정합니다. 전체 개요는--err문서를 참조하세요. (예:--err) bencher mock에 의해 생성된 Bencher Metric Format JSON (json)으로--adapter옵션을 설정합니다. 전체 개요는 benchmark harness adapters를 참조하세요. (예:--adapter json)- GitHub API 인증 토큰을 사용하여 Pull Request에 결과를 주석으로 게시하기 위해
--github-actions옵션을 설정합니다 GitHub ActionsGITHUB_TOKEN환경 변수를 사용하여. 더 자세한 내용은--github-actions문서를 참조하세요. (예:--github-actions '${{ secrets.GITHUB_TOKEN }}') --ci-number옵션을 중간 환경 변수를 사용하여 풀 리퀘스트 번호로 설정합니다. 더 자세한 내용은--ci-number문서를 참조하세요. (예:--ci-number "$PR_NUMBER")--file옵션을 벤치마크 결과 파일 경로로 설정합니다. 전체 개요는 benchmark command를 참조하세요. (예:--file "$BENCHMARK_RESULTS")
포크 PR 브랜치를 PR이 종료된 후 정리하려면,
pull_request_target 이벤트 중 closed 타입으로 실행되는 별도의 워크플로를 생성할 수 있습니다.
이 워크플로는 bencher archive 명령어를 사용하여 포크 PR 브랜치를 아카이브합니다.
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 project-abc4567-wxyz123456789 \ --token '${{ secrets.BENCHER_API_TOKEN }}' \ --branch "$GITHUB_HEAD_REF"-
GitHub Actions
workflow파일을 생성합니다. (예:.github/workflows/fork_pr_benchmarks_closed.yml) -
pull_request_target이벤트에서 실행하십시오:closed- 풀 리퀘스트가 종료되었습니다.
전체 개요는 GitHub Actions
on문서 및 GitHub Actionspull_request_target문서를 참조하십시오. (예:on: pull_request_target: types: [closed]) -
GitHub Actions
job을 생성합니다. (예:jobs: archive_pr_branch) -
작업이 실행될 머신 유형을 설정하십시오. 전체 개요는 GitHub Actions
runs-on문서를 참조하십시오. (예:runs-on: ubuntu-latest) -
PR 브랜치 소스 코드를 체크아웃합니다. (예:
uses: actions/checkout@v4) -
GitHub Action을 사용하여 Bencher CLI를 설치합니다. (예:
uses: bencherdev/bencher@main) -
PR 브랜치를 아카이브하기 위해
bencher archiveCLI 서브커맨드를 사용합니다. (예:bencher archive) -
--project옵션을 프로젝트 슬러그로 설정합니다. 자세한 사항은--project문서를 참조하십시오. (예:--project project-abc4567-wxyz123456789) -
--token옵션을BENCHER_API_TOKEN저장소 시크릿으로 설정합니다. 자세한 사항은--token문서를 참조하십시오. (예:--token '${{ secrets.BENCHER_API_TOKEN }}') -
GitHub Actions
GITHUB_HEAD_REF기본 환경 변수를 사용하여 PR 브랜치 이름을--branch옵션으로 설정합니다. (예:--branch "$GITHUB_HEAD_REF")
🐰 축하합니다! GitHub Actions에서 Bencher를 사용하는 방법을 배웠습니다! 🎉