0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonを使ってAzure DevOpsからPull Requestを取得する

Posted at

やりたいこと

Azure DevOpsのReposからPull Requestを引っこ抜きます。Pull Requestの情報から、プロジェクトがどの程度コードを生産しているか、どの程度レビューに時間を割いているか計測したいのです。普通に開発する分には気にすることは無いと思うのですが。

環境

Python 3.9.2
Azure DevOps api version 7.1

azure-devopsを使います。pipからインストールしてください。

コード

from azure.devops.connection import Connection
from azure.devops.v7_1.git.models import GitPullRequestSearchCriteria
from msrest.authentication import BasicAuthentication

# Fill in with your personal access token and org URL
# repository_id is not repository name
personal_access_token = 'xxxx'
organization_url = "https://dev.azure.com/FUGAFUGA"
project_name = "ほげほげプロジェクト"
repository_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"

# 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)
git_client = connection.clients_v7_1.get_git_client()

# search criteria
search_criteria=GitPullRequestSearchCriteria()
search_criteria.status="Completed"

pullrequests=git_client.get_pull_requests(repository_id,search_criteria)

for pr in pullrequests:
    print(str(pr.title)+":"+str(pr.created_by.display_name)+":"+str(pr.creation_date)+":"+str(pr.closed_date))

PATの設定

personal access tokenはお手元のAzure DevOpsから取得してください。ネットに大量に情報があると思います。Scopesはおそらく以下が必要です。

  • Code
    Pull Requestを読み取るために必要。Read以上の権限を付与してください。
  • Pull Request Threads
    Pull Requestの中のやり取りを読み取るために必要。Read & write権限を付与してください。writeは必要ではないのですがread & writeが最小権限のようでした。
  • Service Connections
    APIアクセスするために必要っぽいです。

認証

この辺りはMicrosft LearnにあるPythonのサンプルコードの通りです。
PATにはPersonal Settingsから取得したトークンを指定してください。organization_urlはブラウザのアドレスバーを見ればわかると思います。repository_idはIDです、リポジトリ名とは異なります。ネットを検索すれば情報はあると思いますがProject settingsにあるReposから確認することが可能です。

メソッドを実行する場合の注意

APIのメソッドはMicrosoft Learnに詳しい説明があります。Pythonの記法に則ってはいないことに注意してください。pull requestを全権取得するメソッドの説明はGetPullRequests()として記載があります。スネークケースへ読み替えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?