パワーシェルでAzure devops APIから始めてください


私は、クライアント、チームとプロジェクトの異なる種類のために毎日azure devopsを使います.私はボードを必要とするたびにアクセスを設定する必要があります、テスト計画や他のazure devopsサービス.また、倉庫やボードの設定方法を決定する必要があります.時々、私は仕事アイテムを輸入するか、Wikiを初期化しなければならないかもしれません.
一部の組織またはいくつかのプロジェクトについては、コンプライアンス、セキュリティおよびライセンス管理のユーザー設定を確認する必要があります.
これらのタスクは、手動で、時間がかかると私は常に何かを行うことを忘れている.
しかし、Azure devopsサービスを自動化する方法があります.このAPIを使用すると、私が言及したアクションを実行することができます.この短いブログのポストについて説明します.
注意してください、私はPowerShellを使用するが、あなたの選択の言語を選択することができます.APIバージョン5.1を使用します.ドキュメントは見つかりますhere
第一に、我々はAzureデビアス組織に認証する方法が必要です.Azureのアクティブなディレクトリを使用するか、個人のアクセストークンを使用して、Azure devopsに認証する2つの方法があります.それは状況に依存し、何を構築する必要があります.Azure Active Directory Accessの場合は、クライアントライブラリ(. NETとPowerShell)を必要とします.
第一に、我々はAzureデビアス組織に認証する方法が必要です.Azureのアクティブなディレクトリを使用するか、個人のアクセストークンを使用して、Azure devopsに認証する2つの方法があります.それは状況に依存し、何を構築する必要があります.Azure Active Directory Accessの場合は、クライアントライブラリ(. NETとPowerShell)を必要とします.
個人的なアクセストークンを作成するには、この組織のAzure devopsにログインします.右上隅にあるユーザーアイコンをクリックします.

を選択します
次に、“新しいトークン”をクリックします.トークンの名前、有効期限、組織アクセス、適用するスコープ、すべてのスコープ、または作業項目のアクセス、コード(Gitリポジトリ)、ビルド、リリース、テスト、パッケージングを指定するように求められます.

スコープの定義は、アプリケーションにとって重要ですこれは、トークンに関連付けられたアプリケーションがAzure Devopsサービスと対話する方法を定義します.APIをテストしていない場合は、完全なアクセスを選択しないでください.
“作成”ボタンを押すと、トークンが表示されます.確実にトークンを保存することを確認し、後でそれを取得する方法はありません!
Azure Devops Service REST APIにアクセスするには、HTTPリクエストごとに基本認証ヘッダーをサービスに送信する必要があります.基本認証HTTPヘッダーは以下のようになります
認定基本
資格情報はbase 64エンコードされる必要があります.PowerShellではこのようにします.
$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }
基本との間の余分な空白を忘れないでください
Azure devops APIに認証する方法を知ったので、APIで何ができるかを見てみましょう.
最初に我々のURIを構築する必要があります.APIを使用すると、すぐに別のURIに気づくでしょうhttps://dev.azure.com or https://vssps.dev.azure.com そして、より多く.ほとんどの場合、URIが有効にするには、少なくとも組織名を含める必要があります.
https://dev.azure.com/ or https://vssps.dev.azure.com/
今、我々はAPIに掘り出し始めることができます.まず、組織内のすべてのプロジェクトの一覧を取得しよう.
最後に、私たちは
https://dev.azure.com//_エイプORhttps://vssps.dev.azure.com//_原研
これはほとんどの操作に対するベースURIです.
組織内のプロジェクトのリストを取得してみましょう.
$AzureDevOpsPAT = "ocd2rrtds7bj6mff6jcxjllmaaXXXXXXXXXXXXXXXXXXXXXXXX"
$OrganizationName = "DEMOXXXXXXXXXXXXXXX"

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }

$UriOrga = "https://dev.azure.com/$($OrganizationName)/" 
$uriAccount = $UriOrga + "_apis/projects?api-version=5.1"

