2019年5月27日月曜日

RestAPIでredmineのチケット起票

経緯

ファイルサーバのディスク容量が切迫した時にアラートを通知する仕組みが必要になった。
社内環境であり、通知されて見る可能性があるのが

  • メール
  • Redmine

だけだった。
メール通知は社内のハードルが高かったのと、Redmineがrest apiでチケット発行できて
簡単だったのでRedmineに通知する方式を採用。
タイトルと説明だけ変えられるようにしていてそれ以外は固定。

コード

Param( [String]$title = "タイトル", [String]$desc = "説明", [String]$logFilePath = ".\Redminerest.log" ) $postUri = "http://[Redmineurl]/issues.json" # JSONパラメータ内容改修 $issue = @{ project_id = "1";  # プロジェクトID tracker_id = "22";   # トラッカーID subject = $title;   # タイトル assigned_to_id = "333"; # 担当者 ユーザID or グループID description = $desc.Replace("\r\n","`n") # 説明 } $issueJson = @{issue = $issue; key = "アクセスキー"} # 書き換えたパラメータをjson形式に戻す $postText = ConvertTo-Json $issueJson #body部(json)変換 $postBody = [Text.Encoding]::UTF8.GetBytes($postText) #Rest実行 $Redmine = Invoke-RestMethod -Method POST -Uri $postUri -Body $postBody -ContentType application/json echo " 発行されたRedmineのid:" + $Redmine.issue.id >> $logFilePath

注意点

  • 各ID取得方法

    Redmineから一覧を取得して使用するIDを探す

    ID URL
    プロジェクトID http://[Redmineurl]/projects.xml
    トラッカーID http://[Redmineurl]/trackers.xml
    ユーザID http://[Redmineurl]/users.xml
    グループID http://[Redmineurl]/groups.xml

    ※ 対象が多すぎると途中で切られる。取得する必要がある場合はパラメータを付ける。

    • 例) ユーザID200件

      http://[Redmineurl]/users.xml?limit=200

  • アクセスキーの取得方法

    1. 個人設定画面を開く
    2. 右側のサイドバー内「APIアクセスキー」欄の「表示」をクリック
  • APIを有効にする方法

    1. [管理]→[設定]画面の[API]タブ
      (Redmine 3.1以前の場合は[認証]タブ)を開く
    2. [RESTによるWebサービスを有効にする]をONにする
    3. [保存]ボタンをクリックして設定内容保存

ひっかかったこと

  • assigned_to_idについて

    ユーザidをassigned_to_idに入れて実行すると
    そのユーザが担当者に指定されたチケットが発行されることが確認できた。
    では、グループを指定したい場合はどのキーに指定すればよいのかと疑問に思い
    調査してもいまいち回答にたどり着けずにとりあえず試した結果
    assigned_to_idに入れるのが正解だった。
    ユーザidとグループidは通しの連番が設定される模様。

参考

http://Redmine.jp/glossary/r/rest-api/

0 件のコメント:

コメントを投稿

katalon studio 画面が静的になるまで待つ?smart waitという機能がある。これがあると入力動作が遅くなる。 停止方法 プロジェクト全体の設定 [Project]-[Settings]-[Execution]-[WebUI] 、一番上の [Default Sma...