GitHubのプルリクマージでJIRAの修正バージョンを自動付与する

こんにちは。サーバサイドエンジニアの藤原です。

1年ぶりに登場しました。おひさしぶりです。
JIRAの使い方シリーズの第1弾です。

こちらは、HRBrain Advent Calendar 2021 18日目の記事です。 qiita.com

やりたいこと

GitHubのプルリクをマージすると、該当のJIRA Issueに次にリリースするバージョンが自動的に付与されるようにする。

こちらを実現する方法を説明します。 使うのは、JIRAとGitHubだけです。

前提

  • JIRAプロジェクトを作成する
    • 例:HOGE
  • JIRAの修正バージョンを作成する
    • 例:v1.2.3
  • GitHubのプルリクタイトルにJIRAプロジェクトのキーを入れるルールにしておく
    • 例:HOGE-123: feat: ◯◯追加

こちらの詳細は割愛させていただきます。

設定手順

JIRAのAutomationを作成

JIRAにはAutomationというJIRA独自のワークフローを組める仕組みが用意されていますので、そちらを利用します。

Automationのページを開き、ルール作成開始

  • 対象のプロジェクトを選択 > Project settingsを選択
    f:id:fujiwam:20211217205053p:plain:w200

  • Automationを選択
    f:id:fujiwam:20211217205317p:plain:w200

  • Create ruleをクリック
    f:id:fujiwam:20211217210935p:plain

Trigger設定

JIRAのAutomationを発火させるためのWebhook URLを払い出します。

  • Incoming webhookを選択
    f:id:fujiwam:20211217211537p:plain

  • webhookを設定
    f:id:fujiwam:20211217212142p:plain

    • Webhook URLは自動生成されていると思います。
      • こちらは後ほどGitHubのWebhookに設定しますので、どこかにメモ📝を。
    • Execute this automation rule with:Issues provided by running the following JQL searchを選択
    • JQLには以下のように記載。※JIRAプロジェクト名の部分(HOGE)は適宜変更してください。

      key = "{{webhookData.pull_request.head.ref.match(".*(HOGE\-[0-9]+).*")|webhookData.pull_request.title.match(".*(HOGE\-[0-9]+).*")}}"
      
      • これは、GitHubから送られてくるデータをパースして、GitHubプルリクのタイトル等に含まれるJIRAのキーをkey設定するという内容の構文です。
      • keyを設定すると以降の処理でJIRAのキーに一致するIssueに対して操作してくれます。
      • ※JQLとは、JIRA Query Language(JIRAクエリ言語)のことです。SQLに似た構文で、JIRA上のデータ等の高度な検索ができます。
    • 設定ができたら、右下のSaveボタンをクリック

条件を設定

GitHubのプルリクがmainブランチにマージされたときにだけAutomationが動作するようにします。
※ここの条件はブランチの運用方法によって適宜変更してください。

  • New conditionを選択
    f:id:fujiwam:20211217220125p:plain

  • If / else blockを選択
    f:id:fujiwam:20211217220435p:plain

  • 条件を設定

    • Add conditions...をクリックして、Advanced compare conditionを選択

      • 以下、4つの条件を指定
        • {{webhookData.pull_request.merged}} equals true
        • {{webhookData.pull_request.state}} equals closed
        • {{webhookData.pull_request.base.ref}} equals main
        • {{webhookData.action}} equals closed
        一覧 詳細
        f:id:fujiwam:20211217221303p:plain:w500 f:id:fujiwam:20211217221409p:plain:w400
    • 設定ができたら、右下のSaveボタンをクリック

Actionを設定

JIRAのIssueのFix versions(修正バージョン)次にリリースするバージョンが入るようにします。

  • New actionを選択
    f:id:fujiwam:20211217223723p:plain:w400

  • Edit issueを選択
    f:id:fujiwam:20211217223902p:plain:w400

  • Fix versionsにチェック
    f:id:fujiwam:20211217224034p:plain:w400

  • Next unreleased versionを選択
    f:id:fujiwam:20211217224157p:plain:w400

  • 設定ができたら、右下のSaveボタンをクリック

ルールの名称等の設定

  • Rule detailsを選択して、名称等を設定
    f:id:fujiwam:20211217230146p:plain

  • 設定ができたら、右下のSaveボタンをクリック

ルールを保存&有効化する

  • Turn it onボタンをクリック
    f:id:fujiwam:20211217231203p:plain ※画面右上に表示されるPublish ruleボタンでもOK

  • ここまでの設定で、全体はこのようになってます
    f:id:fujiwam:20211218051829p:plain:w400

GitHubのWebhookを設定

  • Webhooks登録ページを開く
    https://github.com/<アカウント名>/<リポジトリ名>/settings/hooks
  • Add webhookボタンをクリック
  • 設定を埋めていく
    • Payload URL:先程JIRAのAutomationルール作成時に払い出したWebhook URLを記載する
    • Content typeapplication/json
    • SSL verificationEnable SSL verification
    • Which events would you like to trigger this webhook?Let me select individual events.
      • Pull requestsにチェックを入れる
    • Activeにチェックを入れる
  • 保存する

動かしてみる

  • GItHubでタイトルにJIRAのIssueキー(例、HOGE-123)を含んだプルリクを作成し、mainブランチにマージします
  • JIRAの該当のIssueを確認すると修正バージョンが付与されていることが確認できました👏
    f:id:fujiwam:20211217234147p:plain:w300
  • HistoryにもAutomationが修正バージョンを付与してくれた内容が残ってます
    f:id:fujiwam:20211217234352p:plain:w400
  • AutomationのAudit logからも詳細を確認可能です
    f:id:fujiwam:20211217234647p:plain:w400

まとめ

JIRAのAutomationは他にも色々できるので、ぜひ試してみてください。
それでは、JIRAの使い方シリーズ第2弾をご期待ください!

HRBrainでは一緒に働く仲間を募集してます。あなたのご応募お待ちしてます! www.hrbrain.co.jp