bencher run을 사용한 베어 메탈 이미지
베어 메탈 Runner는 OCI 이미지 형식으로 패키징된 벤치마크를 실행합니다.
bencher run CLI 서브커맨드를 사용할 때,
--image 옵션으로 Image를 선택하면 원격 베어 메탈 실행을 활성화할 수 있습니다.
지속적 벤치마킹, 즉 CI에서 벤치마킹할 때, 베어 메탈 Runner를 사용하면 벤치마크 결과의 노이즈를 크게 줄일 수 있습니다. 더 나아가, Bencher Bare Metal은 완전히 동일한 베어 메탈 Runner를 사용하여 CI 외부에서도 실행할 수 있습니다. 이를 통해 개발자와 에이전트는 전체 CI 워크플로우를 거치지 않고도 자신의 코드 변경 사항에 대한 성능을 확인할 수 있습니다. 전체 개요는 베어 메탈 워크플로우를 참조하세요.
--image <IMAGE>
원격 베어 메탈 Runner 실행을 위한 OCI 이미지 참조를 설정합니다
(예: my-image:tag, registry.bencher.dev/my-image:tag,
또는 Bencher Self-Hosted 인스턴스의 경우 localhost:6610/my-image:tag).
Bencher API 서버의 OCI 레지스트리만 지원됩니다.
--image가 설정되면, 벤치마크 명령은 로컬 대신 원격 베어 메탈 Runner에서 실행됩니다.
--entrypoint <ENTRYPOINT>
벤치마크 명령을 실행하기 위한 컨테이너 엔트리포인트를 재정의합니다.
이 옵션은 --image 옵션이 설정되어 있어야 합니다.
--env <KEY=VALUE>
환경 변수를 KEY=VALUE 형식으로 설정합니다.
여러 번 지정할 수 있습니다.
이 옵션은 --image 옵션이 설정되어 있어야 합니다.
--job-timeout <SECONDS>
Job의 최대 실행 시간을 초 단위로 설정합니다.
자세한 내용은 Job 문서를 참조하세요.
이 옵션은 --image 옵션 또는 --job 옵션이 설정되어 있어야 합니다.
--job-poll-interval <SECONDS>
베어 메탈 Job 완료를 기다릴 때의 폴링 간격을 초 단위로 설정합니다.
이 옵션은 --image 옵션 또는 --job 옵션이 설정되어 있어야 합니다.
이 옵션은 --detach 옵션과 충돌합니다.
--detach
베어 메탈 Job을 제출한 후 완료를 기다리지 않고 분리합니다.
이 옵션은 --image 옵션이 설정되어 있어야 합니다.
이 옵션은 --job-poll-interval 옵션과 충돌합니다.
--job <UUID>
선택 사항: 베어 메탈 Job에 연결합니다.
대부분의 경우 이 옵션은 별도의 bencher run 호출에서
이미 --detach 플래그를 사용했을 때 사용합니다.
그 밖의 여러 bencher run 옵션도 그대로 이어받아, 분리한 적이 없는 것처럼 작동합니다.
이를 통해 베어 메탈 Job을 콜백
(bencher run 호출별 웹훅)을 사용하여 비동기적으로 기다릴 수 있습니다.
GitHub Actions를 사용하는 예시는 베어 메탈에서의 Pull Requests를 참조하세요.
--callback-url <URL>
선택 사항: 분리된 베어 메탈 Job의 콜백 URL을 지정합니다.
URL은 https를 사용해야 합니다.
이 프로젝트가 속한 조직에는 활성화된 Bencher Plus 플랜이 있어야 합니다.
요청 헤더를 지정하려면 --callback-header 옵션을 사용하세요.
요청 본문을 지정하려면 --callback-body 옵션을 사용하세요.
그렇지 않으면 bencher run API 엔드포인트의 응답 본문이 기본으로 사용됩니다.
이 옵션은 --image 옵션과 --detach 플래그가 설정되어 있어야 합니다.
이 옵션은 --github-actions 옵션과 충돌합니다.
--callback-header <NAME: VALUE>
선택 사항: NAME: VALUE 형식으로 콜백 요청에 헤더를 추가합니다.
헤더 NAME의 최대 크기는 256바이트이고, 헤더 VALUE의 최대 크기는 8 KiB입니다.
이 옵션은 여러 번 지정할 수 있습니다(최대 16회).
다음 헤더는 지원되지 않습니다:
ConnectionContent-LengthHostKeep-AliveProxy-ConnectionTETrailerTransfer-EncodingUpgrade
이 옵션은 --callback-url 옵션이 설정되어 있어야 합니다.
--callback-body <JSON>
선택 사항: 콜백 요청의 JSON 본문을 설정합니다. 이 JSON 값은 문자열 안에서 다음 템플릿 변수를 사용할 수 있습니다:
| 변수 | 확장 형식 | 값 |
|---|---|---|
{{ project.uuid }} |
문자열 | 프로젝트 UUID |
{{ project.name }} |
문자열 | 프로젝트 이름 |
{{ project.slug }} |
문자열 | 프로젝트 슬러그 |
{{ report }} |
객체 | 보고서 (최대 1회) |
{{ report.uuid }} |
문자열 | 보고서 UUID |
{{ job.uuid }} |
문자열 | Job UUID |
{{ job.status }} |
문자열 | Job 종료 상태: processed, failed 또는 canceled |
이 JSON 값 템플릿의 최대 크기는 64 KiB입니다. 템플릿 확장은 단일 패스로 이루어지며, 알 수 없는 템플릿 변수가 있으면 확장이 실패합니다.
이 옵션은 --callback-url 옵션이 설정되어 있어야 합니다.
--callback-body 옵션을 지정하지 않으면 bencher run API 엔드포인트의
응답 본문("{{ report }}")이 기본으로 사용됩니다.
예를 들어, Slack 수신 웹훅에 메시지를 게시하려면:
bencher run \ --project project-abc4567-wxyz123456789 \ --image project-abc4567-wxyz123456789:latest \ --detach \ --callback-url "$SLACK_WEBHOOK_URL" \ --callback-body '{"text": "{{ project.name }}: Bencher Job {{ job.status }}", "blocks": [{"type": "section", "text": {"type": "mrkdwn", "text": "*{{ project.name }}*: Bencher Job {{ job.status }}\n<https://bencher.dev/console/projects/{{ project.slug }}/reports/{{ report.uuid }}|View the report>"}}]}' \ bencher mock🐰 축하합니다! 베어 메탈 이미지에 대해 모두 배웠습니다! 🎉