---
title: "웹훅 관리"
slug: "sourcecommit-use-webhook-manage"
updated: 2026-05-21T09:01:43Z
published: 2026-05-21T09:03:15Z
canonical: "guide-gov.ncloud-docs.com/sourcecommit-use-webhook-manage"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 웹훅 관리

Classic/VPC 환경에서 이용 가능합니다.

웹훅을 이용하면 SourceCommit 리포지토리에서 발생하는 여러 이벤트에 대한 후처리가 가능합니다. 특정 URL을 웹훅에 연결함으로써 원하는 이벤트 데이터를 전달받아 비즈니스 로직을 처리할 수 있습니다.

아래와 같이 다양한 방식으로 웹훅을 활용할 수 있습니다.

- 코드에 발생하는 변경을 감지하여 SourceBuild, SourceDeploy, SourcePipeline으로의 CI/CD 연계
- 커밋 푸시 또는 풀 리퀘스트 생성 알림을 통해 코드 리뷰 시간 단축
- FileSafer 악성 코드 검사 결과를 즉각적으로 수신
- LFS를 통한 File 잠금/잠금 해제 여부를 즉각적으로 수신

## 웹훅 관리

웹훅을 이용하려면 먼저 웹훅이 호출되었을 때 이벤트를 전달할 연결 대상을 지정하여 웹훅을 생성해야 합니다.

### 웹훅 생성

웹훅을 생성하는 방법은 다음과 같습니다.

              참고

              

- 하나의 리포지토리 내에 최대 10개의 웹훅을 생성할 수 있습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **Services** > **Developer Tools** > **SourceCommit** 메뉴를 차례대로 클릭해 주십시오.
2. SourceCommit 화면에서 리포지토리를 선택한 후 **[코드로 이동]**  버튼을 클릭해 주십시오.
  - 리포지토리 목록에서 리포지토리 이름을 클릭해도 됩니다.
3. 리포지토리 상세 기능 화면에서 **[Hooks]** 탭을 클릭해 주십시오.  

![sourcecommit-use-webhook-manage_console1_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console1_ko.png)
4. **[생성]** 버튼을 클릭해 주십시오.  

![sourcecommit-use-webhook-manage_console2_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console2_ko.png)
5. 생성할 웹훅 이름과 설명을 입력해 주십시오.
  - 웹훅 이름은 알파벳, 숫자, 특수 문자(-, _)를 사용하여 50자 내로 입력 가능하며 이미 생성된 웹훅과 동일한 이름 입력 불가
  - 설명은 300자 이내 입력 가능
