Как использовать Bencher в GitHub Actions


В зависимости от вашего случая использования, вы можете настроить Непрерывное бенчмаркинг в GitHub Actions для вашего:

🐰 Убедитесь, что вы создали токен API и установили его как секрет Репозитория под названием BENCHER_API_TOKEN перед тем как продолжить! Перейти к Ваш Репозиторий -> Настройки -> Секреты и переменные -> Действия -> Новый секрет репозитория. Назовите секрет BENCHER_API_TOKEN и установите значение секрета вашим токеном API.

Основная ветка

Краеугольным камнем Статистического Непрерывного Бенчмаркинга является наличие исторической базы для вашей основной ветки. Эта историческая база может быть использована для обнаружения регрессий производительности в запросах на слияние (Pull Requests).

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. Создайте файл workflow для GitHub Actions. (например, .github/workflows/base_benchmarks.yml)
  2. Запустите на событиях push в ветку main. Смотрите документацию on GitHub Actions и документацию push GitHub Actions для полного обзора. (например: on: push: branches: main)
  3. Создайте job для GitHub Actions. (например: jobs: benchmark_base_branch)
  4. Установите тип машины, на которой будет выполняться задание. Смотрите документацию runs-on GitHub Actions для полного обзора. (например: runs-on: ubuntu-latest)
  5. Выполните checkout исходного кода вашей основной ветки. (например: uses: actions/checkout@v4)
  6. Установите Bencher CLI, используя действие GitHub. (например: uses: bencherdev/bencher@main)
  7. Используйте подкоманду CLI bencher run для запуска бенчмарков вашей ветки main. Смотрите подкоманду CLI bencher run для полного обзора. (например: bencher run)
  8. Установите опцию --project в слаг проекта. Смотрите документацию --project для более подробной информации. (например: --project save-walter-white-1234abcd)
  9. Установите опцию --token в секрет Репозитория BENCHER_API_TOKEN. Смотрите документацию --token для более подробной информации. (например: --token '${{ secrets.BENCHER_API_TOKEN }}')
  10. Установите опцию --branch в имя ветки. Смотрите выбор ветки для полного обзора. (например: --branch main)
  11. Установите опцию --testbed в имя тестовой среды. Это должно, вероятно, совпадать с машиной, выбранной в runs-on. Смотрите документацию --testbed для более подробной информации. (например: --testbed ubuntu-latest)
  12. Установите опцию --adapter в желаемый адаптер инструмента для бенчмаркинга. Смотрите адаптеры инструментов для бенчмаркинга для полного обзора. (например: --adapter json)
  13. Установите флаг --err, чтобы команда завершалась с ошибкой, если сгенерировано предупреждение. Смотрите Пороги и Предупреждения для полного обзора. (например: --err)
  14. Укажите аргументы команды бенчмарка. Смотрите команду бенчмарка для полного обзора. (например: bencher mock)

Пулл Реквесты

Чтобы отслеживать регрессию производительности в пулл реквестах, вам нужно будет запускать ваши бенчмарки на PR’ах. Если вы ожидаете пулл реквесты только из веток того же репозитория, то вы можете просто создать еще один workflow для запуска на событиях pull_request из того же репозитория.

