백로그에서 웹훅까지 GiitHub에 issue 등록

7634 단어 BacklogPHPGitHub

하고 싶은 일.


백로그를 과제 관리로 하고 Giithub는 엔지니어의 내부 임무 관리를 동시에 사용한다.
백로그 고객이 의뢰할 때 내부용 issue를 수동으로 설정해서 자동화하려고 했습니다.

프로비저닝


도해할 정도는 아니야.

백로그 측


프로젝트 설정 ->Webhook에서 스크립트의 URL 지정
항목에 대한 관리자 권한이 없으면 설정할 수 없습니다.

자동사냥할 스크립트


날아오는 JSON 처리, Curl로 API 두드리기
사건과 창고에 따라 바뀐 곳.
const BACKLOG_PROJECT   = "PRJNAME";
const GHE_TOKEN         = "xxxxxxxxxxxxx";
const GHE_ORGANIZATION  = "xx";
const GHE_REPO          = "repository name";
const GHE_URL           = 'https://xxxx.xxx';//GitHub EnterpriseのURLを指定
Curl로 GiithubAPI를 두드리는 곳.
현재 API의 끝점은 새로 등록된 경우에만 이동하기 때문입니다.POST /repos/:owner/:repo/issueshttps://developer.github.com/v3/issues/#create-an-issue
/*
 GHEのAPIを叩く
 */
 $data = [
     'title' => '🔗 backlog - '. $summary,
     'body' => 'from https://[xxxx].backlog.jp/view/' . $projectKey . '-' . $key_id . "\n\n" . $description,//backlogの本文プラスURL
     // 'assignees' => [ 'onuma' ]
 ];
 $header = [
     'Authorization: token '. GHE_TOKEN,  // tokenをヘッダに含める
 ];

//特定のプロジェクトだったら
if( $projectKey === BACKLOG_PROJECT){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, GHE_URL.'/api/v3/repos/'. GHE_ORGANIZATION. '/' . GHE_REPO . '/issues');//apiのエンドポイント
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); // post
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); // jsonデータを送信
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // リクエストにヘッダーを含める
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HEADER, true);

    $response = curl_exec($curl);

    $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $header_size);
    $body = substr($response, $header_size);
    $result = json_decode($body, true);

    curl_close($curl);
}

GiitHub 측


인증을 위한 액세스 토큰 생성

참조 링크


아래 내용을 참고하게 해 주세요.
https://gist.github.com/hissy/6a114d0d9a85f3338aed
https://qiita.com/re-24/items/bfdd533e5dacecd21a7a
https://developer.github.com/v3/issues/#create-an-issue

향후의 발전


지금 서버가 필요한 것은 불편합니다. Google의 Cloud functions를 사용하십시오.
고쳐 쓰고 싶습니다.

좋은 웹페이지 즐겨찾기