はじめに ~なぜJiraとGitHubを連携させるのか?
プロジェクト管理ツールとしてJiraを使いながら、コードの管理やプルリクエストの追跡にはGitHubを使っているチームは少なくありません。しかし、JiraとGitHubを個別に管理していると、以下のような問題が発生します。
- 2重管理による非効率さ
- Jiraで課題を登録しても、GitHub上でも手動でIssueを作成する必要がある。これが続くと「結局どっちを見ればいいんだ?」という混乱が起こる
- 情報の分断
- どの課題がどのGitHub Issueに対応しているのか、いちいち手動でリンクする手間が増える。更新漏れが起きると、最新の進捗が見えなくなる
- チーム全体の生産性の低下
- 開発者がコーディングではなく「管理作業」に時間を取られることで、開発スピードが遅くなる
JiraとGitHub連携の全体像をざっくり解説!
本記事における定義
まずは、本記事で使用する用語の定義を整理します。JiraとGitHubでの用語が異なるため、一貫性を持たせるために以下のように対応付けを行います。
- PBI: Jiraの課題(タスク)、 GitHubでのIssue
- SBI: Jiraの課題(サブタスク)、GitHubのSub-Issue
全体の流れをざっくり説明
Jiraの機能であるJira Automationを活用し、課題タイプに応じてGitHub側にIssueまたはSub-Issueを自動で作成します。
必要なツールと環境設定
Jiraで必要なもの
- Atlassian アカウント
- Jiraを利用するための基本的なアカウント
- GitHub Cloud を Jira に接続する
- GitHub Cloud を Jira に接続する 参照
- JiraとGitHubを連携させるために、「GitHub for Jira」アプリをインストールし、両方を接続します
GitHubで必要なもの
- GitHubアカウント
- GitHubを利用するためのアカウント
- Organization
- 組織
- Organizationのリポジトリ
- 組織に紐づくリポジトリ
- personal access token(Fine-grained personal access token)
- GitHub APIと連携するためのアクセストークン
- 個人用アクセス トークンを管理する 参照
- 組織の個人用アクセス トークン ポリシーを設定する 参照
Jira → GitHub Issue 自動化の手順
カスタムフィールドの追加
GitHub Issueの情報を取り込むためのカスタムフィールドをJiraの課題(タスクやサブタスク)用に作成します。
Jira Automationの全体構成
今回作成するJira Automationルールの完成形のイメージは以下のようになります。
Jira Automationのルール詳細
コンポーネント1: トリガー
- トリガー内容
- 課題の作成時
コンポーネント2: 条件
- 条件内容
- {{issue.issueType.name}} が Task と等しいかどうかを確認します
- 動作概要
- この条件は、課題の種類(Issue Type)が "Task" に該当するかを判定します
条件が満たされた場合のみ、次のアクションに進みます。
- この条件は、課題の種類(Issue Type)が "Task" に該当するかを判定します
コンポーネント3: アクション
- アクション内容
- GitHubリポジトリで新しいブランチを作成します
- 動作概要
- ブランチ名をfeature/{{issue.key}}の形式で作成します
- {{issue.key}} はJira課題のキー(例: TASK-123)が自動的に挿入されます
コンポーネント4,8: アクション
- アクション内容
- GitHub APIを使用して、新しいIssueを作成するWebリクエストを送信します
- 動作概要
- Web リクエスト URL:
https://api.github.com/repos/OWNER/REPO/issues
- HTTP メソッド: POST
- Web リクエスト本文:
{"title": "【PBI】{{issue.summary}}"}
- Web リクエスト URL:
- 補足
- 後続の処理で、リクエストの応答を使うので以下のチェックボックスをONにします
- 「この Web リクエストからの応答を受信するまで、後続のルール アクションの実行を遅延します」
- 「リクエストの応答が正常でなかった場合 (200 応答でない場合) でも、ルールの実行を続行します」
- 後続の処理で、リクエストの応答を使うので以下のチェックボックスをONにします
コンポーネント5,9: 条件
- 条件内容
- Webリクエストの応答ステータスコードが 201 と等しいかどうかを確認します
- 動作概要
- この条件は、{{webResponse.status}}(WebリクエストのHTTPレスポンスコード)が 201 に該当するかを判定します
コンポーネント6,10: アクション
- アクション内容
- Jira課題のフィールドを編集し、GitHub Issueに関連する情報を追加します
- 動作概要
- 編集対象フィールド
- GitHub Issue
- GitHub Issue URL
- 設定内容
- Webリクエストで取得したGitHub Issueの情報(Issue番号とURL)をJira課題のフィールドに書き込みます
- 編集対象フィールド
コンポーネント7: 条件
- 条件内容
- {{issue.issueType.name}} が サブタスク と等しいかどうかを確認します
- 動作概要
- この条件は、課題の種類(Issue Type)が "サブタスク" に該当するかを判定します
条件が満たされた場合のみ、次のアクションに進みます。
- この条件は、課題の種類(Issue Type)が "サブタスク" に該当するかを判定します
コンポーネント11: アクション
- アクション内容
- GitHub APIを使用して、新しいIssueを作成するWebリクエストを送信します
- 動作概要
- Web リクエスト URL:
https://api.github.com/repos/OWNER/REPO/issues/ISSUE_NUMBER/sub_issues
- HTTP メソッド: POST
- Web リクエスト本文:
{"sub_issue_id": {{webResponse.body.id}}}
- Web リクエスト URL:
- 補足
- ISSUE_NUMBERにはタスクの「GitHub Issue」のフィールドを指定します
- 例: {{issue.parent.customfield_10040}}
- ISSUE_NUMBERにはタスクの「GitHub Issue」のフィールドを指定します
Jira Automationのルール実行結果
作成したJira Automationのルールを実際に試してみます。
-
ブランチが自動で作成され、カスタムフィールド(GitHub Issue、GitHub Issue URL)にGitHub Issueの情報が登録されます
-
GitHub Issueが自動で作成され、そのIssueを課題(タスク)のGitHub Issueにsub-issueとして紐付けされます
-
カスタムフィールド(GitHub Issue、GitHub Issue URL)にGitHub Issueの情報が登録されます
おわりに
今回の記事では、Jira Automationを活用してJiraとGitHubを連携し、タスク管理を効率化する方法について解説しました。この設定を導入することで、手動での同期作業が不要になり、チーム全体の作業スピードや精度が向上します。
この記事が、日々のタスク管理をよりスムーズにする一助となれば幸いです。ぜひ試してみて、プロジェクトの効率化を実現してください!