🎄

Azure DevOpsとGitHubの併用 2025ver.

に公開

今年もアドカレの季節がやってきました😊
この記事はAzure DevOpsのアドベントカレンダーの3日目の記事として参加させていだいてます。
https://qiita.com/advent-calendar/2025/azuredevops

もうAzure DevOpsは使わない方がいいの?全部GitHubにした方がいいの?

Azure DevOpsとGitHubどっちがいいの?最近GitHubのリリースの方が目立ってるけどもうAzure DevOpsは非推奨なの?併用するとしたらどんな併用の仕方が推奨なの?というご相談を最近よくいただくので、これに対してMicrosoftはどういう見解なの?という直接的なアンサーとなるようなセッションが今年のMicrosoft BuildとIgniteで発表されたので、それらのセッションでのメッセージをまとめる形でご紹介できればと思います。

両方使うのだ!

ご参考セッション:
https://build.microsoft.com/en-US/sessions/BRK110?source=/schedule

https://ignite.microsoft.com/en-US/sessions/BRK106

GitHubのSr.DevOps AdvocateのDave BurnisonとAzure BoardsのProduct ManagerのDan Hellemによる上記のセッションでは、Azure DevOpsとGitHubを統合して使用することによって、どちらかひとつを使うよりも大きな効果を得ようという旨がメッセージングされています。
('Making Azure DevOps and GitHub Greater than the Sum of their Parts'というタイトルそのままですね)

つまり、「もうAzure DevOps使わない方がいいんですか?」という質問に対しては「そんなことないよ!」というアンサーですね。

ソースがGitHubにないことで使用が制限される機能

ただし、「ソース管理はGitHubを使う(Azure Reposを使っているならGitHubにReposを移す)」ということが推奨されています。

理由としては、

  • ソースがGitHubにいることで、GitHub Advanced Securityなどのセキュリティ機能の恩恵、Coding AgentなどAIの機能をフルに活用できる。

ということがセッション中で語られています。これは逆にいうとGitHubにソースがないとAIやセキュリティの機能が一部制限されるということを示しています。

使用が制限されるセキュリティ関連の機能

ちなみにGitHub Advanced Securityの機能をAzure DevOps向けに提供したGitHub Advanced Security for Azure DevOps(GHAzDO)という機能もありますが、

https://learn.microsoft.com/ja-jp/azure/devops/repos/security/configure-github-advanced-security-features?view=azure-devops&tabs=yaml&pivots=standalone-ghazdo

本家GitHub Advanced Securityと全く同じように使えるというわけではなく、使用できる機能に制限があります。表でまとめると機能の〇×はこんな感じ。

機能 概要 GitHub Advanced Security(GHAS) GitHub Advanced Security for Azure DevOps(GHAzDO)
シークレットスキャン シークレットの有無の検知
プッシュ保護 シークレットを含むコミットの防止
コードスキャン セキュリティ脆弱性のあるコードの有無をチェック
Copilot Autofix AIによるセキュリティ脆弱性の修正 ×
セキュリティキャンペーン 大規模なセキュリティ脆弱性のトリアージ ×
依存関係レビュー プルリクエストの変更による依存関係への影響を表示 ×
依存関係スキャン 依存関係に起因する脆弱性の検知 GHASではなくすべてのGitHubリポジトリで提供
Dependabot 依存関係に起因する脆弱性検知時のアラートの生成 GHASではなくすべてのGitHubリポジトリで提供 ×
Depandabotバージョンアップデート 提供元のパッケージとのバージョン乖離による脆弱性の修正 GHASではなくすべてのGitHubリポジトリで提供 ×
Dependabotセキュリティアップデート セキュリティ的な脆弱性を含むパッケージを使っていた場合に、安定しているバージョンへの修正 GHASではなくすべてのGitHubリポジトリで提供 ×

使用が制限されるGitHub Copilotの機能

以下のGitHub Copilotの機能はソースがGitHubにあることが前提となるので、ソース管理がGitHubでないと使えません。

  • Coding Agent
  • GitHub.com上のGitHub Copilot
  • GitHub Copilot Space
  • GitHub Copilot Spark
  • GitHub Copilotによるコードレビュー
  • GitHub CopilotによるPRのサマリー

