Unity Cloud Build의 빌드 결과를 HipChat에 알리기

개시하다


이 글은 Unity 2 Advent Calendar 2016 24일째 되는 글이다.
이전 투고에서는 슬랙에 Unity Cloud Build의 구축 결과를 알리는 방법을 소개했고, 다른 메신저에서도 Unity Cloud Build의 웹훅을 이용해 같은 일을 실현할 수 있다.(단, 메신저 측면의 웹 API 사용 가능)
이번에는 유니티 클라우드 빌드 건설 결과를 알리는 방법을 Atlassian 회사HipChat에 안내하고자 합니다.

전제 조건

  • Unity Cloud Build의 기본 설정 완료
  • HipChat 계정/팀 생성
  • PHP 동작 서버 준비 완료
  • 설정 방법


    HipChat 설정


    HipChat에 알리기 위해 공지 객체의 room을 작성/설정합니다.그리고 프로그램과 응용 프로그램, 웹 버전은 거의 변화가 없으니 좋아하는 사람부터 조작하세요.
    HipChat 왼쪽에 있는 "Create a room"을 클릭하여 공지 객체 룸에 대한 정보를 입력합니다.이번 룸 이름은'Unity Cloud Build'로, 임의의 룸 이름이 될 수 있다.Room name을 입력한 후 Create room 버튼을 클릭합니다.

    위 절차에 따라 제작된 Room의 오른쪽에 있는 "Addintegrations"를 클릭합니다.

    Unity Cloud Build용 사용자 정의 포인트를 만들기 위해 화면 왼쪽 위에 있는 "Build your on integration"을 클릭합니다.

    사용자 지정 포인트의 이름을 입력하고 "Create"단추를 클릭합니다.이번에는'Unity Cloud Build'로 아무 이름이나 상관없다.

    화면 중앙의버튼을 누르다.(위의 curl 지령도 확인 가능)

    설정이 제대로 완료되면 다음과 같이 HipChat에 알립니다.

    지금까지 HipChat 설정이 끝났습니다."Send messages to this room by posting to this URL"에 표시되는 URL은 다음 단계에서 사용되므로 제어하십시오.

    PHP 스크립트 디버깅


    Unity Cloud Build에서 보낸 데이터를 HipChat의 PHP 스크립트에 알림 준비됐습니다.PHP에서 실행 중인 서버에서 디버깅을 수행하십시오.
    <?php
    $url = 'YOUR HIPCHAT ENDPOINT';
    
    // Get ’X-UnityCloudBuild-Event' http header
    $event = $_SERVER['HTTP_X_UNITYCLOUDBUILD_EVENT'];
    
    switch ($event) {
        case 'ProjectBuildQueued':
            $color = 'yellow';
            $title = 'Build queued';
            break;
        case 'ProjectBuildStarted':
            $color = 'yellow';
            $title = 'Build started';
            break;
        case 'ProjectBuildRestarted':
            $color = 'gray';
            $title = 'Build restarted';
            break;
        case 'ProjectBuildSuccess':
            $color = 'green';
            $title = 'Build success';
            break;
        case 'ProjectBuildFailure':
            $color = 'red';
            $title = 'Build failed';
            break;
        case 'ProjectBuildCanceled':
            $color = 'gray';
            $title = 'Build canceled';
            break;
        default:
            $color = 'red';
            $title = 'Unexpected event';
            break;
    }
    
    $json_string = file_get_contents('php://input');
    $obj = json_decode($json_string);
    
    $project_name = $obj->projectName;
    $dashboard_project = $obj->links->dashboard_url->href . $obj->links->dashboard_project->href;
    $build_target_name = $obj->buildTargetName;
    $dashboard_log = $obj->links->dashboard_url->href . $obj->links->dashboard_log->href;
    $build_number = $obj->buildNumber;
    $platform = $obj->platform;
    $started_by = $obj->startedBy;
    
    // format message
    $message = <<<EOM
    <table>
    <tr>
      <td>
        <b>$title</b><br>
        <a href="$dashboard_project">$project_name</a> - <a href="$dashboard_log">#$build_number</a><br>
      </td>
      <td>
        <b>Target</b><br>
        $build_target_name
      </td>
    </tr>
    <tr>
      <td>
        <b>Platform</b><br>
        $platform
      </td>
      <td>
        <b>Started By</b><br>
        $started_by
      </td>
    </tr>
    </table>
    EOM;
    
    $data = array(
        'color' => $color,
        "message" => $message,
        'notify' => true,
        'message_format' => 'html',
    );
    
    $content = http_build_query($data);
    $options = array('http' => array(
        'method' => 'POST',
        'content' => $content
    ));
    
    $contents = file_get_contents($url, false, stream_context_create($options));
    
    두 번째 행의 "YOUR HIPCHAT EndPONINT"섹션을 HipChat 설정의 마지막 단계에서 제어하는 URL로 변경하십시오.
    $url = 'YOUR HIPCHAT ENDPOINT';
    

    Unity Cloud Build 설정


    프로젝트 Cloud Build 페이지에서 "Notifications"탭을 클릭합니다.

    화면 오른쪽에 있는 "Add New"버튼을 클릭하여 Webhook 설정을 수행합니다.

    URL에 PHP 스크립트의 처리 주소를 입력하고 Next:Save→를 클릭합니다.

    또한 지원되는 알림 활동은 다음과 같습니다.필요에 따라 조정하세요.
    이벤트
    트리거 조건
    ProjectBuildQueued
    빌딩이 대열에 들어갈 때
    ProjectBuildStarted
    구축 시작 시
    ProjectBuildRestarted
    내부 오류가 발생하여 작업을 다시 시작할 때
    ProjectBuildSuccess
    구축이 정상적으로 끝날 때
    ProjectBuildFailure
    구성 예외 종료 시
    ProjectBuildCanceled
    실행 중인 구문이 취소되었을 때
    화면 오른쪽 위에 있는 구문 시작 버튼을 클릭하여 구문을 시작합니다.

    설정이 제대로 완료되면 다음과 같이 HipChat에 알립니다.

    또한 알림의 내용은 Unity Cloud Build의 Slack 알림과 비슷하지만 PHP 스크립트를 수정하여 사용자 정의할 수 있습니다.

    참고 자료

  • WEBHOOKS AND SLACK NOTIFICATIONS IN UNITY CLOUD BUILD
  • Unity Cloud Build 설명서
  • UCB2HC(GiitHub 링크)
  • 좋은 웹페이지 즐겨찾기