tafuji's blog

C#, Xamarin, Azure DevOps を中心に書いています。

Azure DevOps REST API を使ってみよう

はじめに

この記事は、Azure DevOps Advent Calendar 2019 の23日目の記事です。 Azure DevOps REST API の入門記事です。Azure DevOps は既定で様々なサービスと連携することができるので、REST API を使う機会はまれかもしれませんが、知っておくと便利なこともあるかもしれません。(例えば、Azure DevOps にユーザーを追加するアプリをノンコーディングで作成することもできます。)

まとめ

  • Azure DevOps には、REST API が提供されていて、この API を利用すると自作アプリから Azure DevOps 上のいろいろなサービスを利用することができる
  • 最も簡単な認証方法は、PAT(Personal Access Token)を利用した基本認証
    • もちろん、その他の様々な認証方式をサポートしている
  • Fiddlercurl などから叩いて試すことができる(今回の記事の内容)
  • C# から呼び出したいときは、このあたりのサンプルを参考にすればよい

Azure DevOps REST API を使う

PAT(Personal Access Token) を取得

API の認証で利用する PAT を取得します。

1. User settings のメニューを表示

  1. Azure DevOps のページで、自分のアイコンを選択する
  2. […] を選択する
  3. [User settings] を選択する

go-to-usersettings

2. PAT を選択

表示されたメニューの中から、[Personal access tokens] を選択します。

select-pat

3. [+ New Token] を選択する

Personal Access Tokens のページで、[+ New Token] を選択します。

new-token

4. トークン名、有効期間、スコープを選択してトークンを作成する

項目 説明
Name トークンの名前を入力します。
Organization トークンを作成する Azure DevOps の組織名を選択します。
Expiration トークンの有効期限を設定します。最長で1年間。トークンを作成した後、有効期限を伸ばすこともできます。
Scopes トークンの権限を指定します。今回は、Full access で実験しています。

create-pat

5. 作成したトークンを保存しておく

作成したトークンをコピーして、保存しておきます。

create-pat

REST API を呼び出す

取得した PAT をもとに、FiddlerREST API を呼び出していきます。

  1. チームプロジェクトのリストを取得する
  2. プロジェクトのビルドのリストを取得する
  3. ビルドをキューに入れる

0. 注意事項

1. {organization} の値は?

Azure DevOps にアクセスしたときに表示される URL で dev.azure.com/{organization} に該当する部分です。例えば、以下のような URL のときは、azdevopsiscool がその値になります。

https://dev.azure.com/azdevopsiscool/
2. 基本認証で使うヘッダー値の生成

基本認証では、ユーザー名とパスワードを: でつなげて、Base64 エンコードして送信する必要があります。 Fiddler の [TextWizard] を利用すると Base64 エンコードした文字列を生成することができます。Fiddler で [Text Wizard] を選択します。

text-wizard

[Text Wizard] の上の部分に、[ユーザー名]:[Personal Access Token] の形式で文字列を入力します。なお、[ユーザー名] は、どんな名前でもかまいません。

base64

[Text Wizard] に Base64 エンコードされた文字列が表示されるので、この値をコピーしておき、API を呼び出すときには、HTTP ヘッダーに値を設定して送信してください。(Authorization: Basic [Base64 エンコードした文字列]

base64

1. チームプロジェクトのリストを取得する

以下の API を利用して、自分の組織内のプロジェクトのリストを取得します。

Fiddler の [Composer] でリクエストURL、基本認証の HTTP ヘッダー値を設定して、[Execute] ボタンを押します。

projects-list

Azure DevOps にあるプロジェクトのリストが JSON で返却されていることが分かります。

projects-list-response

2. プロジェクトのビルドのリストを取得する

次は、プロジェクト内のビルドのリストを取得する API を呼び出します。

API のリファレンスには、{project} の値が必要であることが記載されています。

GET https://dev.azure.com/{organization}/{project}/_apis/build/builds?api-version=5.1

{project} の値は、プロジェクト ID かプロジェクト名です。先ほど、プロジェクトのリストを取得する API を呼び出しましたが、そのレスポンス JSON の中にプロジェクト ID を見つけることができます。

project-id

図の例では、2b518d54-7469-496a-aef3-c5a6b4addca5 という GUID 値になります。 {project} の値を利用して、Fiddler の [Composer] からリクエストを送ります。

builds-list

プロジェクトに定義されているビルドのリストが JSON で返却されることが分かります。

builds-response

3. ビルドをキューに入れる

最後に、プロジェクトに定義されているビルドをキューに入れて、Azure DevOps で自動ビルドを行う API を呼び出します。

この API は、POST リクエストを送る必要があります。API リファレンスを見ると、多くのパラメータが必要なように思われますが、リクエストの Body 野中にビルド定義の ID を含めて送れば、ビルドをキューに入れることができます。 なお、ビルド定義の ID は、ビルドのリストを取得する API を呼び出したときのレスポンスの中に含まれています。

build-definition-id

この ID 値を利用して、ビルドをキューに入れる API を呼び出します。リクエストヘッダで Content-Type: application/json を指定し、リクエストの Body に JSON{ "definition": { "id": [ビルド定義の ID] } } を設定する必要があります。

builds-queue

API を呼び出すと、Azure DevOps 上でビルドが開始されます。

builds-queue-result