⚠️ Это решение работает, только если все PR’ы из того же репозитория! Смотрите Пулл Реквесты из Форков ниже.

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 }}' \
--testbed ubuntu-latest \
--adapter json \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
bencher mock
  1. Создайте файл workflow для GitHub Actions. (например: .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. Создайте job для GitHub Actions. (например: 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 на write для pull-requests. В зависимости от настроек вашего GitHub, это может быть не требуется. Но для всех организаций и личных репозиториев созданных после 02 февраля 2023, это поведение по умолчанию. Смотрите документацию GitHub для полного описания. (например: permissions: pull-requests: write)

  6. Укажите тип машины, на которой будет работать задача. Смотрите документацию GitHub Actions runs-on для полного овервью. (например: runs-on: ubuntu-latest)

  7. Проверьте исходный код ветки PR. (например: uses: actions/checkout@v4)

  8. Установите Bencher CLI с использованием GitHub Action. (например: uses: bencherdev/bencher@main)

  9. Используйте подкоманду CLI bencher run для запуска бенчмарков вашей ветки pull request. Смотрите подкоманду bencher run CLI для полного описания. (например: bencher run)

  10. Укажите опцию --project для Slug проекта. Смотрите документацию --project для дополнительных деталей. (например: --project save-walter-white-1234abcd)

  11. Укажите опцию --token для секрета репозитория BENCHER_API_TOKEN. Смотрите документацию --token для дополнительных деталей. (например: --token '${{ secrets.BENCHER_API_TOKEN }}')

  12. Укажите опцию --branch для имени ветки PR с использованием контекста GitHub Actions github. Смотрите выбор ветки для полного описания. (например: --branch '${{ github.head_ref }}')

  13. Укажите опцию --branch-start-point для стартовой точки базовой ветки PR с использованием контекста GitHub Actions github. Смотрите выбор стартовой точки ветки для полного описания. (например: --branch-start-point '${{ github.base_ref }}')

  14. Укажите опцию --branch-start-point-hash для хэша стартовой точки базовой ветки PR с использованием события GitHub Actions pull_request. Смотрите выбор хэша стартовой точки ветки для полного описания. (например: --branch-start-point-hash '${{ github.event.pull_request.base.sha }}')

  15. Укажите опцию --testbed для имени тестовой среды. Это должно, вероятно, соответствовать машине, выбранной в runs-on. Смотрите документацию --testbed для дополнительных деталей. (например: --testbed ubuntu-latest)

  16. Укажите опцию --adapter для желаемого адаптера бенчмарк харнесса. Смотрите адаптеры бенчмарк харнесса для полного описания. (например: --adapter json)

  17. Укажите флаг --err для завершения команды с ошибкой, если сгенерировано предупреждение. Смотрите Пороги & Предупреждения для полного описания. (например: --err)

  18. Укажите опцию --github-actions для токена аутентификации API GitHub для публикации результатов в виде комментария к пулл реквесту с использованием переменной окружения GitHub Actions GITHUB_TOKEN. Смотрите документацию --github-actions для дополнительных деталей. (например: --github-actions '${{ secrets.GITHUB_TOKEN }}')

  19. Укажите аргументы команды бенчмарка. Смотрите команду бенчмарка для полного описания. (например: bencher mock)


Pull Request’ы из форков

Если вы планируете принимать pull request’ы из форков, как это часто бывает в публичных проектах с открытым исходным кодом, вам потребуется немного иначе подходить к вопросу. Из соображений безопасности, такие секреты, как ваш BENCHER_API_TOKEN и GITHUB_TOKEN, недоступны в GitHub Actions для pull request’ов из форков. То есть, если внешний участник создает pull request из форка, приведенный выше пример не сработает. Есть два варианта для pull request’ов из форков:

Смотрите этот анализ GitHub Security Lab и этот блог пост для получения полного обзора по предотвращению pwn запросов.

Бенчмарк форкнутых PR и загрузка из базовой ветки

Это безопасный и рекомендуемый способ добавления Непрерывного бенчмаркинга к форкнутым pull request’ам. Требуется два отдельных потока работы (workflow). Первый поток работы запускается и кэширует результаты бенчмарка в контексте pull_request. Здесь недоступны секреты, такие как ваш BENCHER_API_TOKEN и GITHUB_TOKEN. Затем второй поток работы загружает кэшированные результаты бенчмарка в контексте workflow_run и загружает их в Bencher. Это работает, потому что workflow_run выполняется в контексте базовой ветки репозитория, где доступны секреты, такие как ваш BENCHER_API_TOKEN и GITHUB_TOKEN. Номер pull request’а, ветка исходной точки и базовая ветка, использованные в исходном потоке работы 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. (например: .github/workflows/run_fork_pr_benchmarks.yml)

  2. Назовите этот поток работы, чтобы его можно было ссылать из второго потока. (например: name: Run and Cache Benchmarks)

  3. Запускайте на событиях 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])

  4. Создайте задание (job) GitHub Actions. (например: jobs: benchmark_fork_pr_branch)

  5. Укажите тип машины, на которой будет выполняться задание. Смотрите документацию GitHub Actions runs-on для полного обзора. (например: runs-on: ubuntu-latest)

  6. Выполните checkout исходного кода ветки 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 }}' \
--testbed ubuntu-latest \
--adapter json \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
--ci-number '${{ env.PR_NUMBER }}' \
--file "$BENCHMARK_RESULTS"
  1. Создайте второй файл потока работы GitHub Actions. (например: .github/workflows/track_fork_pr_benchmarks.yml)
  2. Назовите этот поток вторым потоком работы. (например: name: Track Benchmarks with Bencher)
  3. Свяжите два потока работы событием the workflow_run event. (например: on: workflow_run: ...)
  4. Создайте задание (job) GitHub Actions. (например: 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. Установите CLI Bencher, используя GitHub Action. (например: uses: bencherdev/bencher@main)
  12. Используйте подкоманду CLI bencher run для отслеживания бенчмарков веток с форком pull request. Смотрите подкоманда CLI bencher run для полного обзора. (например: bencher run)
  13. Установите параметр --project для идентификатора проекта. Смотрите документацию --project для дополнительных сведений. (например: --project save-walter-white-1234abcd)
  14. Установите параметр --token для секрета репозитория BENCHER_API_TOKEN. Смотрите документацию --token]token option для дополнительных сведений. (например: --token '${{ secrets.BENCHER_API_TOKEN }}')
  15. Установите параметр --branch для форматированного номера PR форка, используя событие GitHub Actions pull_request. Смотрите выбор ветки для полного обзора. (например: --branch '${{ env.PR_HEAD }}')
  16. Установите параметр --branch-start-point для точки начала базовой ветки форка PR, используя событие GitHub Actions pull_request. Смотрите выбор ветки для полного обзора. (например: --branch-start-point '${{ env.PR_BASE }}')
  17. Установите параметр --branch-start-point-hash для хэша точки начала базовой ветки форка PR, используя событие GitHub Actions pull_request. Смотрите выбор ветки для полного обзора. (например: --branch-start-point-hash '${{ env.PR_BASE_SHA }}')
  18. Установите параметр --testbed для названия тестовой среды. Это, вероятно, должно совпадать с машиной, выбранной в runs-on. Смотрите документацию --testbed для дополнительных сведений. (например: --testbed ubuntu-latest)
  19. Установите параметр --adapter для желаемого адаптера бенчмаркинга. Смотрите адаптеры бенчмаркинга для полного обзора. (например: --adapter json)
  20. Установите флаг --err, чтобы команда завершилась с ошибкой, если сгенерировано предупреждение. Смотрите Пороги и предупреждения для полного обзора. (например: --err)
  21. Установите параметр --github-actions для аутентификационного токена API GitHub для публикации результатов в качестве комментария к Pull Request, используя переменную окружения GitHub Actions GITHUB_TOKEN. Смотрите документацию --github-actions для дополнительных сведений. (например: --github-actions '${{ secrets.GITHUB_TOKEN }}')
  22. Установите параметр --ci-number для номера pull request’а. Смотрите документацию --ci-id для дополнительных сведений. (например: --ci-number '${{ env.PR_NUMBER }}')
  23. Установите параметр --file для пути к файлу с результатами бенчмарков. Смотрите команду benchmark для полного обзора. (например: --file "$BENCHMARK_RESULTS")

