#はじめに
アジャイル開発で利用することも多い「Jira」。
https://www.atlassian.com/ja/software/jira
Jiraでは、「ボード」でチケット(issue)のステータスを管理すると思います。
(プルリクを立てたら、ステータスを「REVIEW」にするみたいな。)
私が参加したプロジェクトにおいて、このチケットを手動で移動させておりました。
当然、自動化させた方が良いということで取り組んだものの、中々情報も少なかったので、今回記事にします。
#実現したこと
Githubのプッシュ、プルリク、マージされたタイミングで、Jiraのチケットのステータスが自動で移動させました。
###別解
このような連携は、Github Actionsを使用せず、「トリガー」を使う方法もあります。
https://ja.confluence.atlassian.com/adminjiracloud/configuring-workflow-triggers-776636696.html
しかし、「チーム管理対象プロジェクト」では上記の方法は使用できません。「企業管理対象プロジェクト」にのみ適用できます。
私が参加したプロジェクトは、「チーム管理対象プロジェクト」だったため、Github Actionsで実現させました。
#手順
基本的な手順は下記の記事を参考にしております。
Github ActionsでJira Cloudと連携してみた
Github Actions と jira を連携してイケイケな開発ライフを実現する
ここでは、上記記事を拡張させた内容を記載させて頂きます。
大まかな手順
①github for jiraの導入
②環境変数の設定
③github actionsの設定
#その他参考サイト
下記Gituhubのリポジトリも参考にしています。
https://github.com/marketplace/actions/jira-issue-transition
https://github.com/atlassian/gajira-find-issue-key
#実装
コミットメッセージにJiraの課題キー(例:KD-1)を含める点に注意して下さい。
下記ファイルをworkFlows配下に設置します。
プロジェクトに応じて、適宜修正して下さい。
to_progress.yml
# プッシュされた時、ステータスを「進行中」に移動
on:
push:
branches:
- '*'
- '!develop'
name: Transition Issue
jobs:
test-transition-issue:
name: Transition Issue
runs-on: ubuntu-latest
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
# プッシュされたコミットメッセージに記載された課題キーを抽出する
- name: Find in commit messages
id: find
uses: atlassian/gajira-find-issue-key@master
with:
string: ${{ github.event.ref }}
# 課題キーが特定できればJiraに対してトランジションを発行
- name: Transition issue
uses: atlassian/gajira-transition@master
# 課題キーが含まれていなければスルー
if: ${{ steps.find.outputs.issue }}
with:
# 前のステップのアウトプットを参照
issue: ${{ steps.find.outputs.issue }}
transition: "In progress"
to_review.yml
# プルリク時に、「REVIEW」に移動
on:
pull_request:
branches:
- develop
name: Transition Issue
jobs:
test-transition-issue:
name: Transition Issue
runs-on: ubuntu-latest
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
# プッシュされたコミットメッセージに記載された課題キーを抽出する
- name: Find in commit messages
id: find
uses: atlassian/gajira-find-issue-key@master
with:
string: ${{ github.event.pull_request.title }}
# 課題キーが特定できればJiraに対してトランジションを発行
- name: Transition issue
uses: atlassian/gajira-transition@master
# 課題キーが含まれていなければスルー
if: ${{ steps.find.outputs.issue }}
with:
# 前のステップのアウトプットを参照
issue: ${{ steps.find.outputs.issue }}
transition: "REVIEW"
to_deployed.yml
# developブランチにマージされた時、「deployed」に移動
on:
pull_request:
branches:
- develop
types: [closed]
name: Transition Issue
jobs:
test-transition-issue:
name: Transition Issue
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true
steps:
- name: Login
uses: atlassian/gajira-login@master
env:
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
# プッシュされたコミットメッセージに記載された課題キーを抽出する
- name: Find in commit messages
id: find
uses: atlassian/gajira-find-issue-key@master
with:
string: ${{ github.event.pull_request.title }}
# 課題キーが特定できればJiraに対してトランジションを発行
- name: Transition issue
uses: atlassian/gajira-transition@master
# 課題キーが含まれていなければスルー
if: ${{ steps.find.outputs.issue }}
with:
# 前のステップのアウトプットを参照
issue: ${{ steps.find.outputs.issue }}
transition: "DEPLOYED"
#リポジトリ
Githubのリポジトリも公開しております。
https://github.com/kondo97/jira_github
#おわり
不備、不明点があれば、お手数ですがコメントにてお伝え下さい。