3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JiraとGithubの連携 -チケットステータスとブランチをAutomationで同期する-

Last updated at Posted at 2024-08-25

はじめに

Jiraのチケット管理機能1を使うことでチーム開発のタスク管理を効率化することができますが23,GithubなどのSCMとの自動連携は追加設定が必要です.今回はこの過程と実際の開発環境での使用方法を解説します.

Jiraのチケット管理機能とGithubの連携によって以下のような恩恵が得られると考えています.
スクリーンショット 2024-07-25 3.44.06.png

背景

 私は自律走行ロボットのチーム開発を行なっています.チームではJiraを用いたタスク管理を行なっていました.
 Jiraだけでもタスク管理はできていたのですが,①タスクの粒度が曖昧で,チケットと実装機能の対応関係が判然としないため,②打ち合わせで作成したタスク表の内容と実装の粒度が一致しない.その結果,③Jiraのタスクボードと実装の進捗が一見してもわからない(実情と不一致).
 最終的にJiraの利用が面倒になってしまう.という問題が発生しました.

 解決策として「1ブランチにおいて1機能を追加実装する」というGitの原則をJiraでのタスク管理に適応させることで,チケットが持つべきタスクの粒度を明確にすることが考えられます.
 その手段として今回のJiraとGithubの連携を行います.

Git ワークフローGitのブランチモデルについてはこちら)

スクリーンショット 2024-07-25 1.53.01.png

0.事前準備 Jiraと Githubの連携

Jiraのアカウントと,Githubのアカウントおよび作成済みのリポジトリは必須です.どちらも管理者権限が必須です.Jiraでもプロジェクトがすでに作成されていることを前提として進めます.

これらが用意できたら,GitHub Cloud を Jira に接続する |アトラシアン サポートを参考にしてJiraとGithubを接続します.

1. 自動化の手順

1.1 ワークフローの設定

右側のリストからプロジェクト設定課題タイプをクリック

さらに右上のワークフローの編集をクリックして,チケットのステータスを変更します.

スクリーンショット 2024-07-25 23.09.06.png

ワークフローの編集方法は他の記事に任せます4.はじめに述べたように,チケットはGithubのブランチに紐付けるため,チケットのライフタイムは,ブランチを作成→開発→プルリクエストの作成→マージに合わせたいです.

チケットのステータスは,
1.ブランチを切る:DOTO → WIP (Work In Progress)
2.開発する:WIP
3.プルリクエスト:WIP → REVIEW
4.実装内容がマージされる:REVIEW → DONE
としてワークフローを編集しました.
image.png

1.2 自動化の設定

Automationを設定することで,Githubでブランチを作成したり,プルリクを出す度にチケットステータスが自動で変更されるようになります.

1.1と同様の右側のリストからプロジェクト設定自動化をクリック
→右上のルールを作成をクリック

image.png

ここで先ほど定義したワークフローの繊維に合わせて
1.ステータスがTODOの時にブランチが作成されたらステータスをWIPに移動する
2.ステータスがWIPの時にブランチが作成されたらステータスをREVIEWに移動する
3.ステータスがREVIEWの時にブランチが作成されたらステータスをDONEに移動する
の3つの自動化ルールを作成していきます.

※詳しいやり方→Jira 自動化ルールを作成して編集する | アトラシアン サポート

ルール1: ステータスがTODOの時にブランチが作成されたらステータスをWIPに移動する

スクリーンショット 2024-07-25 23.36.29.png

ルール2: ステータスがWIPの時にブランチが作成されたらステータスをREVIEWに移動する

スクリーンショット 2024-07-25 23.38.07.png

ルール3: ステータスがREVIEWの時にブランチが作成されたらステータスをDONEに移動する

スクリーンショット 2024-07-25 23.39.22.png

ここまで設定を行えば,自動化が完了です.次に実際どのように使うのか見ていきましょう.

2. 使い方

自動化の設定が完了したので,開発フローの中でどのように使うのか見ていきましょう.

2.1 チケットからブランチを作成する:TODO→WIP

打ち合わせなどで自分のタスクが決定し,Jiraに自分のタスクが割り当てられているとします.リモートリポジトリはすでに存在していて,チケットに対応する機能の開発を始めます.
まずチケットを開いてブランチを作成しましょう.

チケットを開いて,
スクリーンショット 2024-08-09 20.52.41.png

ブランチの作成をクリック
スクリーンショット 2024-08-09 20.53.13.png

すると以下のような画面に遷移するので,対象のリポジトリを選び,branch nameを決めます.branch nameは任意の命名ではなく,チケットのIDを含む物でなくてはなりません.今回はARCDEV-20という文字列を含むものにする必要があるので,文字列の後に,EdgeDetectionを追加して開発内容を明示します.
スクリーンショット 2024-08-09 20.54.42.png

するとその名前でブランチが作成されます. Githubの画面でも確認できますね.
あとは開発を行なって,最終的にはプルリクエストを作成することになります.
この段階で,タイムラインではチケットのステータスがWIP(開発中)に切り替わっていることがわかります
スクリーンショット 2024-08-09 20.58.39.png

TODOからWIPに変わっている!!

2.2 開発する:WIP

ガリガリ開発しましょう!!!

2.3 プルリクエストを作成する:WIP→REVIEW

さて,実装が済んだらメインブランチなどにプルリクエストを出します.こちらは Githubで作業します.

スクリーンショット 2024-08-09 21.11.01.png

プルリクを出すと,チケットのステータスがレビューへと自動的に変わっていますね.

2.4 マージする:REVIEW→DONE

さらにレビューが完了して,マージされると,チケットのステータスは完了へ遷移しました.これで実装が完了し,開発フローの工程が終了しました!!
 この流れでタスク割り当てと実装を行うことによって,チーム内での会議の効率から,個々の開発時の作業を効率化できるのではないでしょうか.
スクリーンショット 2024-08-09 21.14.24.png

3.終わりに

今回は僕たちのチームの開発フローに合わせて自動化を行っています.1チームの工夫に過ぎないのでチームごとに開発フローやタスクの粒度に合わせて自動化フローを決めると良いと思います.

やったこと

チケットのステータス遷移のオートメーションの利用により,Githubを用いた開発フローを効率化した.このフレームワークを確立し,それに従ってチケット割り当てを行うことで,タスク割の粒度も実装単位に整理される.

タスクの粒度について

 チケット1つはあるリポジトリで行っている開発の1機能に対応させる必要があります.タスクをメンバーに振り分ける時,チケットに対応する追加機能が複数だったり,ひとつ未満だったりすることは避けるように工夫する必要があります.
 一方タスク割り当てに無駄に制約がかかってしまう場合もあります.一つの参考にしていただけると幸いです.

  1. Jiraなどの「チケット」ってなあに?プロジェクト管理・タスク管理ツールも解説! #IT企業転職あるある
    によると本来「チケット」ではなく「課題」と呼ぶそうです🙇

  2. Jiraの活用事例 ~課題管理編~ #jira - Qiita

  3. 【6分で解説】タスク管理ツール「Jira」の使い方【基本操作4選】 - YouTube

  4. 【最終更新日2023年12月】Jira(クラウド版)のワークフローをテンプレからカスタマイズしてみた - リックソフトブログ

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?