4
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?

More than 3 years have passed since last update.

JiraとGithubを連携。Jiraのチケットを自動で動かしてみる。

Posted at

#はじめに
アジャイル開発で利用することも多い「Jira」。
https://www.atlassian.com/ja/software/jira

Jiraでは、「ボード」でチケット(issue)のステータスを管理すると思います。
(プルリクを立てたら、ステータスを「REVIEW」にするみたいな。)

私が参加したプロジェクトにおいて、このチケットを手動で移動させておりました。
当然、自動化させた方が良いということで取り組んだものの、中々情報も少なかったので、今回記事にします。

ボード.png

#実現したこと
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

#おわり
不備、不明点があれば、お手数ですがコメントにてお伝え下さい。

4
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
4
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?