GitHubとAzure DevOpsの併用

セッション中で紹介されていたGitHub × Azure DevOpsの併用プラクティスとしては、大きく以下の2つです。

  1. Azure BoardsとGitHub Reposの統合
  2. Azure Pipelines & Azure Test Plans × GitHub Reposの統合

いずれの場合も、ソースコードはGitHub Reposで管理されているという前提です。

Azure Boards × GitHub

Azure Boardsのうれしみポイント

プロジェクト管理としてはGitHub側ではIssues, GitHub Projectsがありますが、プロジェクト管理はやはりAzure Boardsの方がいい!という方も多くいらっしゃるかと思います。筆者もこれまでAzure Boardsのこういうのがいいぞ!という記事をいくつか書きましたが、やはり以下に挙げているような詳細な作業予測やダッシュボードでのグラフィカルな可視化ができるという点がGitHub Projectsにはない強みかなと思います。

  • スクラムを実践するための豊富な拡張機能

※過去の以下の記事でいくつか紹介してます
https://zenn.dev/yuriemori/articles/57a2a7a2b55015
https://zenn.dev/yuriemori/articles/efdb44f9e8ab9d
https://zenn.dev/yuriemori/articles/db1136ddfb8fa9

  • Azure DevOpsのダッシュボードと連携してwork itemのLead Time/Cycle Timeなどさまざまなメトリクスのグラフィカルな可視化

https://zenn.dev/yuriemori/articles/e8f6acd75fbef0

  • Velocityに基づいた着手可能予定スプリントの予測

https://learn.microsoft.com/ja-jp/azure/devops/boards/sprints/forecast?view=azure-devops

Azure BoardsとGitHubの統合

Azure BoardsとGitHubリポジトリを接続することで、このようなAzure Boardsのうれしみを享受したままGitHubのAI機能やセキュリティ機能をフルに活用することができます。
具体的な方法はこちらのdocsに記載されていますが、GitHubにAzure Boardsのアプリをインストールすることで簡単にGitHubリポジトリとAzure Boardsを接続することができます。

https://learn.microsoft.com/ja-jp/azure/devops/boards/github/?view=azure-devops

さらに、Azure BoardsとGitHubリポジトリを接続することによって、Azure Boardsのwork itemからCoding Agentにタスクをアサインするということもできるようになります。
https://learn.microsoft.com/ja-jp/azure/devops/boards/github/work-item-integration-github-copilot?view=azure-devops&WT.mc_id=DT-MVP-4039781%3Fview%3Dazure-devops

kkamegawaさんがこちらの記事で詳しく書いてくださってますね。
https://kkamegawa.hatenablog.jp/entry/2025/12/01/000000

Azure Pipelines, Test Plans × GitHub

Azure Pipelinesのうれしみ

Azure Pipelinesではパイプライン内で実行しているテストのコードカバレッジをグラフィカルに表示したり、どのテストが通っていてどのテストが失敗していて、などのテスト結果がグラフィカルに確認できるところがGitHub Actionsにはない利点かなと思います。
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/test/review-continuous-test-results-after-build?view=azure-devops

あとはあまり使わないかもしれませんが、「テストが通ったり通らなかったりで不安定なテスト」すなわちフラーキーテストの管理ができるというのもActionsにはない機能ですね。
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/test/flaky-test-management?view=azure-devops

そしてTest Plansを利用して、Azure Pipelinesで実行している自動テストを管理するということもできます。
https://learn.microsoft.com/ja-jp/azure/devops/test/associate-automated-test-with-test-case?view=azure-devops

Azure PipelinesとGitHubの統合

こちらのGitHub AppをGitHubリポジトリにインストールすることによってAzure PipelinesとGitHubリポジトリを接続することができます。
https://github.com/apps/azure-pipelines

詳細な手順は以下のdocsに記載されています。
https://learn.microsoft.com/ja-jp/azure/devops/pipelines/repos/github?view=azure-devops