Сравнение PR из вилки с целевой веткой с обязательными проверяющими

Для гарантии безопасности кода из pull request вилки, это действие GitHub проверяет, что вилка из другого репозитория. Если вилка из другого репозитория, тогда ее необходимо проверить.

⚠️ Это очень, очень важно тщательно проверять каждый PR из вилки перед его одобрением! В противном случае можно получить pwn запрос!

Если вы предпочитаете, чтобы это не висело над вами, смотрите [Сравнение PR из вилки и загрузку с ветки по умолчанию][benchmark fork pr and upload from default branch] выше.

Для настройки этого рабочего процесса вам нужно создать два [Среды действий GitHub][github actions environments]. Перейдите к Ваш репозиторий -> Настройки -> Среды -> Создать среду. Создайте две новые среды, internal и external. Среда internal не должна иметь Правил защиты развертывания. Однако, среда external должна иметь установленных Обязательных проверяющих для проверки PR из вилок перед сравнением. Смотрите [этот блог][iterative.ai blog] для полного обзора.

Эта настройка работает потому что pull_request_target выполняется в контексте целевой ветки pull request, где такие секреты, как BENCHER_API_TOKEN и GITHUB_TOKEN доступны. Таким образом, этот рабочий процесс будет выполняться только если он существует в целевой ветке. Избегайте установки любых секретов как переменные среды, такие как GITHUB_TOKEN и BENCHER_API_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 }}' \
--testbed ubuntu-latest \
--adapter json \
--err \
--github-actions '${{ secrets.GITHUB_TOKEN }}' \
bencher mock
  1. Создайте файл workflow действий GitHub. (например: .github/workflows/pr_target_benchmarks.yml)

  2. Запускать на событиях pull_request:

    • opened - Был создан pull request.
    • reopened - Ранее закрытый pull request был снова открыт.
    • edited - Заголовок или тело pull request были изменены, или базовая ветка pull request была изменена.
    • synchronize - Ветка головы pull request была обновлена. Например, ветка головы была обновлена от базовой ветки или в ветку головы были запушены новые коммиты.

    Смотрите [документацию on действий GitHub][github actions on] и [документацию действий GitHub pull_request][github action pull_request] для полного обзора. (например: on: pull_request: types: [opened, reopened, edited, synchronize])

  3. Создайте первую задачу действий GitHub для проверки необходимости рассмотрения рабочего процесса. (например: jobs: fork_pr_requires_review)

  4. Установите environment в internal если и только если pull request из того же репозитория. В противном случае установите environment в external, что потребует одобрения от проверяющего для продолжения. ⚠️ НЕ УДАЛЯЙТЕ ЭТУ СТРОКУ! (например: environment: ${{ (github.event.pull_request.head.repo.full_name == github.repository && 'internal') || 'external' }})

  5. Создайте вторую задачу действий GitHub для запуска ваших сравнений. (например: benchmark_fork_pr_branch)

  6. Укажите, что задача benchmark_fork_pr_branch требует выполнения задачи fork_pr_requires_review для запуска. ⚠️ НЕ УДАЛЯЙТЕ ЭТУ СТРОКУ! Смотрите [документацию needs действий GitHub][github actions needs] для полного обзора. (например: needs: fork_pr_requires_review)

  7. Укажите тип машины, на которой будет выполняться задача. Смотрите [документацию runs-on действий GitHub][github actions runs-on] для полного обзора. (например: runs-on: ubuntu-latest)

  8. Проверьте исходный код PR из вилки. Так как pull_request_target выполняется в контексте целевой ветки pull request, вам все еще нужно проверить ветку pull request. (например: 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. Установите CLI Bencher с использованием [действия GitHub][bencher cli github action]. (например: uses: bencherdev/bencher@main)

  10. Используйте подкоманду CLI bencher run для выполнения сравнений вашей ветки pull request из вилки. Смотрите [подкоманду bencher run CLI][bencher run] для полного обзора. (например: bencher run)

  11. Установите параметр --project на слаг проекта. Смотрите [документацию --project][project option] для дополнительных деталей. (например: --project save-walter-white-1234abcd)

  12. Установите параметр --token на секрет репозитория BENCHER_API_TOKEN. Смотрите [документацию --token][token option] для дополнительных деталей. (например: --token '${{ secrets.BENCHER_API_TOKEN }}')

  13. Установите параметр --branch на отформатированный номер PR из вилки с использованием [события действий GitHub pull_request][github action pull_request]. Смотрите [выбор ветки][branch selection branch] для полного обзора. (например: --branch '${{ github.event.number }}/merge')

  14. Установите параметр --branch-start-point на начальную точку базовой ветки PR из вилки с использованием [контекста github действий GitHub][github actions context]. Смотрите [выбор ветки][branch selection start point] для полного обзора. (например: --branch-start-point '${{ github.base_ref }}')

  15. Установите параметр --branch-start-point-hash на хэш начальной точки базовой ветки PR из вилки с использованием [события действий GitHub pull_request][github action pull_request]. Смотрите [выбор ветки][branch selection start point hash] для полного обзора. (например: --branch-start-point-hash '${{ github.event.pull_request.base.sha }}')

  16. Установите параметр --testbed на имя тестовой среды. Это, скорее всего, должно соответствовать машине, выбранной в runs-on. Смотрите [документацию --tested][testbed option] для дополнительных деталей. (например: --testbed ubuntu-latest)

  17. Установите параметр --adapter на желаемый адаптер среды тестирования. Смотрите [адаптеры среды тестирования][adapters] для полного обзора. (например: --adapter json)

  18. Установите флаг --err, чтобы команда завершилась с ошибкой, если генерируется предупреждение. Смотрите [Пороги & Предупреждения][alerts] для полного обзора. (например: --err)

  19. Установите параметр --github-actions на токен аутентификации API GitHub для публикации результатов в виде комментария к Pull Request с использованием [переменной среды GITHUB_TOKEN действий GitHub][github token]. Смотрите [документацию --github-actions][github actions option] для дополнительных деталей. (например: --github-actions '${{ secrets.GITHUB_TOKEN }}')

  20. Укажите аргументы команды сравнения. Смотрите [команду сравнения][command argument] для полного обзора. (например: bencher mock)



🐰 Поздравляем! Вы научились использовать Bencher в GitHub Actions! 🎉


Продолжить: Обзор бенчмаркинга ➡

🤖 Этот документ был автоматически создан OpenAI GPT-4. Оно может быть неточным и содержать ошибки. Если вы обнаружите какие-либо ошибки, откройте проблему на GitHub.


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