今回は、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"}}