GitHub 이벤트를 사용하여 Azure Function 트리거

완료됨

GitHub Gollum 이벤트를 사용하면 wiki 업데이트를 수신 대기할 수 있습니다. 이 이벤트가 발생하면 Azure HttpTrigger 함수가 트리거되면 페이로드를 구문 분석하여 전송된 데이터를 검색 및 처리할 수 있습니다.

여러분은 웹후크를 설정하여 회사 GitHub 리포지토리의 Gollum 이벤트를 수신 대기할 수 있음을 IT 부서에게 보여주었습니다. 또한 Azure Functions 앱을 사용하여 함수가 웹후크 요청을 받을 때 코드를 실행할 수 있음도 보여주었습니다.

이 단원에서는 올바르게 페이로드를 구문 분석하도록 함수를 업데이트할 수 있게 Gollum 이벤트의 페이로드를 검사합니다.

Gollum 이벤트 페이로드

Gollum 이벤트에 대한 페이로드에는 다음 항목이 포함됩니다.

  • 업데이트된 페이지입니다. 각 페이지에는 다음 정보가 포함됩니다.
    • page_name 페이지의 이름입니다.
    • title 현재 페이지 제목입니다.
    • action 페이지에서 수행된 작업(만들거나 편집됨)입니다.
    • html_url HTML wiki 페이지입니다.
  • 리포지토리 wiki 페이지를 포함하는 리포지토리에 대한 정보로, 다음을 포함합니다.
    • name 리포지토리의 이름입니다.
    • owner 리포지토리 소유자의 세부 정보입니다.
    • html_url 리포지토리의 주소입니다.
  • 보낸 사람 웹후크가 발생한 원인이 되는 이벤트를 발생시킨 사용자에 대한 정보입니다.

예를 들어 페이로드는 다음 코드와 같을 수 있습니다.

"pages": [
    {
        "page_name": "Home",
        "title": "Home",
        "summary": null,
        "action": "edited",
        "sha": "562362bc141b9e2db1fb971e1ecb4fd0b7457f68",
        "html_url": "https://github.com/testrepo/Hello-World/wiki/Home"
    }
],
"repository": {
    ...
    "name": "testrepo",
    ...
    "owner": {
        ...
    },
    "html_url": "https://github.com/...",
    ...
},
"sender": {
    "login": "..."
    ...
}

이 정보는 HTTP POST 요청의 본문으로 전달됩니다. 이 정보를 올바르게 구문 분석하고 처리할 수 있도록 함수 논리를 업데이트해야 합니다.

Gollum 이벤트의 구문 분석 정보

특정 이벤트가 발생하면 웹후크가 실행된다는 점을 기억하세요. 그런 다음 웹후크는 함수에 대한 URL을 사용하여 Azure Functions 코드가 수신 대기하도록 설정된 URL로 요청을 보냅니다. 페이로드는 Azure Function에 전달됩니다. 함수는 요청 본문을 구문 분석하여 페이로드에서 필드를 추출하고 적절한 작업을 수행할 수 있습니다.

다음 예제에서는 페이로드에서 리포지토리 이름을 검색합니다. 이벤트 유형은 x-github-event 요청 헤더에서 사용할 수 있습니다. 이 데이터는 다음과 같은 함수 응답에 출력됩니다.

if (req.body.repository.name){
    context.res = {
        body: "Repository is: " + req.body.repository.name + ", Event Type is: " + req.headers['x-github-event']
    };
}

다음 연습에서는 들어오는 Gollum 이벤트를 처리할 수 있도록 함수 코드를 업데이트합니다.