Azure DevOps カスタムプロセスで追加した項目の取得
Azure DevOps オンライン #2 に参加しました
Stay Home な ゴールデンウィークでしたが、ありがたいことに TFSUG でオンライン勉強会を開催していたので参加させていただきました。
内容はこちら kkamegawa.hatenablog.jp
Azure DevOps を実践で使い始めたので、非常に勉強になりました。
ありがとうございます。
カスタム項目が REST API で取得できない?
上記のブログの中には記載されていませんが、当日以下の質問をさせていただきました。
プロセスをカスタマイズして追加した項目について、REST API の作業項目取得で追加項目は含まれますか?
(以前検証したときは取得できない気がしました)
黄色く囲った部分(デフォルトでは存在しない)を REST API でとりたいという話です。
私もさすがにこれはできると思っていましたが、ぱっと試した時には取れなかったので、
特殊な取得方法があるのかと思って質問させていただきました。
勉強会のタイミングでは「取れるはず。取れなければバグ。」と回答頂いたので、再度検証しました。
結論
以下のAPIを使って、追加項目も普通に取得できました。 docs.microsoft.com
ただし、注意が必要なのが
「値が入っているフィールドしか結果に入ってこない」
ということです。
これは既存プロセスの既存項目でも同じでした。
以下はフィールドに値を入れなかった時と入れたときの結果(json)の違いです。
値がない場合は、結果に入ってきません。
以前試した時は、値を入れてなかった気がするので、これが取得できないと思った原因でした。
特に変わったことはしていませんが、REST API で項目取得をするのに使ったコードも載せておきます。
gist.github.com
Azure DevOps Server の REST API エラーでハマった
Azure DevOps Server (オンプレの方) が必要になったので、REST APIの検証していたのですが、
叩く API によって、エラーが返ってくるので悩んでいました。
エラーになる API と 実行結果
例えば、エラーになる REST API はこちらです。 docs.microsoft.com
API の結果がこちら。
{"$id":"1","innerException":null,"message":"searchPlatformConnectionString","typeName":"System.ArgumentException, mscorlib","typeKey":"ArgumentException","errorCode":0,"eventId":0}
こちらの REST API はエラーになりません。 docs.microsoft.com
原因
管理コンソールで検索サービスの構成がされていなかったのが原因でした。
画像は構成済ですがエラーが出る場合は、ここが未構成状態になっています。
エラーになる API は クエリを POST していたので、クエリを使うものがエラーの対象となる可能性が高いです。(未検証)
検索サービスを使わずに運用回避
やりたいことは作業項目を特定の条件で取得することだったので、事前に Boards のクエリで作成しておいて、REST API で叩くことにしました。 docs.microsoft.com
まとめ
大半の人は、Azure DevOps Services(クラウドの方)を使うと思うので、このエラーには遭遇しないと思いますが、誰かの助けになれば・・・