Azure DevOps のプルリクと作業項目
Azure Repos のプルリクエストには、Azure Boards の作業項目をリンクできます。ブランチ ポリシーでリンクを必須にでき、プルリクの完了で作業項目を先へ進めることもできます(アクティブから解決済みへ、など)。以下は Microsoft の コードを確認してマージする pull request を作成する・ブランチ ポリシーの設定と管理・pull request を完了、破棄、または元に戻す・pull request を使用して作業項目の完了を自動化する・Git リポジトリの設定を設定するからまとめたものです。
作業項目をリンクする
- 新しいプルリク:Work items to link で ID かタイトルで探します。タイトルの検索は、状態が Completed(完了)か Removed(削除済み)の作業項目を除き、過去30日に作られたか更新されたもので、自分が作った・割り当てられた・承認者になっているものだけを出します。
- 作ったあとのプルリク:Overview(概要)タブの Work items(作業項目)欄の +。作業項目の横の x でリンクを外せます。ブランチやコミットから付いたリンクは作業項目に残ります。
- コマンドから(Azure DevOps Services):
az repos pr create --work-items 63 64。作ったあとのプルリクはaz repos pr work-item add・list・remove。 - コミットから:リポジトリの設定 Commit mention linking(既定でオン)があると、
#と作業項目の ID を書いたコミットメッセージで、そのコミットが作業項目にリンクされます。
作業項目のリンクを必須にする
ブランチ ポリシー Check for linked work items(リンクされた作業項目の確認)を Branch Policies でオンにすると、作業項目がリンクされるまでプルリクをマージできません。Optional(任意)にすると、リンクがない時に警告するだけです。コマンドでは az repos policy work-item-linking create に --blocking true か false。az repos pr policy list では Work item linking と出ます。
プルリクと一緒に作業項目を完了する
- 選択肢:完了の画面の Complete linked work items after merging(マージ後にリンクされた作業項目を完了する)で、リンクした作業項目をその種類の完了の状態(Done・Closed・Completed)へ進めます。
- 最初からチェックが入っている理由:各自の前回の選択を覚えているからです。これはリポジトリの設定 Work item transition preferences(既定でオン)によるもので、オフにすると、毎回自分でチェックを入れることになります。
- 進まない時:すでに Resolved(解決済み)の作業項目(その状態がある Agile のバグなど)は Closed へ進まず、すでに完了の分類の状態のものもそのまま。閉じるには別の項目の入力が要る、といったワークフローの規則でも止まります。
- リポジトリで止める:Project settings > Repositories > リポジトリ > Settings で Commit mention work item resolution をオフに。コミットメッセージの
Fixes #123で作業項目を閉じることも止まります。 - 別の状態へ:プルリクの説明で ID の前に状態を書くと(
Resolves #123・Review #101など)、マージの時にその作業項目がその状態へ進みます。 - 自動完了もこの選択を持ちます。完了の設定は自動完了と一緒に付き、ポリシーが通った時に使われます。
REST API
GET …/_apis/git/repositories/{repositoryId}/pullRequests/{pullRequestId}/workitemsで、リンクした作業項目が{"id": "23", "url": "…/_apis/wit/workItems/23"}の形で並びます。Code (Read) のトークン(vso.code)で読めます。タイトルや状態は作業項目の API で、Work Items の権限が要ります。- 完了:
PATCH …/pullrequests/{pullRequestId}に"status": "completed"と"completionOptions": {"transitionWorkItems": true, …}。REST リファレンスは「次の論理的な状態へ(例:Active から Resolved)」と説明していて、4.1(TFS 2018)からリファレンスにあります。付けなければ作業項目は進みません。az repos pr update --transition-work-items trueも同じです。
IntelliJ IDEA で作業項目を扱う
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。Azure DevOps Services と Azure DevOps Server のプルリクエストを IDE のツールウィンドウに並べます。1.0.55 から、プルリクにリンクした作業項目を番号で出し(押すとブラウザーで開きます)、その下のブランチ ポリシーの「作業項目のリンク」の行で、ポリシーを満たしているかが分かります。作業項目がリンクされていると、完了の画面に「マージ後にリンクされた作業項目を完了する」が出て、すぐの完了にも自動完了にも効き、Web の画面と同じく前回の選択を覚えます。1.0.55 より前は、プラグインから完了しても作業項目は進みませんでした。レビューの受信箱・ブランチ ポリシー・作業項目の一覧は無料、投票・コメント・完了・プルリクの作成は Pro(30日間の無料試用つき)です。画面は日本語です。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:自動完了と任意のポリシー · コメントの状態とコメント解決のポリシー · マージの種類 · プルリクのタグ(作業項目のタグと名前を共有) · English