Bitbucket Cloud Discovery
Bitbucket Cloud 통합에는 Bitbucket Cloud에 있는 카탈로그 파일을 발견하기 위한 특별한 엔티티 제공자가 있어요. 제공자는 Bitbucket Cloud 계정을 검색해서 구성된 경로에 일치하는 카탈로그 파일을 Location 엔티티로 등록하고, 이어지는 처리 단계를 통해 포함된 모든 카탈로그 엔티티를 추가해요. 이는 정적 위치를 쓰거나 카탈로그에 항목을 수동으로 추가하는 것의 대안으로 유용할 수 있어요.
출처: 문서
본문
Bitbucket Cloud 통합에는 Bitbucket Cloud에 있는 카탈로그 파일을 발견하기 위한 특별한 엔티티 제공자가 있어요. 제공자는 Bitbucket Cloud 계정을 검색해서 구성된 경로에 일치하는 카탈로그 파일을 Location 엔티티로 등록하고, 이어지는 처리 단계를 통해 포함된 모든 카탈로그 엔티티를 추가해요. 이는 정적 위치를 쓰거나 카탈로그에 항목을 수동으로 추가하는 것의 대안으로 유용할 수 있어요.
이벤트 기반 Discovery
이벤트 기반 업데이트를 지원하는 이벤트:
-
repo:pushbitbucket.repo:push로 수신됨 -
repo:updatedbitbucket.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 토픽을 통해
추가 문서:
-
https://github.com/backstage/backstage/tree/master/plugins/events-backend/README.md
-
https://github.com/backstage/backstage/tree/master/plugins/events-backend-module-aws-sqs/README.md
구성
엔티티 제공자를 사용하려면 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: 조직 계정/워크스페이스의 이름. 여러 워크스페이스를 추가하려면 제공자 구성을 각각 하나씩 추가해야 해요.