본문 바로가기
WIKI 기술 지식 베이스

Bitbucket Cloud Discovery

원문 보기 위키 갱신

Bitbucket Cloud 통합에는 Bitbucket Cloud에 있는 카탈로그 파일을 발견하기 위한 특별한 엔티티 제공자가 있어요. 제공자는 Bitbucket Cloud 계정을 검색해서 구성된 경로에 일치하는 카탈로그 파일을 Location 엔티티로 등록하고, 이어지는 처리 단계를 통해 포함된 모든 카탈로그 엔티티를 추가해요. 이는 정적 위치를 쓰거나 카탈로그에 항목을 수동으로 추가하는 것의 대안으로 유용할 수 있어요.

출처: 문서

본문

Bitbucket Cloud 통합에는 Bitbucket Cloud에 있는 카탈로그 파일을 발견하기 위한 특별한 엔티티 제공자가 있어요. 제공자는 Bitbucket Cloud 계정을 검색해서 구성된 경로에 일치하는 카탈로그 파일을 Location 엔티티로 등록하고, 이어지는 처리 단계를 통해 포함된 모든 카탈로그 엔티티를 추가해요. 이는 정적 위치를 쓰거나 카탈로그에 항목을 수동으로 추가하는 것의 대안으로 유용할 수 있어요.

이벤트 기반 Discovery

이벤트 기반 업데이트를 지원하는 이벤트:

  • repo:push bitbucket.repo:push로 수신됨

  • repo:updated bitbucket.repo:updated로 수신됨

  • 저장소 slug/이름이 변경되어 새 URL이 생기면 변경이 트리거돼요.

이벤트를 받으려면 Bitbucket Cloud에서 웹훅 구독을 추가해야 해요. 받고 싶은 트리거(이벤트 유형)를 활성화하세요. 엔티티 제공자에 대해서는 위의 이벤트 유형("Repository Push" 및/또는 "Repository Updated")만 지원되며, 추가 이벤트 유형은 무시돼요(예: 다른 사용 사례/통합을 위해 가질 수 있는 것들).

이벤트 기반 discovery 설정 방법에 대한 자세한 내용은 아래 설치 지침을 참고하세요.

설치

백엔드의 카탈로그 초기화 코드에 엔티티 제공자를 추가해야 해요. 이 제공자는 기본으로 설치되지 않으므로 백엔드 패키지에 @backstage/plugin-catalog-backend-module-bitbucket-cloud에 대한 종속성을 추가해야 해요.

Backstage 루트 디렉터리에서

yarn --cwd packages/backend add @backstage/plugin-catalog-backend-module-bitbucket-cloud

그런 다음 백엔드에 다음을 추가하세요.

packages/backend/src/index.ts

// optional if you want HTTP endpoints to receive external events// backend.add(import('@backstage/plugin-events-backend'));// optional if you want to use AWS SQS instead of HTTP endpoints to receive external events// backend.add(import('@backstage/plugin-events-backend-module-aws-sqs'));backend.add(import('@backstage/plugin-events-backend-module-bitbucket-cloud'));backend.add(import('@backstage/plugin-catalog-backend-module-bitbucket-cloud'));

외부 소스에서 이벤트를 어떻게 받을지 정해야 해요.

  • HTTP 엔드포인트를 통해

  • AWS SQS 큐를 통해

  • Google Pub/Sub를 통해

  • Kafka 토픽을 통해

추가 문서:

구성

엔티티 제공자를 사용하려면 Bitbucket Cloud 통합이 설정되어 있어야 해요. username과 appPassword가 필요할 가능성이 높아요(그렇지 않으면 공개 저장소에 제한되고 요청 빈도 제한이 매우 낮아요).

추가로 엔티티 제공자 인스턴스(들)를 구성해야 해요.

app-config.yaml

catalog:  providers:    bitbucketCloud:      yourProviderId: # identifies your ingested dataset        catalogPath: /catalog-info.yaml # default value        filters: # optional          projectKey: '^apis-.*$' # optional; RegExp          repoSlug: '^service-.*$' # optional; RegExp        schedule: # same options as in SchedulerServiceTaskScheduleDefinition          # supports cron, ISO duration, "human duration" as used in code          frequency: { minutes: 30 }          # supports ISO duration, "human duration" as used in code          timeout: { minutes: 3 }        workspace: workspace-name

note

제공자 ID 수준을 건너뛰는 것도 가능하지만 권장되지는 않습니다.

그렇게 하면 default가 제공자 ID로 사용됩니다.

  • catalogPath (선택): 기본값: /catalog-info.yaml. catalog-info.yaml 파일을 찾을 경로. /로 시작하면 저장소 루트로부터의 절대 경로예요. Bitbucket Cloud의 코드 검색에서 허용하는 path 필터/수정자에 허용된 값을 지원해요.

  • filters (선택):

  • projectKey (선택): 프로젝트 키를 기준으로 결과를 필터링하는 데 사용하는 정규식.

  • repoSlug (선택): 저장소 slug를 기준으로 결과를 필터링하는 데 사용하는 정규식.

  • schedule:

  • frequency: 작업을 얼마나 자주 실행할지. 시스템은 호출이 겹치지 않도록 최선을 다해요.

  • timeout: 단일 작업 호출이 걸릴 수 있는 최대 시간.

  • initialDelay (선택): 첫 호출 전에 지나야 하는 시간.

  • scope (선택): 'global' 또는 'local'. 동시성 제어 범위를 설정해요.

  • workspace: 조직 계정/워크스페이스의 이름. 여러 워크스페이스를 추가하려면 제공자 구성을 각각 하나씩 추가해야 해요.

더 알아보기 (Learn more)