6. 웹훅이 호출 될 이벤트 유형을 선택해 주십시오.
  - 웹훅이 속한 리포지토리 내에서 해당 이벤트가 발생하면 웹훅이 호출됩니다.
  - 이벤트 유형에 대한 자세한 설명은 [웹훅 이벤트 목록](/docs/sourcecommit-use-webhook-event#%EC%9B%B9%ED%9B%85%EC%9D%B4%EB%B2%A4%ED%8A%B8)을 참고해주십시오.
7. 웹훅에 연결할 대상을 추가해주십시오. 이벤트가 발생하여 웹훅이 호출되면 연결 대상을 통해 데이터를 전달합니다.
  - [URL 연결 대상 추가](/docs/sourcecommit-use-webhook-manage#URL%EC%97%B0%EA%B2%B0%EB%8C%80%EC%83%81%EC%B6%94%EA%B0%80)

#### URL 연결 대상 추가

              참고

              

- 하나의 웹훅 내에서 최대 10개의 URL을 활성화할 수 있습니다.

1. 대상 유형으로 **URL**을 선택해주십시오.  

![sourcecommit-use-webhook-manage_console3_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console3_ko.png)
2. 연결할 **URL**과 **Content Type**, **Secret**을 입력해주십시오.

              주의

              

  - URL 대상이 HTTP status 3XX 을 반환할 경우 리다이렉션을 지원하지 않습니다.

              참고

              

  - **application/json**: request body 데이터로 JSON payload를 바로 전송
  - **application/x-www-form-urlencoded**: 'payload' key에 대한 value로 JSON payload를 전송
  - URL: 2000자 내로 입력 가능하며, 외부에서 통신 가능한 주소여야 함 (필수)
  - Content Type: **application/json**, **application/x-www-form-urlencoded** 중 선택 (필수)
  - Secret (선택)
    - 웹훅 호출이 SourceCommit 서비스에서 호출된 것임을 보장하고 데이터가 중간에서 위변조되는 것을 방지하기 위함
    - 웹훅 호출 시 request body를 Secret key로 Hmac SHA256 암호화 한 값이 **'x-ncp-sourcecommit-signature-v1'** 헤더를 통해 전송됨 ([예시](/docs/sourcecommit-use-webhook-manage#URL%EB%8C%80%EC%83%81%EC%9B%B9%ED%9B%85%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%88%98%EC%8B%A0))
    - 200자 내로 입력 가능
3. URL의 활성화 여부를 결정하고 **[추가]** 버튼을 클릭하여 URL을 생성해주십시오.
  - 리포지토리 내 이벤트가 발생하여 웹훅이 호출되면 선택한 URL들 중 활성화 여부가 **ON**으로 되어 있는 URL로만 데이터가 전달됩니다.
4. 웹훅 생성 창의 **[생성]** 버튼을 클릭하여 웹훅을 생성해 주십시오.

### 웹훅 설정 변경

필요한 경우, 웹훅 생성 시 입력한 설명 문구와 이벤트 유형, 연결 대상 정보를 변경할 수 있습니다.

웹훅 설정을 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **Services** > **Developer Tools** > **SourceCommit** 메뉴를 차례대로 클릭해 주십시오.
2. SourceCommit 화면에서 리포지토리를 선택한 후 **[코드로 이동]**  버튼을 클릭해 주십시오.
  - 리포지토리 목록에서 리포지토리 이름을 클릭해도 됩니다.
3. 리포지토리 상세 기능 화면에서 **[Hooks]** 탭을 클릭해 주십시오.
4. **[수정]** 버튼을 클릭해 주십시오.
5. 웹훅 설정을 변경한 후 **[적용]** 버튼을 클릭해 주십시오.
  - 웹훅 설정 시 입력하는 내용에 관한 자세한 내용은 [웹훅 생성](/docs/sourcecommit-use-webhook-manage#%EC%9B%B9%ED%9B%85%EC%83%9D%EC%84%B1)을 참고해 주십시오.

### 웹훅 삭제

웹훅 호출을 더 이상 원하지 않는 경우 웹훅을 삭제할 수 있습니다. 웹훅을 삭제하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **Services** > **Developer Tools** > **SourceCommit** 메뉴를 차례대로 클릭해 주십시오.
2. SourceCommit 화면에서 리포지토리를 선택한 후 **[코드로 이동]**  버튼을 클릭해 주십시오.
  - 리포지토리 목록에서 리포지토리 이름을 클릭해도 됩니다.
3. 리포지토리 상세 기능 화면에서 **[Hooks]** 탭을 클릭해 주십시오.
4. 보유중인 웹훅 목록에서 삭제할 웹훅을 선택하고 **[삭제]** 버튼을 클릭해 주십시오.
5. 삭제 확인 창에서 최종적으로 **[삭제]** 버튼을 클릭해 주십시오.

### 웹훅 호출 결과 확인

웹훅 연결 대상 별로 호출 결과를 확인할 수 있습니다.

- [URL 연결 대상 호출 결과 확인](/docs/sourcecommit-use-webhook-manage#URL%EC%97%B0%EA%B2%B0%EB%8C%80%EC%83%81%ED%98%B8%EC%B6%9C%EA%B2%B0%EA%B3%BC%ED%99%95%EC%9D%B8)

#### URL 연결 대상 호출 결과 확인

연결 대상이 **URL**인 웹훅은 웹훅 목록 화면에서 **[호출 결과]** 버튼을 클릭하여 확인할 수 있습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **Services** > **Developer Tools** > **SourceCommit** 메뉴를 차례대로 클릭해 주십시오.
2. SourceCommit 화면에서 리포지토리를 선택한 후 **[코드로 이동]**  버튼을 클릭해 주십시오.
  - 리포지토리 목록에서 리포지토리 이름을 클릭해도 됩니다.
3. 리포지토리 상세 기능 화면에서 **[Hooks]** 탭을 클릭해 주십시오.
4. 호출 결과를 확인할 URL 유형의 웹훅을 선택한 후 **[호출 결과]** 버튼을 클릭해 주십시오.  

![sourcecommit-use-webhook-manage_console5_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console5_ko.png)
  - 대상 유형: 웹훅 대상 유형 (현재 URL만 지원)
  - 엔드포인트: 웹훅 대상 URL
  - 호출 시간: 웹훅 호출 시간
  - 상태: 호출 성공, 실패 여부
5. 상세 호출 결과를 확인하려면 **[보기]** 버튼을 클릭해주십시오.  

![sourcecommit-use-webhook-manage_console6_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console6_ko.png)
  - 요청 정보
    - 요청 헤더: 웹훅 호출 시 URL, Method, Headers 정보
    - 요청 바디: 웹훅 호출 시 전달한 Body 정보
  - 응답 정보
    - 응답 상태 코드: 웹훅 호출 후 응답 받은 HTTP Status Code
    - 응답 헤더: 웹훅 호출 후 응답 받은 Headers
    - 응답 바디: 웹훅 호출 후 응답 받은 Body

## URL 대상 웹훅 데이터 수신

URL 대상 웹훅 데이터를 수신한 후 secret 값과 'x-ncp-sourcecommit-signature-v1' 헤더를 이용하여 위변조 유무를 검증하고 이를 출력하는 예제를 소개합니다.

1. [웹훅 생성](/docs/sourcecommit-use-webhook-manage#%EC%9B%B9%ED%9B%85%EC%83%9D%EC%84%B1) 및 [URL 연결 대상 추가](/docs/sourcecommit-use-webhook-manage#URL%EC%97%B0%EA%B2%B0%EB%8C%80%EC%83%81%EC%B6%94%EA%B0%80)를 참고하여 아래와 같은 내용으로 웹훅을 생성해주십시오.  

![sourcecommit-use-webhook-manage_console9_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console9_ko.png)
              참고

              

  - URL 웹훅 데이터 전송 시 HTTP Method 는 **POST** 입니다.
  - 웹훅 호출 시 request body를 Secret key로 Hmac SHA256 암호화 한 값이 **'x-ncp-sourcecommit-signature-v1'** 헤더를 통해 전송됩니다.
  - **Secret** 값이 공백일 경우 **'x-ncp-sourcecommit-signature-v1'** 헤더는 제공되지 않습니다.
2. 사용자 웹서버에서 웹훅 데이터를 받을 수 있도록 준비해주십시오.
              주의

              

  - secret 값은 유출되지 않도록 보관에 주의가 필요합니다. 아래 코드는 참고용으로만 제공됩니다.

- Spring boot

```
@RestController
public class SampleController {

    @PostMapping("/test")
    public String test(
            @RequestHeader("x-ncp-sourcecommit-signature-v1") String signature,
            @RequestBody String data
    ) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException, JsonProcessingException {

        String secret = "my-secret-key";

        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(secret.getBytes("UTF-8"), "HmacSHA256"));

        String expectedSignature = Base64.encodeBase64String(mac.doFinal(data.getBytes("UTF-8")));

        if(!expectedSignature.equals(signature)){
            System.out.println("this request failed validation");
        }

        ObjectMapper mapper = new ObjectMapper();
        Map<String, Object> map = mapper.readValue(data, new TypeReference<Map<String, Object>>() {});

        System.out.println("--- received payload ---");
        System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map));

        return "test";
    }
}
```
- Node.js - express

```
router.post('/test', (req, res, next) => {

  const secret = 'my-secret-key';

  const signature = req.get('x-ncp-sourcecommit-signature-v1');
  const data = JSON.stringify(req.body);

  const expectedSignature = createHmac('sha256', secret).update(data).digest('base64');

  if(expectedSignature !== signature){
    console.log('this request failed validation');
  }

  console.log('--- received payload ---');
  console.log(JSON.stringify(req.body, null, 2));

  res.send('test');
});
```

1. 선택한 이벤트 유형 중 하나를 실행시켜 주십시오.
  - 아래 예시는 push 이벤트에 대한 예시입니다.  

![sourcecommit-use-webhook-manage_console10_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console10_ko.png)
2. 사용자 웹서버 콘솔에서 웹훅 수신 로그를 확인해 주십시오.  

![sourcecommit-use-webhook-manage_console11_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/sourcecommit-use-webhook-manage_console11_ko.png)
