Azure Pipelinesを中心とした連携で、品質管理などの機能を実装しよう
Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門 第7回
Azure Boardsとの連携によるトレーサビリティ確保
Azure Artifactsの変更を要件レベルで追跡するため、Azure Boardsとの連携をする方法について説明します。
ワークアイテムとの自動連携
パイプラインでAzure Boardsのワークアイテムの自動更新を実装します。これにより、コードのコミットからパッケージ公開までの流れを、Azure Boards上のワークアイテムと自動的に紐付けることができます。
このタスクは、Azure Artifacsへのパッケージ公開が完了した後に行うべきなので、Deployステージのタスクの末尾に追加していきます。
# (4)ワークアイテムの自動更新
- task: PowerShell@2
displayName: 'ワークアイテム更新'
inputs:
targetType: 'inline'
script: |
# (4)-1コミットメッセージからワークアイテムIDを抽出(例:"Add feature #123")
$commitMessage = "$(Build.SourceVersionMessage)"
$workItemPattern = "#(\d+)" # #に続く数字をキャプチャ
# (4)-2Azure DevOps REST APIを使用してワークアイテムを更新
if ($commitMessage -match $workItemPattern) {
$workItemId = $Matches[1]
Write-Host "ワークアイテム #$workItemId を更新します"
# パイプラインの自動認証トークンをbase64エンコードする
$base64Token = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$(System.AccessToken)"))
$headers = @{
'Authorization' = "Basic $base64Token"
'Content-Type' = 'application/json-patch+json'
}
# JSON Patch形式で更新内容を定義
$historyValue = "パッケージ $(packageVersion) がAzure Artifactsに公開されました。`nビルド番号: $(Build.BuildNumber)`nビルドURL: $orgUrl/$project/_build/results?buildId=$(Build.BuildId)"
$body = "[`n"
$body += " {`n"
$body += ' "op": "add",' + "`n"
$body += ' "path": "/fields/System.History",' + "`n"
$body += ' "value": "' + $historyValue.Replace("`n", "\n").Replace('"', '\"') + '"' + "`n"
$body += " }`n"
$body += "]"
# REST APIエンドポイントを構築
$uri = "$(System.TeamFoundationCollectionUri)$(System.TeamProject)/_apis/wit/workitems/$workItemId?api-version=7.0"
try {
Invoke-RestMethod -Uri $uri -Method Patch -Headers $headers -Body $body -ErrorAction Stop
Write-Host "ワークアイテムの更新が完了しました"
} catch {
Write-Warning "ワークアイテムの更新に失敗しました: $($_.Exception.Message)"
exit 0
}
} else {
Write-Host "コミットメッセージにワークアイテムIDが含まれていません"
}
このタスクでは、コミットメッセージ内に含まれるAzure BoardsのワークアイテムID(例:#123)を自動検出し、Azure Boards上の該当するワークアイテムにパッケージ公開の記録を追加します((4)-1)。
コミットメッセージ内にワークアイテムIDが含まれる場合、Azure Boards用のREST APIを用いてワークアイテム内にコメントを残すようにしています((4)-2)。
例として、Azure Boardsでワークアイテム(ここではタスク)を作成し、自動採番されたワークアイテムIDをコミットメッセージに含めた状態でAzure Pipelinesのワークフローを実行してみます。
Azure Boardsでワークアイテムを作成するとタイトルの横にワークアイテムIDが表示されます(以下の画像では「1」がID)。
リポジトリ内のファイルを更新し、このIDをgitのコミットメッセージに含めてプッシュまで実施します。
# 何らかのファイルの更新を行う $ git add --a # コミットメッセージにワークアイテムIDを含める $ git commit -m "add feature #1" $ git push origin
コミットメッセージ内に「#1」と、ワークアイテムIDを含めています。この状態でAzure Pipelinesでワークフローを実行すると、Azure Boardsの該当のワークアイテムが更新され、コメントが追加されます。
こうしてAzure PipelinesとAzure Boardsを連携することで、コードの修正をタスクに紐づけられるようになり、トレーサビリティを向上できます。
この記事は参考になりましたか?
- Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門連載記事一覧
-
- Azure Test Plansでテスト管理を始めよう
- Azure Pipelinesを中心とした連携で、品質管理などの機能を実装しよう
- 「Azure Artifacts」とDevOpsサービス連携による効率的な開発環境構築
- この記事の著者
-
WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
