Contents
サービス全体像と選定のポイント
| 項目 | Azure DevOps | GitHub Actions |
|---|---|---|
| 提供元 | Microsoft(統合開発プラットフォーム) | Microsoft(GitHub に組み込まれた CI/CD エンジン) |
| 主な対象 | エンタープライズ向けにプロジェクト管理・パッケージングまでを一括で提供 | ソースコード中心の開発フローを持つチーム、特にオープンソースやスタートアップに最適 |
| 料金体系(2024 年時点) | Microsoft-hosted エージェントは月間 1,800 分 が無料。超過分はジョブ単位で従量課金※[Microsoft Docs]。セルフホストはインフラ費用のみ。 | パブリックリポジトリは実行時間無制限。プライベートリポジトリは 2,000 分 / 月 が無料(GitHub Free)。超過分は Linux $0.008/分、Windows/macOS $0.015/分※[GitHub Docs]。 |
| 無料枠の特徴 | プロジェクト規模が小さい場合でも 30 時間程度のビルドが可能。 | パブリックリポジトリは無制限、プライベートは小規模 CI に十分な無料分が提供される。 |
| UI/UX | Classic エディタ(ドラッグ&ドロップ)と YAML のハイブリッド。 | 完全コード駆動型エディタ。UI はシンプルで GitHub の UI に統合されている。 |
ポイント:どちらを選ぶかは「統合されたプロジェクト管理が必要か」「無料枠の規模とコスト感度」など、組織の要件に合わせて判断することが重要です。
パイプライン構築のアプローチ
階層構造の違い
| Azure DevOps | GitHub Actions |
|---|---|
| Pipeline → Stage → Job → Step | Workflow → Job → Step |
- Azure DevOps は Stage が明示的に存在するため、環境(dev / staging / prod)ごとの分割が直感的。
- GitHub Actions では
needsキーワードやif条件でジョブ間の依存関係を表現し、ステージング相当の構成を作る。
YAML 記述例
Azure DevOps(YAML)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
trigger: - main stages: - stage: Build jobs: - job: Compile steps: - task: DotNetCoreCLI@2 inputs: command: 'build' - stage: Deploy dependsOn: Build jobs: - deployment: ProdDeploy environment: production strategy: runOnce: deploy: steps: - script: echo "Deploying to prod..." |
GitHub Actions(YAML)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
name: CI on: push: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build run: dotnet build --configuration Release deploy: needs: build if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest steps: - name: Deploy run: echo "Deploying to prod..." |
GUI とコードレビューの観点
| 項目 | Azure DevOps | GitHub Actions |
|---|---|---|
| Classic エディタ | あり(ドラッグ&ドロップ) → 初学者向け | なし(すべて YAML) |
| コードレビュー | YAML に移行すると PR で差分管理が可能 | 最初からコード中心なので PR でのレビューは標準的 |
料金モデルとスケールアウト
無料枠と従量課金(2024 年版)
- Azure DevOps
- Microsoft-hosted エージェント:月間 1,800 分 が無料。超過分はジョブあたり $0.016/分(Linux)/$0.032/分(Windows/macOS)※[Microsoft Docs]。
-
セルフホストエージェントはインフラ費用のみで、使用時間制限なし。
-
GitHub Actions
- パブリックリポジトリ:実行時間無制限。
- プライベートリポジトリ(Free):月間 2,000 分 が無料。Pro/Team はそれぞれ 3,000・10,000 分が付与される。超過分は Linux $0.008/分、Windows/macOS $0.015/分※[GitHub Docs]。
並列実行数とスケールアウト
| 項目 | Azure DevOps | GitHub Actions |
|---|---|---|
| 標準並列ジョブ | 1 組織につき最大 5(追加は有料エージェントプール) | パブリック:10 並列/無制限(プランにより変動)。プライベート:デフォルト 20 並列、必要に応じて購入可能 |
| スケールアウト手段 | エージェントプールを増設 → 任意数のホストで同時実行可。Azure VM の最新世代(2 vCPU, 8 GB RAM)を利用可能【Microsoft Docs】 | max-parallel キーや Organization Settings で上限変更。必要に応じて自前ランナー(セルフホスト)を追加し、無制限にスケールアウト可能 |
セキュリティと OIDC 認証
OIDC の概要とメリット
| 項目 | GitHub Actions | Azure DevOps |
|---|---|---|
| 標準 OIDC プロバイダー | ✅(id-token 権限で JWT を取得) |
❌(代替として Service Connection が必要) |
| シークレット不要化の実装例 | aws-actions/configure-aws-credentials@v2 などが OIDC と連携し、AWS の一時的ロールを自動取得。 |
Azure Resource Manager サービス接続は事前に Service Principal のシークレットを保存する必要があるケースが多い。 |
| 設定のハードル | permissions: id-token: write をジョブレベルで付与すれば完了。 |
Service Connection 作成 → Azure AD でアプリ登録 → シークレット/証明書管理という手順が必要。 |
実務的な効果:OIDC によりシークレット漏洩リスクが大幅に低減し、ローテーション作業も不要になるため、セキュリティポリシー遵守が容易になる。
推奨されるシークレット管理フロー
- GitHub Secrets:リポジトリ/組織レベルで暗号化保存。
- OIDC 連携:外部クラウド(AWS、Azure、GCP)の IAM ロールを OIDC に紐付け、ジョブ実行時に一時的なアクセストークンを取得。
- 最小権限の原則:ロールは必要最小限の権限だけを許可し、期限付きのアクセスに限定。
エコシステムと拡張性
Azure DevOps の統合サービス
- Boards – スプリント計画・バックログ管理がパイプラインと連携。
- Artifacts – NuGet、npm、Maven 用プライベートフィードを提供し、CI から直接 push / pull が可能。
- Test Plans – 手動テストや自動 UI テストの管理機能が統合されている。
GitHub の拡張エコシステム
| カテゴリ | 主なサービス |
|---|---|
| Marketplace | 1,000 種以上の公式・コミュニティアクション(例:setup-node, docker/build-push-action) |
| GitHub Packages | Docker、npm、Maven、NuGet のレジストリをリポジトリ単位で提供。 |
| Dependabot / CodeQL | セキュリティスキャンや依存関係自動更新が標準装備。 |
使い分けの指針
- Azure DevOps が向いているケース
- プロジェクト全体を一元管理したい(バックログ → ビルド → デプロイ)。
-
大規模組織でエンタープライズサポートが必須。
-
GitHub Actions が向いているケース
- OSS やスタートアップでリポジトリ単位のシンプルな CI/CD が欲しい。
- Marketplace の豊富なアクションを活用し、短時間でパイプラインを構築したい。
移行ガイドライン
1. 構造マッピング
| Azure DevOps | GitHub Actions |
|---|---|
pipeline.yml → workflow.yml |
同一 |
stages → 複数 jobs + needs |
同一 |
variables → env:(Workflow)または secrets.(リポジトリシークレット) |
同一 |
2. タスク置き換え例
| Azure DevOps タスク | GitHub Actions 相当 |
|---|---|
DotNetCoreCLI@2 |
actions/setup-dotnet + run: dotnet build |
PublishBuildArtifacts@1 |
actions/upload-artifact |
AzureWebApp@1 |
azure/webapps-deploy(Marketplace) |
3. シークレットと OIDC の移行手順
- 既存シークレットをエクスポート
- Azure DevOps CLI (
az devops security permission) で変数グループを取得し、CSV に保存。 - GitHub Secrets にインポート
- 組織設定 →
Secrets and variables→Actions→New repository secret(バッチスクリプトで自動化可能)。 - OIDC 連携の構築
- AWS の場合:IAM ロールに信頼ポリシーとして
token.actions.githubusercontent.comを追加。 - Azure の場合:Azure AD アプリケーションを作成し、
Federated credentialsに GitHub リポジトリ情報を登録。
4. テストと検証
| フェーズ | 内容 |
|---|---|
| ユニットテスト | 従来の Azure Pipelines 用テストスイートはそのまま dotnet test 等で実行可能。 |
| 統合テスト | GitHub Actions の workflow_dispatch で手動トリガーし、結果を確認。 |
| 本番デプロイ | environment protection rules を設定し、プルリクエストマージ時に自動デプロイ。 |
比較表(要点まとめ)
| 項目 | Azure DevOps | GitHub Actions |
|---|---|---|
| 階層構造 | Pipeline → Stage → Job → Step | Workflow → Job → Step |
| 無料実行時間 | 1,800 分 / 月 (Microsoft‑hosted) | パブリック無制限、プライベート 2,000 分 / 月(Free) |
| 並列ジョブ上限 | 標準 5、追加は有料エージェント | パブリック 10+、プライベート デフォルト 20(プランに応じて増加) |
| OIDC サポート | なし(Service Connection が代替手段) | 標準で提供、シークレット不要化が容易 |
| 統合ツール | Boards, Repos, Artifacts, Test Plans 等が同一プラットフォーム内に完結 | Marketplace、Packages、Dependabot が中心 |
| エンタープライズサポート | Microsoft の SLA と Premier サポートあり | GitHub Enterprise Cloud で企業向けサポート提供 |
| 導入ハードル | Classic UI があるため初心者に優しいが、YAML 移行時は学習コストが必要 | 完全コード駆動なので開発者にとって自然な感覚 |
FAQ
| Q1. 小規模チームで無料枠だけで運用できるか? |
|---|
| A: GitHub Actions はパブリックリポジトリが無制限、プライベートは 2,000 分/月(Free)でほとんどのビルド・テストに対応可能。Azure DevOps も月間 1,800 分の無料枠があるため、規模が小さければどちらでも実装可能です。 |
| Q2. 既存の Azure Pipelines の YAML をそのまま流用できるか? |
|---|
A: 基本構文は共通していますが、stages がない点やタスク名が異なる点に注意が必要です。自動変換ツールは存在しませんが、上記の「タスク置き換え表」を参照しながら手作業でマッピングするとスムーズです。 |
| Q3. OIDC を利用する際の IAM 設定は難しい? |
|---|
A: AWS・Azure・GCP の公式ドキュメントにサンプルポリシーが掲載されています。GitHub 側で id-token 権限を付与すれば、ほぼワンクリックでトークン取得が可能です。 |
| Q4. エージェントのセルフホストはどちらでも同様に設定できるか? |
|---|
| A: はい。Azure DevOps と GitHub Actions の両方で、Linux/Windows/macOS のセルフホストエージェントを構築できます。設定手順は公式ドキュメントが詳細に掲載されているので、環境に合わせて選択してください。 |
参考情報(脚注)
-
Microsoft Docs – Azure Pipelines pricing
https://learn.microsoft.com/azure/devops/pipelines/licensing/concurrent-jobs?view=azure-devops -
GitHub Docs – Usage limits for GitHub Actions
https://docs.github.com/en/actions/reference/usage-limits-billing-and-administration#usage-limits-for-github-actions -
Microsoft Docs – OIDC with Azure Pipelines
https://learn.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-resource-manager-service-connection?view=azure-devops -
GitHub Docs – Configuring OpenID Connect in GitHub Actions
https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-openid-connect
まとめ
- Azure DevOps はエンタープライズ向けに「プロジェクト管理」から「CI/CD」までを一括で提供し、Stage ベースの大規模デプロイや長時間ビルドに強みがあります。
- GitHub Actions はコード中心のシンプルさと OIDC によるシークレット不要化が特徴で、無料枠が手軽に利用できるためスタートアップや OSS プロジェクトに最適です。
- 移行時は「階層マッピング」「タスク置き換え」「シークレットと OIDC の再設計」の 3 カテゴリを意識すれば、スムーズかつ安全に移行できます。
次のステップ:自社の要件(プロジェクト規模・予算・セキュリティポリシー)を基に上記比較表を活用し、 PoC(概念実証)を 1〜2 週間で実施してみましょう。