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를 구성하면 저장소의 이벤트 메시지가 다른 프로젝트의 주제에 나타납니다.