お久しぶりです。GMOアドマーケティング GMOSSP開発担当の@KazuakiMです。
本日はJIRA API v2からv3へのマイグレーションポイントについてご紹介したいと思います。
詳しくはこちらのページをご確認下さい。
JIRA Cloud をお使いの方はお気づきかもしれませんが、
サイトデザインが変わりましたね、私はまだ慣れずにいます。
そんな中、過去に紹介したJIRA REST APIが動いていない事がわかり、調査した所v3にあげる事で問題が解決する事がわかりました。
という事でマイグレーションを始めていきます。
でははじめにトークンを生成しましょう。
事前にトークンを生成したいアカウントでJIRA Cloudにログインした状態で、
下記ページにアクセスし、トークンを生成します。
そして作ったトークンを利用して、チケット情報を取得してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/** * getIssue * * @param string $key * @return array * @throws RuntimeException * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issue-issueIdOrKey-get */ public function getIssue(string $key): array { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_HTTPHEADER => [ 'Accept: application/json', ], CURLOPT_URL => sprintf('https://%s.atlassian.net/rest/api/3/issue/%s', 'your_domain', $key), CURLOPT_USERPWD => '***UserName***' . ':' . '***Token***', ]); $body = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); if ($info['http_code'] !== 200) { throw new RuntimeException($body, $info['http_code']); } return json_decode($body, true); } |
v2のときは事前にAuth APIを呼び、Cookieにその情報をセットしていましたが、
v3では事前にトークンを生成しているため、直接呼び出す事ができるようになりました。
次にcontentの仕様が正式にAtlassian Document Formatへ変わりました。そのため、今までTrelloの詳細をそのまま適用していましたが、
content仕様に合わせる修正が必要となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
/** * postIssue * * @param string $summary * @param string $description * @return array * @throws RuntimeException * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issue-post */ public function postIssue(string $summary, string $description): array { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_HTTPHEADER => [ 'Accept: application/json', 'Content-type: application/json', ], CURLOPT_URL => sprintf('https://%s.atlassian.net/rest/api/3/issue', 'your_domain'), CURLOPT_USERPWD => '***UserName***' . ':' . '***Token***', CURLOPT_POST => true, CURLOPT_POSTFIELDS => json_encode([ 'fields' => [ 'project' => [ 'key' => 'xxx Project Key xxx', ], 'summary' => $summary, 'issuetype' => [ 'name' => 'Task', ], 'description' => [ 'type' => 'doc', 'version' => 1, 'content' => [[ 'type' => 'paragraph', 'content' => [[ 'type' => 'text', 'text' => $description, ]] ]] ], ], ]), ]); $body = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); if ($info['http_code'] !== 201) { throw new RuntimeException($body, $info['http_code']); } return json_decode($body, true); } |
あとURLが 2 から 3 に変わっている事と一部APIに変更が入っているかもしれません。
GMOSSPではAPIの変更は特に気にならなかったので、影響は軽微でした。
全体を通してみると大きな変更もなく、引き続きJIRA REST APIが活用できる事を確認しました。
GMOアドマーケティングでは日々のシステム改善に力をいれています。
もし興味がございましたら、ぜひご連絡下さい!