Github ActionsでJira Cloudと連携してみた


この記事は セゾン情報システムズ Advent Calendar 2020 11日目の記事です。

最近Actions熱が高まっており、いろいろと触って遊んでみました。
手始めに、ニーズがあるかというと微妙な感じですが、ActionsとJiraを連携させてみました。

利用したActions

Marketplaceに公開されていたAtlassian公式のActionsを利用させていただきました。

事前準備

  • Github.comに任意のリポジトリを作成する
  • Jira Cloudに任意のプロジェクトを作成する
    ※両方Freeプランで利用可能です

環境変数(Secret)を設定

Actionsから利用するSecretをリポジトリの「Settings」→「Secrets」に追加する

  • JIRA_API_TOKEN
  • JIRA_BASE_URL
    • JiraインスタンスのURL。 例:https://{yourdomain}.atlassian.net
  • JIRA_USER_EMAIL
    • アクセストークンを作成したユーザーのメールアドレス

Githubにissuesが作成されたらJiraのタスクを起票する

「Actions」タブの「New workflow」から新規ワークフローを作成

create-issues.yml

name: Jira Example

on:
  issues:
  push:
    types: [opened]

jobs:
  build:
    runs-on: ubuntu-latest
    name: Jira Example
    if: github.event.action == 'opened'
    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: Jira Create issue
      uses: atlassian/[email protected]
      with:
        # プロジェクトキーを指定
        project: AC
        # 課題タイプを指定
        issuetype: Task
        # issuesのタイトルが要約になるように設定
        summary: ${{ github.event.issue.title}}
        # issuesの本文が説明になるように設定
        description: ${{ github.event.issue.body}}

issuesを作成してみると。。。

ワークフローが動き出し。。。

Jiraにタスクが作成されました!!

変更がプッシュされたら課題を「進行中」に遷移させる

今作ったisssuesに対応したソースコードをプッシュした際にJira側のタスクもステータスを遷移してもらいます。

もう一つワークフローを作成

transition-issues.yml
on:
  push

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: "進行中"

ブラウザで適当にREADME.mdを更新してコミット
※本来はローカルでちゃんとブランチ切ってPRを出しましょうw
コミットメッセージに先程作成された「AC-4」という課題キーを含める

ワークフローが起動し。。。

ステータスが遷移しました!!!

おわりに

今回試した機能はJiraのGithub用アドオン、スマートコミットでもできることではありますが、他にも面白い連携(コード内のTODOコメントを検知して課題を作成したり)がありますので引き続き触ってみようと思いました。

またGithub内の豊富なトリガーから起動できる点はアドオンには再現できないので、もっとユースケースが増えていくことを期待します。