이 페이지는 Bazel 규칙 저장소의 소유자 및 유지관리자를 위해 작성되었습니다. 그것은 다음을 위해 Bazel 지속적 통합 (CI) 시스템을 구성하는 방법을 설명합니다. 원격 실행에 대한 규칙의 호환성을 테스트할 수 있습니다. 사용할 수 있습니다 이 페이지의 안내는 Google Cloud 콘솔이 GitHub 저장소
기본 요건
이 페이지의 단계를 완료하기 전에 다음 사항을 확인하세요.
- GitHub 저장소는 Bazel GitHub 조직.
- 다음에서 설명한 대로 저장소에 Buildkite를 구성했습니다. Bazel 지속적 통합.
테스트를 위해 Bazel CI 설정
.bazelci/presubmit.yml
파일에서 다음을 수행합니다.a.
rbe_ubuntu1604
라는 구성을 추가합니다.b.
rbe_ubuntu1604
구성에서 원격 실행에 대해 테스트할 빌드 및 테스트 대상을 추가합니다.bazel-toolchains
추가 GitHub 저장소를WORKSPACE
파일에 추가합니다. 최신 버전을 사용할 수 있습니다. 또한 이름이buildkite_config
인rbe_autoconfig
대상을 추가합니다. 예시 BuildKite CI를 사용하여 원격 실행을 위한 도구 모음 구성 생성 (rbe_ubuntu1604
)
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
presubmit.yml
파일에 대한 변경사항과 함께 pull 요청을 보냅니다. (자세한 내용은 pull 요청 예시 참조)빌드 결과를 보려면 RBE (Ubuntu 16.04) GitHub에서 pull 요청 검사를 사용할 수 있습니다. 이 링크 pull 요청이 병합되고 CI 테스트가 완료되면 사용할 수 있게 됩니다. 확인할 수 있습니다 (자세한 내용은 결과 예를 참조하세요.)
(선택사항) bazel 테스트 (RBE (Ubuntu 16.04)) 검사를 테스트로 설정합니다. 통과해야 합니다. 설정 GitHub의 Settings(설정) > 브랜치 > 브랜치 보호 규칙 Cloud CDN을 사용 설정합니다
실패한 빌드 및 테스트 문제 해결
빌드 또는 테스트가 실패하는 경우 다음이 원인일 수 있습니다.
필수 빌드 또는 테스트 도구가 기본 컨테이너에 설치되어 있지 않습니다.
rbe_ubuntu1604
구성을 사용하는 빌드는 기본적으로rbe-ubuntu16-04
여기에는 많은 Bazel 빌드에 공통된 도구가 포함되어 있습니다. 그러나 규칙을 실행할 때 기본 컨테이너에 없는 도구가 필요한 경우 컨테이너 이미지를 기반으로 커스텀 컨테이너를rbe-ubuntu16-04
드림 후반부에서 설명하는 것처럼 이러한 도구를 포함해야 합니다빌드 또는 테스트 대상이 원격 애플리케이션과 호환되지 않는 규칙을 사용함 실행할 수 있습니다 자세한 내용은 원격 실행을 위해 Bazel 규칙 조정 대상: 원격 실행과의 호환성에 대한 자세한 내용을 참조하세요.
rbe_ubuntu1604 CI 구성에서 커스텀 컨테이너 사용
rbe-ubuntu16-04
컨테이너는 다음 URL에서 공개적으로 제공됩니다.
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Container Registry에서 직접 가져오거나 소스에서 빌드할 수 있습니다. 이 다음 섹션에서는 두 옵션을 모두 설명합니다
시작하기 전에 gcloud
, docker
, git
를 설치했는지 확인하세요.
소스에서 컨테이너를 빌드하는 경우 최신 Kubernetes 버전
사용할 수 있습니다
Container Registry에서 rbe-ubuntu16-04 가져오기
Container Registry에서 rbe-ubuntu16-04
컨테이너를 가져오려면 다음을 실행합니다.
다음 명령어를 실행합니다.
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
sha256-checksum를 다음에 대한 SHA256 체크섬 값으로 바꿉니다. 최신 컨테이너가 필요합니다.
소스에서 rbe-ubuntu16-04 컨테이너 빌드
소스에서 rbe-ubuntu16-04
컨테이너를 빌드하려면 다음 안내를 따르세요.
bazel-toolchains
저장소를 복제합니다.git clone https://github.com/bazelbuild/bazel-toolchains
도구 모음 컨테이너 대상을 설정하고 다음 설명에 따라 컨테이너를 빌드합니다. 툴체인 컨테이너.
새로 빌드된 컨테이너를 가져옵니다.
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
커스텀 컨테이너 실행
커스텀 컨테이너를 실행하려면 다음 중 하나를 수행합니다.
Container Registry에서 컨테이너를 가져온 경우 다음을 실행합니다. 명령어:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
sha256-checksum
를 최신 컨테이너가 포함됩니다.소스에서 컨테이너를 빌드한 경우 다음 명령어를 실행합니다.
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
커스텀 컨테이너에 리소스 추가
Dockerfile
또는
rules_docker
: 리소스 추가 또는
원본 리소스의 대체 버전을 rbe-ubuntu16-04
컨테이너로 가져옵니다.
Docker를 처음 사용하는 경우 다음을 읽어보세요.
예를 들어 다음 Dockerfile
스니펫은 my_tool_package
를 설치합니다.
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package
Container Registry로 커스텀 컨테이너 푸시
컨테이너를 맞춤설정한 후에는 컨테이너 이미지를 빌드하고 Container Registry를 다음과 같이 정리합니다.
컨테이너 이미지를 빌드합니다.
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
컨테이너 이미지를 Container Registry로 푸시합니다.
gcloud docker -- push gcr.io/project-id/custom-container-name
다음 URL로 이동하여 컨테이너가 푸시되었는지 확인합니다.
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
커스텀 컨테이너의 SHA256 체크섬을 기록해 둡니다. 다음 작업을 수행해야 합니다. 나중에 빌드 플랫폼 정의에 제공하세요
공개 액세스에 대한 공개 설명대로 컨테이너를 구성합니다. 자세한 내용은 이미지를 공개적으로 제공.
자세한 내용은 이미지 내보내기 및 가져오기.
빌드 플랫폼 정의 지정
Bazel 플랫폼 구성을
Bazel이 도구 모음을 선택할 수 있는 커스텀 도구 모음 구성
원하는 하드웨어/소프트웨어 플랫폼에 적절해야 합니다. 생성
자동으로 유효한 플랫폼이 되려면 WORKSPACE
에
이름이 buildkite_config
인 rbe_autoconfig
타겟(추가 포함)
속성을 클릭하여 커스텀 컨테이너를 선택합니다. 이 설정에 대한 자세한 내용은 다음을 참고하세요.
rbe_autoconfig
관련 최신 문서