azure devopsの環境を作ったので、rest apiを使ってアクセスしてみようと思います。
事前準備
Personal access tokens(PAT)の発行
こちらの記事でazure devopsの環境構築とPATの発行までを紹介していますので参照ください。
環境
- VSCode
- python 3.11.0
使用するライブラリ
- azure-devops
パッケージのインストール方法についてはこちら
rest apiを使ってazureにアクセスする
サンプルコード
ライブラリの入手元のgithubに、サンプルコードが提供されているのでまずはつながるか確認してみました。
from azure.devops.connection import Connection from msrest.authentication import BasicAuthentication import pprint # Fill in with your personal access token and org URL personal_access_token = 'YOURPAT' organization_url = 'https://dev.azure.com/YOURORG' # Create a connection to the org credentials = BasicAuthentication('', personal_access_token) connection = Connection(base_url=organization_url, creds=credentials) # Get a client (the "core" client provides access to projects, teams, etc) core_client = connection.clients.get_core_client() # Get the first page of projects get_projects_response = core_client.get_projects() index = 0 while get_projects_response is not None: for project in get_projects_response.value: pprint.pprint("[" + str(index) + "] " + project.name) index += 1 if get_projects_response.continuation_token is not None and get_projects_response.continuation_token != "": # Get the next page of projects get_projects_response = core_client.get_projects(continuation_token=get_projects_response.continuation_token) else: # All projects have been retrieved get_projects_response = None
実行結果、無事プロジェクト名が取得できました。
サンプルコードの罠
ですが、実は上記サンプルコードには多少罠があって多少悩まされました。
それは、rest apiのリファレンスにある処理でいくつか使えないものがあるです。
コードの中まで見に行って、問題個所特定。
問題だったのは14行目のここ。
core_client = connection.clients.get_core_client()
中で、
- release用クライアント
- v6.0用クライアント
- v5.1用クライアント
の3つのインスタンスを持っていて、利用者側が使い分けなくてはいけなかった。。。
なので、v6.0のAPIを使いたい場合は次のように書く必要があります。
core_client = connection.clients_v6_0.get_core_client()
これでv6.0用のAPIが使えるようになりました。
おしまい
azure上の情報にrest apiでアクセス→取得したデータを使ってデータ解析・統計分析等につなげていければといろいろ検討中です。