연습 - GitHub 리포지토리에 대한 웹후크 설정

완료됨

이 연습에서는 GitHub 리포지토리에 대한 웹후크를 설정합니다. 특정 이벤트(이 경우 Gollum 이벤트)를 수신 대기하는 방법 및 이벤트가 트리거될 때 함수에서 웹후크를 콜백하는 방법을 알아봅니다.

설정

  1. 웹 브라우저를 사용하여 GitHub 계정에 로그인합니다.

  2. 왼쪽 메뉴 창에서 새로 만들기를 선택하여 새 리포지토리를 만듭니다. 새 리포지토리 만들기 페이지가 나타납니다.

  3. 리포지토리 이름 상자에 LearnWebhookTest와 같이 의미있는 이름을 입력합니다.

  4. 공용을 선택하여 wiki 모듈을 활성화하고 메뉴에서 찾습니다.

  5. 리포지토리 만들기를 선택합니다. 빠른 설정 페이지가 나타납니다.

  6. 새 파일 만들기 링크를 선택합니다.

  7. 상단 메뉴 모음에서 Wiki를 선택하여 리포지토리에 페이지를 표시합니다. 시작 페이지가 나타납니다.

  8. 첫 번째 페이지 만들기를 선택합니다. 새 페이지 만들기 템플릿이 나타납니다.

  9. 텍스트를 추가한 다음 페이지 저장을 선택합니다. Wiki의 첫 번째 페이지는 홈페이지입니다.

Gollum 이벤트에 대한 웹후크 추가

Gollum은 리포지토리의 wiki에서 페이지가 생성되거나 업데이트될 때마다 발생하는 GitHub 이벤트의 이름입니다.

  1. Wiki 보기의 홈페이지에는 리포지토리의 페이지를 나열하는 페이지 사이드바가 있습니다. 을 선택하여 홈페이지를 표시합니다.

  2. 홈페이지의 위쪽 메뉴 모음에서 설정을 선택합니다. 설정 창이 나타납니다.

  3. 설정 사이드바에서 웹후크를 선택합니다. 웹후크 창이 나타납니다.

  4. 오른쪽 위에 있는 웹후크 추가를 선택합니다. GitHub 암호를 확인하라는 메시지가 표시될 수 있습니다.

  5. 웹훅 / 웹훅 추가 창에서 각 설정에 다음 값을 입력합니다.

    설정
    페이로드 URL 이전 연습에서 사용한 Azure 함수 앱의 URL입니다. 도움말은 다음 메모를 참조하세요.
    내용 유형 드롭다운 목록에서 application/json을 선택합니다.
    이 웹후크가 트리거되도록 하려는 이벤트는 무엇입니까? 개별 이벤트를 선택하겠습니다를 선택합니다. 표시되는 이벤트 목록에서 아래로 스크롤하여 Wiki 확인란을 선택합니다. 다른 확인란이 선택되어 있지 않은지 확인합니다.
    활성 선택됨.

    명령 모음에서 함수 URL 가져오기를 선택하여 Azure HttpTrigger 창에서 함수 URL을 복사합니다. URL은 다음과 비슷합니다. https://<your-functionapp-name>.azurewebsites.net/api/HttpTrigger1?code=aUjXIpqdJ0ZHPQuB0SzFegxGJu0nAXmsQBnmkCpJ6RYxleRaoxJ8cQ==

  6. 웹후크 추가를 선택합니다. 웹후크 창이 나타납니다.

  7. 새 웹후크가 표시되는지 확인합니다. 이름 끝에 (gollum)이 있어야 합니다.

웹후크 테스트

  1. GitHub의 위쪽 메뉴 모음에서 Wiki를 선택합니다. 이전에 만든 페이지가 나타납니다.

  2. 편집을 선택합니다. 홈 편집 창이 표시됩니다.

  3. 창의 텍스트 영역에서 다음 텍스트를 입력합니다.

    Testing Webhook
    
  4. 페이지 저장을 선택합니다. 페이지가 다시 나타납니다.

  5. 위쪽 메뉴 모음에서 설정을 선택합니다. 설정 창이 나타납니다.

  6. 사이드바에서 웹후크를 선택합니다. 웹후크 창이 나타납니다.

  7. 편집을 선택합니다. 웹후크/웹후크 관리 창이 나타납니다.

  8. 최근 배달 탭을 선택합니다(페이지 아래쪽으로 스크롤해야 할 수 있음).

  9. 목록에서 줄임표(...)를 선택하여 맨 위(최신) 배달 항목을 선택합니다.

    ‘이벤트’를 포함하는 헤더 섹션이 표시됩니다.

    Request URL: https://testwh123456.azurewebsites.net/api/HttpTrigger1?code=aUjXIpqdJ0ZHPQuB0SzFegxGJu0nAXmsQBnmkCpJ6RYxleRaoxJ8cQ%3D%3D
    Request method: POST
    Accept: */*
    content-type: application/json
    User-Agent: GitHub-Hookshot/16496cb
    X-GitHub-Delivery: 9ed46280-6ab3-11e9-8a19-f1a14922a239
    X-GitHub-Event: gollum
    X-GitHub-Hook-ID: 312141005
    X-GitHub-Hook-Installation-Target-ID: 394459163
    X-GitHub-Hook-Installation-Target-Type: repository
    

    또한 페이로드 섹션에 wiki 페이지가 편집되었음을 나타내는 정보가 포함된 것을 확인할 수 있습니다. 페이로드에는 페이지, 리포지토리보낸 사람 섹션이 포함되며 다음 예제와 비슷하게 표시됩니다.

        "pages": [
            {
                "page_name": "Home",
                "title": "Home",
                "summary": null,
                "action": "edited",
                "sha": "04d012c5f92a95ae3f7721173bf9f2b1b35ea22f",
                "html_url": "https://github.com/.../wiki/Home"
            }
        ],
        "repository" : {
            "id": 176302421,
            "node_id": "MDEwOlJlcG9zaXRvcnkxNzYzMDI0MjE=",
            "name": "tieredstorage",
            ...
        },
        "sender" : {
            ...
        }
    
  10. 최근 배달 탭에서 응답 탭을 선택합니다.

    Azure 함수에서 생성한 응답 메시지가 표시됩니다. 이 예제의 경우 본문에는 메시지가 포함되어야 합니다. 이 HTTP 트리거 함수가 성공적으로 실행되었습니다. 쿼리 문자열 또는 요청 본문에서 개인 설정된 응답에 대한 이름을 전달합니다..