Invoke-RestMethod -Uri $uriAccount -Method get -Headers $AzureDevOpsAuthenicationHeader 
APIは2つの要素を返します.カウント、現在の組織と値のプロジェクトの数、名前、ID、可視性、改正、URIと各プロジェクトの最後の更新時間を持つ配列.
今、残りのAPIを使用して新しいプロジェクトを追加できますか?
プロジェクトを作成するには、名前、オプションの説明、可視性(プライベートまたはパブリック)、ソースコントロール(GitまたはTFS)とプロセスモデルを提供する必要があります.
私たちはプロセスモデルIDと名前だけを必要とします.これは、プロセスモデルを作成できるためです.
プロセスモジュールIDを取得するには、APIに別のリクエストを使用してこれらのIDを取得する必要があります.
$uriProcess = $UriOrga + "_apis/process/processes?api-version=5.1"
Invoke-RestMethod -Uri $uriProcess -Method get -Headers $AzureDevOpsAuthenicationHeader
プロジェクトを追加するには、リクエスト本文を構築することができます.プロセステンプレートでは、基本的なプロセスを選択します.
$projectConfiguration = @{
        "name" = "TestProject"
        "description" = "Test Project"
        "ProjectVisibility" = "private"
        "capabilities" = @{
            "versioncontrol" = @{
                "sourceControlType" = "Git"
            }
            "processTemplate" = @{
                "templateTypeId" = "b8a3a935-7e91-48b8-a94c-606d37c3e9f2"
            }
        }
}  | ConvertTo-Json -Depth 5


Invoke-RestMethod -Uri $uriProject -Method Post -Headers $AzureDevOpsAuthenicationHeader -Body $projectConfiguration -ContentType "application/json"
APIはすぐにプロジェクトを作成しません.代わりに、それは202の受け入れられたHTTPコードと3つの値、要求のID、ステータス(セットされないか、時間のほとんどを待ちません)とURIでDED要求と応答を待ちます.
最後のURIは、プロジェクトの作成を監視するために使用できます.
我々は今、このプロジェクトにユーザーを追加することができます.しかし、我々は組織で現在ユーザーをリストするためにまず必要です.Azure DevOp組織、Azure Active Directoryユーザー、マイクロソフトアカウントユーザーとBuildユーザー(サービス)のユーザーの3種類があります.これは、組織の設定で見るものです.
$uriOrgaUsers = "https://vsaex.dev.azure.com/$($OrganizationName)/_apis/userentitlements?api-version=5.1-preview.2"

(Invoke-RestMethod -Uri $uriOrgaUsers  -Method get -Headers $AzureDevOpsAuthenicationHeader).members
当社のユーザーリストを使用すると、最後の手順で作成したプロジェクトに追加することができます.プロジェクトに直接メンバーを加えることはできません.既定では、プロジェクトを作成したとき、Azure Devopsサービスはプロジェクト名の後に名前付き既定のチームを作成します.
プロジェクトのプロパティを照会することで、デフォルトのチームIDを取得できます.
$UriOrga = "https://dev.azure.com/$($OrganizationName)/" 
$ProjectID = "576e2e9d-c7ee-4fd5-XXXXXXXXXX"

$uriProject = $UriOrga + "_apis/projects/$($ProjectID)/properties?api-version=5.1-preview.1"

(Invoke-RestMethod -Uri $uriProject -Method get -Headers $AzureDevOpsAuthenicationHeader).value
我々は、チームのIDと我々が収集したユーザーIDのいずれかを使用して、このチームにユーザーを追加することができます.
$TeamID = "5a18ffd6-1f25-44b0XXXXXXXXXX"
$userID = "3fa53ee0-XXXXXXXXx"

$AddUserUri = "https://vsaex.dev.azure.com/$($OrganizationName)/_apis/GroupEntitlements/$($TeamID)/members/$($userID)?api-version=5.1-preview.1"

Invoke-RestMethod -Uri $AddUserUri -Method put -Headers $AzureDevOpsAuthenicationHeader
Azure Devops Services REST APIを使用すると、プロジェクト、チームの作成、および搭乗を自動化することができます.また、Gitブランチ、プルリクエストやワークアイテム、および他の多くのものを作成することができます.
難しい部分は、あなたが気づくかもしれませんが、URLは統一されておらず、APIバージョンとURIに対処しなければならないかもしれません.ドキュメントと製品の内部ロジックに従う必要があります.しかし、いくつかの試みの後、あなたは何が必要になります.