Powershell で Jira のタスクを作成する

運用・保守

今回は、Jira のタスクを Powershell から作成してみます。

Jira については、以前のブログでアカウント作成方法を記載していますので併せてご参照ください。

JiraPS をインストール

Jira には、REST API が公開されています。

Powershell からも REST API を使って様々な管理ができますが、少し複雑なコードが必要になります。そこで、もっと簡単な方法として、「JiraPS」があります。

「JiraPS」も REST API を利用していますが、便利な Cmdlet が定義されていて API を利用する手続き処理が簡素化できます。

「JiraPS」のインストールは非常に簡単です。Powershell 5.1 を実行して以下のコマンドを実行するだけです。

Install-Module JiraPS -Scope CurrentUser

Jiraへの接続

「JiraPS」を使って Jira サーバに接続するには、まず Jira サーバと認証情報が必要です。

Jira サーバを定義

以下のコマンドで Jira サーバを定義します。

Import-Module JiraPS
Set-JiraConfigServer -Server "https://<your-site-name>.atlassian.net"

認証情報について

JiraPS の認証情報は、API トークン を利用します。以下の URL にアクセスします。

利用ユーザーでログイン後、「API トークンを作成する」をクリックします。

任意の①ラベル名を入力し、②「作成」をクリックします。

API トークンが表示されます。①「コピーする」でクリップボードに保存し、②「閉じる」をクリックします。

※ API トークンは1度限りしか表示されません。必ずコピー&ペーストなどで控えてください。
トークンが分からなくなってしまった場合は、一旦トークンを削除して再作成することも可能です。

Powershellで認証情報を入力

認証画面を表示して、API トークンを作成したユーザ名とパスワードに、作成した API トークンを入力します。

$cred = Get-Credential

接続

Jira サーバに接続します。

New-JiraSession -Credential $cred

新しいタスクを作成

Jira に新しいタスクを作成する場合、New-JiraIssue を使用します。

必須属性

タスクを作成する前にタスクの登録時に必須の項目を表示してみます。

(Get-JiraIssueCreateMetadata -Project TEST -IssueType "タスク" | ? {$_.Required -eq $true}).key

上記コマンド結果は、以下の4つの属性でした。

issuetype
project
reporter
summary

上記コマンドの TEST は、プロジェクトを作成したときの Key です。プロジェクト名ではないので注意してください。

Reporterのエラー

New-JiraIssue のページには以下のように記載されています。

New-JiraIssue [-Project] <String> [-IssueType] <String> [-Summary] <String> [[-Priority] <Int32>]
 [[-Description] <String>] [[-Reporter] <String>] [[-Labels] <String[]>] [[-Parent] <String>]
 [[-FixVersion] <String[]>] [[-Fields] <PSCustomObject>] [[-Credential] <PSCredential>] [-WhatIf] [-Confirm]
 [<CommonParameters>]

ここで、以下のようなコマンドを実行してみるとエラーになってしまいます。

New-JiraIssue -Project TEST -IssueType "タスク" -Summary "テスト" -Reporter "TestUser"
Invoke-JiraMethod :
reporter
--------
報告者は必須です。
発生場所 C:\Users\TestUser\Documents\WindowsPowerShell\Modules\JiraPS\2.14.6\JiraPS.psm1:3844 文字:27
+             if ($result = Invoke-JiraMethod @parameter) {
+                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidResult: (:) [Invoke-JiraMethod]、RuntimeException
    + FullyQualifiedErrorId : InvalidResponse.Status400,Invoke-JiraMethod

Reporter は ID を指定する必要があるという情報を見つけました。

ユーザIDは、ブラウザでユーザプロファイルを表示するための URL 最後のパス名です。

https://<your-site-name>.atlassian.net/jira/people/123456789012345678901234

エラーの回避方法

Fields 引数で ハッシュ値として reporter の id を指定することで New-JiraIssue の実行でタスクを作成することができました。

New-JiraIssue -Project TEST -IssueType "タスク" -Summary "テスト" -Fields @{ "reporter" = @{"id" = "123456789012345678901234"}}
Key              Summary                                                  Status                   Created
---              -------                                                  ------                   -------
TEST-1           テスト                                                   To Do                    2022/0X/0X XX:XX:XX

まとめ

今回は、JiraPS を使用して、Jira に 新しいタスクを作成する方法をご紹介しました。必須項目が公開されているドキュメントに準じて指定してもエラーになってしまうので、工夫が必要でしたが、何とか運用に耐えられる実行結果を得られました。

PNCでは、システム運用サービスをご提供しています。システム運用でお困りのことがございましたら、お気軽にお問合せください。

参考として今回のスクリプトすべて記載しておきます。

Install-Module JiraPS -Scope CurrentUser
Import-Module JiraPS
Set-JiraConfigServer -Server "https://<your-site-name>.atlassian.net"
$cred = Get-Credential
New-JiraSession -Credential $cred
(Get-JiraIssueCreateMetadata -Project TEST -IssueType "タスク" | ? {$_.Required -eq $true}).key
New-JiraIssue -Project TEST -IssueType "タスク" -Summary "テスト" -Fields @{ "reporter" = @{"id" = "123456789012345678901234"}}
タイトルとURLをコピーしました