Automation for Jira - 課題のウォッチャー リストにプロジェクト ロールのメンバーを追加するルールを作成する方法

プラットフォームについて: Data Center のみ。 - この記事は、 Data Center プラットフォーム

この KB は Data Center バージョンの製品用に作成されています。Data Center 固有ではない機能の Data Center KB は、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。 Server* 製品のサポートは 2024 年 2 月 15 日に終了しました。Server 製品を実行している場合は、 アトラシアン Server サポート終了 のお知らせにアクセスして、移行オプションを確認してください。

*Fisheye および Crucible は除く

要約

この記事では、プロジェクト ロールのメンバーを Jira 課題のフォロー リストに自動的に追加する自動化ルールをアドオン Automation For Jira (Jira Server/Data Center 用) で作成する方法について説明します。

機能リクエスト https://jira.atlassian.com/browse/JIRAAUTOSERVER-826 で説明されているように、ウォッチャーの管理アクションにはいくつかの制限があります。

  • ウォッチャーは以下の方法以外では追加できません。

    • 特定のユーザーを一覧表示する

    • スマート値を使用してユーザー ピッカー フィールドからユーザーをコピーする

  • ただし、以下をウォッチャー リストに追加することはできません。

    • グループに属するユーザー

    • プロジェクト ロールに属するユーザー

この記事では、このような制限を回避する方法についていくつかの提案を示しています。

ソリューション

次のようなルールを構成しようとしているとしましょう。

  • 新しい Jira 課題が作成されるとトリガーされる

  • 担当者が開発者ロールに含まれる場合は自動的に開発者ロールのメンバーを追加する

このユース ケースで機能する自動化ルールを実装する方法は以下の 2 つです。

  • 有料のサードパーティ アドオン ScriptRunner for Jira を使用しない方法

    • この方法はアトラシアンのサポート対象

  • 有料のサードパーティ アドオン ScriptRunner for Jira を使用する方法

    • この方法はアトラシアンのサポート対象外

解決策 1 - ScriptRunner アドオンを使用しない

最初のステップ

新しいカスタム フィールドの作成

  • ⚙ > [課題] > [カスタム フィールド] に移動します。

  • 新しいフィールド タイプ [ユーザー ピッカー (複数ユーザー)] を作成します。

ユーザー ピッカー カスタム フィールドを作成する
  • 次のように操作します。

    • ルールを構成したいプロジェクトでそのフィールドを使用できるようにフィールド コンテキストを構成します。

    • ルールを構成したいプロジェクト内のすべての課題タイプで使用する [課題編集画面] にこのフィールドを追加します。

プロジェクト ロール ID の取得

  • <JIRA_BASE_URL> を Jira Base URL に置き換え、<PROJECT_KEY> をプロジェクト キーに置き換えてから、管理者ユーザーとして Jira にログインしていることを確認して、ブラウザの新しいタブで以下の URL を開きます。

<JIRA_BASE_URL>/rest/api/2/project/<PROJECT_KEY>/role/

  • 出力を確認して、対象のロールの横にある URL の末尾にある ID を取得します。

    • 下の例では、開発者ロールの ID は 10102 です。

PAT (個人用アクセス トークン) の作成

  • 個人用アクセス トークンは次の手順で作成します。

  • ユーザー プロファイルに移動します (アバターをクリック)。

  • [個人用アクセス トークン] メニューをクリックします。

個人用アクセス トークンを作成する

ルール構成

ルールは次のように構成する必要があります。

  • トリガー [課題の作成時] を追加します。

  • 次のパラメーターを使用して [ユーザー条件] を追加します。

    • ユーザー

      : 担当者

    • 実行するチェック

      : 指定したロールに含まれているかどうか

    • 基準

      : 対象のロールを選択 (例: 開発者)

  • 以下のパラメーターを使用して [Web リクエストを送信] アクションを追加します。

    • Webhook URL: <JIRA_BASE_URL> を Jira ベース URL に、<PROJECT_KEY> をプロジェクト キーに、<ROLE_ID> を準備手順で特定した ID に置き換えた後、以下の URL をコピーします。

<JIRA_BASE_URL>/rest/api/2/project/<PROJECT_KEY>/role/<ROLE_ID>

  • ヘッダー: 準備手順で生成された個人用アクセス トークンに <PAT> を置き換えた後、次のようなヘッダーを 1 つ追加します。

    • 名前: Authorization

    • : Bearer <PAT>

  • HTTP メソッド: GET

  • 応答待ち: このオプションをオンにします。

    ルールを適切に機能させるには、このオプションをオンにする必要があります。

  • 以下のパラメーターを使用して [課題の編集] アクションを追加します。

    • 設定するフィールドを選択...

      : 準備手順で作成したマルチユーザー ピッカー フィールドを選択します。

    • : 以下のスマート値をコピーします。

{{webhookResponse.body.actors.name}}

  • [課題データを再取得] アクションを追加します。

    • マルチユーザー ピッカー フィールドの新しい値が再読み込みされるため、ルールを機能させるにはこのアクションが必要です。

  • 以下のパラメーターを使用して [ウォッチャーの管理] アクションを追加します。

    • これらのウォッチャーを追加します。

      • <MULTI_USER_PICKER_FIELD_NAME> を、準備手順で作成したフィールドの名前に置き換えた後、以下のスマート値を追加します。

{{issue.<MULTI_USER_PICKER_FIELD_NAME>}}

  • たとえば、フィールド名が「Multi user picker list」の場合は次のようになります。

{{issue.Multi user picker list}}

ルールを示すスクリーンショット

Web リクエストを送信する自動化ルールを作成する

解決策 2 - ScriptRunner アドオンを使用する

: サードパーティ アドオン ScriptRunner for Jira を使用する必要があるため、アトラシアンではこの解決策をサポートしていません。このナレッジ ベース記事ではあくまで参考としてこの解決策を紹介します。

ルール構成

  • [課題の作成時] トリガーを追加します。

  • 次のパラメーターを使用して [ユーザー条件] を追加します。

    • ユーザー: 担当者

    • 実行するチェック: 指定したロールに含まれているかどうか

    • 基準: 対象のロールを選択 (例: 開発者)

  • <PROJECT_ROLE> をプロジェクト ロールの名前に置き換えた後、以下のコード スニペットを使用して [ScriptRunner スクリプトを実行する] アクションを追加します。

import com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.issue.watchers.WatcherManagerimport com.atlassian.jira.security.roles.ProjectRoleManagerimport com.atlassian.jira.security.roles.ProjectRoleWatcherManager watcherManager = ComponentAccessor.getWatcherManager()ProjectRoleManager projectRoleManager = ComponentAccessor.getComponentOfType(ProjectRoleManager);ProjectRole rolePO = projectRoleManager.getProjectRole( "<PROJECT_ROLE>")if( projectRoleManager.isUserInProjectRole( issue.getAssigneeUser(), rolePO, issue.getProjectObject() ) ) {projectRoleManager.getProjectRoleActors( rolePO, issue.getProjectObject()).getUsers().each { po ->watcherManager.startWatching(po, issue)}}

ルールを示すスクリーンショット

Automation for Jira を使用してスクリプトを実行する

更新日時: 2024 年 7 月 11 日

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。