GitLab CI/CD에서 Bencher 사용하기
사용 사례에 따라 GitLab CI/CD에서 지속적인 벤치마킹을 설정할 수 있습니다:
계속하기 전에 API 토큰을 생성하고 이를 BENCHER_API_TOKEN
이라는 마스크된 변수로 설정해야 합니다! Your Repo -> Settings -> CI/CD -> Variables -> Expand -> Add variable
로 이동하세요. 변수 키는 BENCHER_API_TOKEN
이어야 하고, 변수 값은 귀하의 API 토큰이어야 합니다. Protect variable
및 Mask variable
상자 모두를 체크하세요.
타겟 브랜치
통계적 지속 벤치마킹의 핵심 요소는 타겟 브랜치에 대한 역사적인 기준선을 가지는 것입니다. 이 역사적인 기준선은 병합 요청에서 성능 퇴보를 감지하는 데 사용될 수 있습니다.
- GitLab CI/CD 파일을 생성합니다.
(예:
.gitlab-ci.yml
) - GitLab CI/CD 작업을 생성합니다.
(예:
benchmark_target_branch
) - 파이프라인이
main
브랜치로의push
에 의해 트리거된 경우에 실행하십시오. 전체 개요는 GitLab CI/CDrules
문서 및 GitLab CI/CD 사전 정의 변수 문서를 참조하십시오. (예:rules: if: ...
) - 작업이 실행될
image
를 설정합니다. 전체 개요는 GitLab CI/CDimage
문서를 참조하십시오. (예:image: debian:bullseye
) - 편리한 스크립트를 사용하여 Bencher CLI를 설치합니다.
(예:
before_script: ...
) bencher run
CLI 서브커맨드를 사용하여main
브랜치 벤치마크를 실행합니다. 전체 개요는bencher run
CLI 서브커맨드를 참조하십시오. (예:bencher run
)--project
옵션을 프로젝트 슬러그에 설정합니다. 자세한 내용은--project
문서를 참조하십시오. (예:--project save-walter-white-1234abcd
)--token
옵션을 마스킹된BENCHER_API_TOKEN
환경 변수에 설정합니다. 자세한 내용은--token
문서를 참조하십시오. (예:--token "$BENCHER_API_TOKEN"
)--branch
옵션을 브랜치 이름으로 설정합니다. 전체 개요는--branch
문서를 참조하십시오. (예:--branch main
)--testbed
옵션을 테스트베드 이름에 설정합니다. 이는image
에서 선택된 기계와 일치해야 합니다. 자세한 내용은--testbed
문서를 참조하십시오. (예:--testbed debian:bullseye
)main
브랜치,debian:bullseye
테스트베드, 및latency
측정을 위한 임계값 설정:--threshold-measure
옵션을bencher mock
에 의해 생성된 내장latency
측정 값으로 설정합니다. 자세한 내용은--threshold-measure
문서를 참조하십시오. (예:--threshold-measure latency
)--threshold-test
옵션을 Student’s 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
)이bencher mock
에 의해 생성된 것으로--adapter
옵션을 설정합니다. 전체 개요는 벤치마크 하네스 어댑터를 참조하십시오. (예:--adapter json
) - 벤치마크 명령 인수를 지정합니다.
전체 개요는 벤치마크 명령를 참조하십시오.
(예:
bencher mock
)
Merge Requests
Merge Requests에서 성능 회귀 문제를 잡기 위해서는, MRs에서 벤치마크를 실행해야 합니다. 아래 예제는 같은 저장소 내의 브랜치에만 사용해야 합니다.
- GitLab CI/CD 파일 업데이트.
(예:
.gitlab-ci.yml
) - GitLab CI/CD 작업 생성.
(예:
benchmark_mr_branch
) - 파이프라인이
merge_request_event
에 의해 트리거될 경우 실행. 전체 개요는 GitLab CI/CDrules
문서와 GitLab CI/CD 사전 정의 변수 문서를 참조하세요. (예:rules: if: ...
) - 작업이 실행될
image
설정. 전체 개요는 GitLab CI/CDimage
문서를 참조하세요. (예:image: debian:bullseye
) - 편리한 스크립트를 사용하여 Bencher CLI 설치.
(예:
before_script: ...
) bencher run
CLI 하위 명령어를 사용하여 병합 요청 브랜치 벤치마크를 실행합니다. 전체 개요는bencher run
CLI 하위 명령어를 참조하세요. (예:bencher run
)- 프로젝트 슬러그에
--project
옵션 설정. 자세한 내용은--project
문서를 참조하세요. (예:--project save-walter-white-1234abcd
) - 마스크된
BENCHER_API_TOKEN
환경 변수에--token
옵션 설정. 자세한 내용은--token
문서를 참조하세요. (예:--token "$BENCHER_API_TOKEN"
) - GitLab CI/CD 사전 정의 변수를 사용하여 MR 브랜치 이름에
--branch
옵션 설정. 전체 개요는--branch
문서를 참조하세요. (예:--branch "$CI_COMMIT_REF_NAME"
) - MR 브랜치의 시작 포인트 설정:
- GitLab CI/CD 사전 정의 변수를 사용하여 MR 브랜치 시작 포인트에
--start-point
옵션 설정. 전체 개요는--start-point
문서를 참조하세요. (예:--start-point "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
) - GitLab CI/CD 사전 정의 변수를 사용하여 MR 브랜치의 시작 포인트
git
해시에--start-point-hash
옵션 설정. 전체 개요는--start-point-hash
문서를 참조하세요. (예:--start-point-hash "$CI_MERGE_REQUEST_TARGET_BRANCH_SHA"
) - 시작 지점에서 임계값을 복사하도록
--start-point-clone-thresholds
플래그 설정. 전체 개요는--start-point-clone-thresholds
문서를 참조하세요. (예:--start-point-clone-thresholds
) - 항상 MR 브랜치를 시작 포인트로 재설정하도록
--start-point-reset
플래그 설정. 이는 벤치마크 데이터 드리프트를 방지합니다. 전체 개요는--start-point-reset
문서를 참조하세요. (예:--start-point-reset
)
- GitLab CI/CD 사전 정의 변수를 사용하여 MR 브랜치 시작 포인트에
- 테스트베드 이름에
--testbed
옵션 설정. 이는image
에서 선택한 머신과 일치해야 할 것입니다. 자세한 내용은--tested
문서를 참조하세요. (예:--testbed debian:bullseye
) - 경고가 생성될 경우 명령을 실패하게 하는
--err
플래그 설정. 전체 개요는--err
문서를 참조하세요. (예:--err
) bencher mock
이 생성한 Bencher Metric Format JSON (json
)에--adapter
옵션 설정. 전체 개요는 벤치마크 하네스 어댑터를 참조하세요. (예:--adapter json
)- 벤치마크 명령 인수 지정.
전체 개요는 벤치마크 명령을 참조하세요.
(예:
bencher mock
)
MR이 닫힌 후 MR 브랜치를 정리하려면,
GitLab API를 사용하여 MR 상태를 조회하는 별도의 작업을 생성할 수 있습니다.
상태가 closed
인 경우, 이 작업은 bencher archive
명령을 사용하여 MR 브랜치를 아카이브할 것입니다.
- GitLab CI/CD 파일을 업데이트합니다.
(예:
.gitlab-ci.yml
) - GitLab CI/CD 작업을 생성합니다.
(예:
archive_mr_branch
) - 파이프라인이
merge_request_event
에 의해 트리거될 때if
실행합니다. 전체 개요는 GitLab CI/CDrules
문서와 GitLab CI/CD 사전 정의된 변수 문서를 참조하세요. (예:rules: if: ...
) - 작업이 실행될
image
를 설정합니다. 전체 개요는 GitLab CI/CDimage
문서를 참조하세요. (예:image: debian:bullseye
) - 편리한 스크립트를 사용하여 Bencher CLI를 설치합니다.
(예:
before_script: curl ...
) - GitLab API를 사용하여 MR 상태를 확인합니다.
(예:
before_script: MR_STATE=$(...)
) - MR 상태가
closed
인 경우 MR 브랜치를 아카이브하기 위해bencher archive
CLI 하위 명령을 사용합니다. (예:bencher archive
) - 프로젝트 슬러그에
--project
옵션을 설정합니다. 자세한 내용은--project
문서를 참조하세요. (예:--project save-walter-white-1234abcd
) - 마스크된
BENCHER_API_TOKEN
환경 변수에--token
옵션을 설정합니다. 자세한 내용은--token
문서를 참조하세요. (예:--token "$BENCHER_API_TOKEN"
) - GitLab CI/CD 사전 정의된 변수를 사용하여 MR 브랜치 이름에
--branch
옵션을 설정합니다. (예:--branch "$CI_COMMIT_REF_NAME"
)
🐰 축하합니다! GitLab CI/CD에서 Bencher를 사용하는 방법을 배웠습니다! 🎉