Cloud Source Repositories용 알림

Cloud Source Repositories는 저장소에 대한 메시지를 주제라고 하는 리소스에 게시합니다. 이 메시지는 Pub/Sub 주제를 구독한 앱에서 수신됩니다. 예를 들어 저장소 상태가 변경되면 알림을 받을 수 있습니다. 또한 Pub/Sub 주제에 대한 역할과 권한을 구성하여 저장소에서 생성된 Pub/Sub 이벤트와 사용자의 상호작용 방식을 제어할 수 있습니다.

이 페이지에서는 Cloud Source Repositories용 Pub/Sub 알림을 간략하게 설명합니다. Pub/Sub 알림 설정 및 사용 방법은 Pub/Sub 알림 구성을 참조하세요.

범위

Cloud Source Repositories가 이벤트를 Pub/Sub 주제에 게시하도록 구성할 수 있습니다. 이 구성의 범위가 Google Cloud 프로젝트 또는 개별 저장소가 되도록 설정할 수 있습니다.

범위가 구성되면 Cloud Source Repositories는 서비스 계정을 사용하여 지정된 Pub/Sub 주제에 메시지를 게시합니다. 먼저 서비스 계정에 주제에 게시할 권한을 부여해야 합니다. Pub/Sub에 감사 로깅이 사용 설정되어 있으면 이 서비스 계정은 Pub/Sub API의 호출자로 표시됩니다.

권한

메시지를 게시하도록 Cloud Source Repositories를 구성하려면 다음이 필요합니다.

  • 이벤트를 감시할 프로젝트 또는 저장소. 프로젝트가 지정되면 해당 프로젝트에 속한 모든 저장소가 감시됩니다.
  • Cloud Source Repositories가 메시지를 게시할 Pub/Sub 주제
  • Pub/Sub 주제에 액세스할 서비스 계정
  • 메시지 형식(예: JSON 또는 프로토콜 버퍼)

Pub/Sub에 대해 Cloud Source Repositories를 구성할 때 다음 권한이 있어야 합니다.

  • 지정된 저장소에 대한 source.repos.updateRepo 또는 지정된 프로젝트에 대한 source.repos.updateProjectConfig
  • 지정된 서비스 계정에 대한 iam.serviceAccounts.actAs

Pub/Sub 주제를 등록한 후에는 지정된 서비스 계정에 pubsub.topics.publish 메시지를 게시할 권한이 있어야 합니다.

이벤트 유형

Pub/Sub는 사용자가 새 저장소를 만들거나, 저장소를 삭제하거나, 저장소에 커밋을 푸시할 때 이를 알립니다. 각 이벤트마다 특정 이벤트 유형이 있습니다. 다음 표에는 유형과 해당 정의가 나와 있습니다.

이벤트 유형 설명
CreateRepo 사용자가 저장소를 만들면 발생합니다.
RefUpdate 사용자가 git push 명령어를 실행하면 발생합니다.
DeleteRepo 사용자가 저장소를 삭제하면 발생합니다.

알림 형식

다음 두 가지 형식 중 하나를 사용하도록 Pub/Sub 알림을 구성할 수 있습니다.

  • JSON
  • 프로토콜 버퍼

알림 데이터

각 Pub/Sub 알림에는 이벤트에 대한 다음 정보가 포함됩니다.

필드 이름 설명
name 저장소 이름입니다.
url 저장소 URL입니다.
eventTime 변경사항이 발생한 시간입니다.
refUpdateEvent 특정 변경사항에 대한 정보입니다.
createRepoEvent 사용자가 저장소를 만들었는지 여부를 나타냅니다.
deleteRepoEvent 사용자가 저장소를 삭제했는지 여부를 나타냅니다.

git push 명령어에 대한 알림인 경우 알림에는 다음 정보가 있는 refUpdateEvent 필드가 포함됩니다.

필드 이름 설명
이메일 변경한 사용자의 이메일 주소입니다.
refUpdates 커밋에 대한 정보입니다.

refUpdates 필드에는 git push 명령어에 대한 다음 세부정보가 포함됩니다.

필드 이름 설명
refName 브랜치 이름입니다.
updateType 업데이트 유형입니다. 자세한 내용은 업데이트 유형을 참조하세요.
oldId 저장소에 대한 이전 커밋 ID입니다.
newId 저장소의 새 ID입니다.

업데이트 유형

git push 이벤트에는 4가지 업데이트 유형 중 하나가 있을 수 있습니다. 알림의 updateType 필드에서 유형을 확인할 수 있습니다.

업데이트 유형 설명
만들기 명령어가 새 참조를 만들면 발생합니다.
UPDATE_FAST_FORWARD 명령어가 객체를 업데이트하면 발생합니다.
UPDATE_NON_FAST_FORWARD 명령어가 git push -f와 같이 -f 플래그를 사용하면 발생합니다.
삭제 명령어가 참조를 삭제하면 발생합니다.

알림 예시

다음은 Pub/Sub 알림에 포함된 데이터 예시입니다. 이 알림은 JSON 형식을 사용합니다.

  {
    "name": "projects/test-project/repos/pubsub-test",
    "url": "[URL_PATH]",
    "eventTime": "2018-02-21T21:23:25.566175Z",
    "refUpdateEvent": {
      "email": "someone@somecompany.com",
      "refUpdates": {
        "refs/heads/master": {
          "refName": "refs/heads/master",
          "updateType": "UPDATE_FAST_FORWARD",
          "oldId": "c7a28dd5de3403cc384a025834c9fce2886fe763",
          "newId": "f00768887da8de62061210295914a0a8a2a38226"
        }
      }
    }
  }

교차 프로젝트 설정 예시

Cloud Source Repositories를 구성하여 다른 프로젝트의 주제에 메시지를 게시할 수 있습니다. 이 경우 저장소가 있는 동일한 프로젝트에서 서비스 계정을 만들어야 합니다. Pub/Sub 주제가 포함된 프로젝트에서 이 서비스 계정에 roles/pubsub.publisher 역할을 부여합니다. 이 계정 및 이 Pub/Sub 주제로 Cloud Source Repositories를 구성하면 저장소의 이벤트 메시지가 다른 프로젝트의 주제에 나타납니다.