SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門

Azure Pipelinesを中心とした連携で、品質管理などの機能を実装しよう

Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門 第7回

Azure Boardsとの連携によるトレーサビリティ確保

 Azure Artifactsの変更を要件レベルで追跡するため、Azure Boardsとの連携をする方法について説明します。

ワークアイテムとの自動連携

 パイプラインでAzure Boardsのワークアイテムの自動更新を実装します。これにより、コードのコミットからパッケージ公開までの流れを、Azure Boards上のワークアイテムと自動的に紐付けることができます。

 このタスクは、Azure Artifacsへのパッケージ公開が完了した後に行うべきなので、Deployステージのタスクの末尾に追加していきます。

[リスト2]デプロイステージへのタスク追加(azure-pipelines.yml)
# (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)。

図2:ワークアイテムIDの確認
図2:ワークアイテムIDの確認

 リポジトリ内のファイルを更新し、このIDをgitのコミットメッセージに含めてプッシュまで実施します。

[リスト3]ワークアイテムIDを含めたコミット(コマンドラインでの操作例)
# 何らかのファイルの更新を行う

$ git add --a

# コミットメッセージにワークアイテムIDを含める
$ git commit -m "add feature #1"

$ git push origin

 コミットメッセージ内に「#1」と、ワークアイテムIDを含めています。この状態でAzure Pipelinesでワークフローを実行すると、Azure Boardsの該当のワークアイテムが更新され、コメントが追加されます。

図3:Azure Pipelinesによってコメントが追加されたワークアイテム
図3:Azure Pipelinesによってコメントが追加されたワークアイテム

 こうしてAzure PipelinesとAzure Boardsを連携することで、コードの修正をタスクに紐づけられるようになり、トレーサビリティを向上できます。

次のページ
パフォーマンス最適化

この記事は参考になりましたか?

Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 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本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22974 2026/01/26 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング