Jira AutomationとGithubを連携してステータスとチケットを同期する

この記事は [セゾン情報システムズ Advent Calendar 2021](https://qiita.com/advent-calendar/2021/sisco) 4日目の記事です。

JiraにはGithubなどのSCMと連携する機能が備わっています。
これにより、以下のようなメリットがあると考えています。

- 開発進捗の見える化を実現できる
    - アジャイルボード
    - ダッシュボード、タイムラインなど
- 簡単に自動化処理が組み込める
    - チケットの更新忘れも防げます
- ワークフローのカスタマイズが容易
    - SCM側ではそこまで高機能なワークフロー機能がないのでJiraにそれらを任せることができます

## やってみよう
今回はGithubとJiraを接続してチケットのステータスと開発フローを同期したいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/f24b70a6-37b3-1665-4435-5ec159c83147.png)

### 事前準備
[Jira Cloud と GitHub の接続](https://ja.confluence.atlassian.com/adminjiracloud/connect-jira-cloud-to-github-814188429.html)を参考にJira、Githubそれぞれにアプリケーションをインストールして接続しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/75b62e60-ba0e-84d6-e79f-ca6dce2819b4.png)

### Jira Automationの設定
まずJiraプロジェクトを作成しワークフローにステータスを追加します。
今回は「チーム管理対象プロジェクト」で作成し、レビュー中のステータスを追加しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/e7568708-2d4f-c034-6819-440b80d22f17.png)
続いてAutomationのルールを作成していきます。

#### Automationルール① ブランチが作成されたら課題を「進行中」に移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/d1db514b-b94b-4230-fb43-afe27c895a3c.png)

#### Automationルール② プル リクエストが作成されたら課題を「レビュー中」に移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/c5daf985-429a-996d-8f9f-fd78863fc81f.png)


#### Automationルール③ プル リクエストがマージされたら課題を「完了」に移動
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/889e43ca-1f18-93dd-09ea-7ce7b6ef6121.png)

### 動作確認
***ブランチの作成***
Jiraに課題を作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/4fab558c-ae02-a115-8e31-402c22f9734b.png)
課題キーが必要になるので控えておきます。今回は```TTLT19-6```

Githubのリポジトリで作業ブランチを作成します。
この時、ブランチ名をJiraの課題キーにすることで連携が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/f769d1c4-2f83-f8b4-d016-60a32836b8f1.png)

Jiraに戻ると作業ブランチを切ったのでチケットが「進行中」に移動しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/575e102d-9c71-5f52-0a88-d344d91f12b2.png)

そしてチケットにはリポジトリでの作業が紐づいています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/c00c1dcd-c505-c3b0-d44f-7ae29c42da1a.png)
中身
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/75fab740-f60c-184e-d7ac-d024d0c07ea9.png)

### 変更のコミット
続いてソースコードに対してコミットを行い、先程のブランチにpushします。
※今回はGithub上で直接コミットしていますが本来はローカルにクローンして作業します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/7c857cb9-297b-ff63-045c-d04b20f06595.png)
こちらもコミットメッセージにJiraの課題キーを含めることで紐づけが行われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/e425015b-6fa8-8b52-2c06-505f91081b19.png)

Jira側でも関連するコミットが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/47cc9c67-1a0d-1a38-d835-36b5b705d84a.png)

### プルリクエストを作成
では作業ブランチをmainブランチにマージするため、プルリクエストを作成しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/8627b5b9-fc68-7f32-9e0b-fbf430ec07d3.png)

これによりJira課題はレビュー中に自動で遷移します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/b70c9a58-e0ec-6df6-cdec-9df7ae96ba64.png)

しっかりと課題からも確認可能で、プルリクエストのステータスも表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/af583368-6ec2-47e6-6a1b-8f0939cb5e38.png)

### mainブランチにマージ
プルリクエストの内容を確認出来たら、マージを行い、クローズします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/dec073b5-3410-1a2e-f50a-926e41de13b8.png)

これでJira課題は完了となります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/24c912b0-abbf-62c8-b35d-f795fb5493f4.png)

Jiraからもマージ済みであることが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206219/8046e488-3000-a02a-46c2-bc8403fbe752.png)

### おわりに
JiraとGitHubを連携することで開発タスクを効率的に管理することができました。
自動化を組み合わせることで開発者はブランチやコミットのルールさえ守っていれば意識せずに進捗の更新ができます。
他にもリリース管理やDevOpsとの連携も可能ですので是非色々触ってみてください。