上記のAzure PipelinesのGitHub Appを利用することで、GitHub ReposでのアクションをトリガーにしてAzure Pipelinesを実行し、またビルド、テスト、コード カバレッジの結果をGitHub側に表示することもできます。

併用の際の注意点として、Azure PipelinesとGitHub Actionsは微妙に使用できるタスクが違ったり、yamlの書き方が少し違ったりするので、Azure PipelinesとGitHub Actionsの両方の併用はあまりおすすめできません。CI/CDはどちらかに寄せる方がよいと思います。

ただ、Azure pieplinesのベースラインアーキテクチャのCI, CDそれぞれのフェーズで実行が推奨されているセキュリティスキャンに関しては(以下画像の赤枠部)

構成も簡単にできて(yamlを書かずに構成できて)Copilot AutofixなどAIによる修正も適用可能なGitHub Advanced Securityを使用するのが個人的にはおすすめです。
つまり、CI/CDはAzure Pipelinesで実行して、それ以外のセキュリティスキャン系は全部GitHub Advanced Securityに分離する、という形です。

なので、Azure PipelinesとGitHub Advanced Securityを併用する場合のCI/CDのフローはこうなるかなと

  • PRが作成される
  • →GitHub Advanced Securityのコードスキャン実行
  • →Azure Pipelinesでビルド、ユニットテスト実行
  • PRがmainにマージされる
  • →GitHub Advanced Securityのコードスキャン実行
  • →Azure Pipelinesでビルド、テスト、パッケージ発行、各環境へのデプロイ

Azure ReposをGitHubに移行

「ReposをGitHubに移しましょう」といいつつ、ソースコードを移動するのってそんなに簡単じゃないですか!という方もいらしゃると思います。そんなシチュエーションのために、GitHubでは3rd partyのGitベースリポジトリからソースを移行するための「GitHub Enterprise Importer」というツールが提供されています。
https://docs.github.com/ja/migrations/using-github-enterprise-importer/understanding-github-enterprise-importer/about-github-enterprise-importer

これによって、

  • Git ソース (コミット履歴を含む)
  • Pull Request
  • pull request のユーザー履歴
  • pull request の作業項目リンク
  • pull request の添付ファイル
  • リポジトリのブランチ ポリシー (ユーザー スコープのブランチ ポリシーとリポジトリ間ブランチ ポリシーは含まれません)

をすべて保持したままGitHub reposに移行することができます。

詳細についてはこちらをご覧ください。
https://docs.github.com/ja/migrations/ado/about-migrations-from-azure-devops-to-github-enterprise-cloud

https://devblogs.microsoft.com/all-things-azure/azure-devops-to-github-migration-playbook-unlocking-agentic-devops/

あと、つい最近知りましたがAzure Repos→GitHub Reposへの移行ハンズオンができるリポジトリがGitHub Skillsで公開されているようです。
https://github.com/skills/migrate-ado-repository

まとめ

というわけで、2025の5月のBuild、この前のIgniteでのセッションを踏まえると、メッセージとしては

Azure DevOpsとGitHubを併用してください。ただしソース管理はGitHub Reposの方を推奨。

ということになるかなと思います。
当時のセッションを日本語でまとめた記事があるので、興味がある方はご覧いただければと思います。

https://zenn.dev/yuriemori/articles/86575027b4e475#making-azure-devops-and-github-greater-than-the-sum-of-their-parts

https://zenn.dev/microsoft/articles/a748d9bd900ca5#ai-powered-workflows-with-github-and-azure-devops(brk106)

おまけ:
「Azure DevOpsとGitHubを併用?2つのプラットフォーム分払うなんてそんなお金は出せないよ!」と思った方、大丈夫です。
2025年2月からAzure DevOpsのBasicプランにGitHub Enterprise Cloudも含まれるようになりました。これによって、Azure DevOpsのBasicプランをお使いの方は追加費用なしでAzure DevOpsとGitHub Enterpriseの両方をご利用いただくことができます😊
https://learn.microsoft.com/en-us/azure/devops/release-notes/2025/sprint-252-update

Microsoft (有志)

Discussion