0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

# 【AZ-400対策メモ】Azure DevOps / GitHub Actionsと統合できる外部ツール一覧と統合方法

0
Posted at

CI/CD パイプラインは、単なるビルド&デプロイの自動化ではなく、品質・セキュリティ・運用・トレーサビリティを統合的に支える基盤です。本記事では、GitHub Actions / Azure DevOps と連携できる外部ツールをカテゴリ別に整理し、機能・統合方法・生成ファイル・コードサンプルまで網羅します。


📚 目次(Qiita対応)


🧪 1. 静的解析ツール(Static Code Analysis)

機能

静的解析ツールは、コードを実行せずに構文・品質・セキュリティの問題を検出する仕組みです。レビュー前に潜在的な不具合や脆弱性を自動で洗い出し、品質基準を満たさないコードを早期に発見できます。CI/CD に組み込むことで、開発者の負担を減らし、品質の標準化・セキュリティ強化・レビュー効率化を実現します。

統合方法

GitHub Actions や Azure DevOps のビルドステップに解析タスクを追加し、コミットや PR 作成時に自動実行します。結果は SARIF や XML 形式で出力され、PR コメントやダッシュボードに反映されます。SonarCloud の品質ゲートを利用すれば、基準未達のコードを自動で検出し、マージ前に品質を担保できます。


ツール一覧(文章化済み)

ツール名 機能 対応言語 統合方法 生成ファイル
SonarCloud / SonarQube コード品質・バグ・セキュリティ問題を自動検出し、品質ゲートで基準を満たさないコードを可視化する C#, Java, Node.js, Python GitHub Actions / Azure DevOps と連携し、PR 作成時に自動解析を実行する
CodeQL セキュリティ脆弱性をクエリベースで解析し、深刻度別に問題を可視化する Java, JS/TS, Python 他 GitHub Actions にネイティブ統合され、リポジトリに対して自動スキャンを実行する .sarif
ESLint JavaScript/TypeScript の構文・品質・スタイル違反を検出する Node.js CI で eslint を実行し、JSON レポートを生成して品質チェックを行う .json
StyleCop C# のコード規約違反を検出し、スタイル統一を支援する C# CLI や dotnet format と併用し、CI で自動チェックを実行する .xml
Pylint Python の構文・品質問題を検出し、スコア形式で評価する Python CLI 実行でレポートを生成し、CI に組み込んで品質チェックを行う .txt
PMD / Checkstyle Java の静的解析とスタイルチェックを行い、品質問題を検出する Java Maven/Gradle のプラグインとして CI に統合し、自動解析を実行する .xml

コードサンプル(ESLint)

- name: Run ESLint
  run: npx eslint . -f json -o eslint-report.json

📦 2. 依存関係解析・ライブラリ監査

機能

依存関係解析ツールは、アプリケーションが利用する OSS ライブラリの脆弱性、ライセンスリスク、バージョンの不整合を自動検出します。CVE データベースと照合し、危険な依存関係を早期に発見できます。CI/CD に組み込むことで、脆弱なライブラリの混入を防ぎ、セキュリティとコンプライアンスを継続的に維持できます。

統合方法

GitHub Actions や Azure DevOps のビルド前後にスキャンステップを追加し、依存関係を自動解析します。Snyk や Mend は SaaS と連携し、PR に脆弱性コメントを自動投稿できます。Dependency-Check や FOSSA は HTML/JSON レポートを生成し、成果物として保存できます。CI で定期スキャンを実行する運用も有効です。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Snyk OSS 依存ライブラリの脆弱性を検出し、修正提案も提示する 多言語 GitHub Actions と連携し、PR に脆弱性コメントを自動投稿する .json
OWASP Dependency-Check CVE データベースを基に依存関係の脆弱性を検出する 多言語 CLI でスキャンを実行し、HTML レポートを生成する .html
WhiteSource (Mend) ライセンスリスクと脆弱性を可視化し、依存関係の安全性を管理する 多言語 GitHub / Azure DevOps と連携し、依存関係を継続的に監査する .json
FOSSA OSS ライセンスと脆弱性を包括的に分析し、コンプライアンスを支援する 多言語 GitHub Actions で自動スキャンを実行し、レポートを生成する .json

コードサンプル(Snyk)

- name: Run Snyk
  uses: snyk/actions/node@master
  env:
    SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}

🛡 3. 脆弱性管理・セキュリティスキャン

機能

脆弱性スキャンツールは、アプリケーション・コンテナ・IaC(Terraform/Bicep)などの構成を解析し、既知の脆弱性や設定ミスを検出します。ゼロデイ攻撃や依存関係の脆弱性を早期に把握し、セキュリティリスクを最小化できます。CI/CD に組み込むことで、デプロイ前に安全性を自動チェックし、セキュアなリリースを実現します。

統合方法

GitHub Actions や Azure DevOps のジョブ内で CLI や公式アクションを実行し、コンテナイメージ・IaC ファイル・アプリケーションコードをスキャンします。Trivy や Grype は JSON レポートを生成し、成果物として保存可能。Checkov は IaC の設定ミスを検出し、PR コメントで警告を表示できます。セキュリティゲートとしても活用できます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Microsoft Defender for DevOps CI/CD 全体のセキュリティ状態を統合的に監視し、脆弱性を可視化する 多言語 Azure Security Center と連携し、リポジトリを自動スキャンする
Trivy コンテナ・IaC の脆弱性を高速にスキャンし、深刻度別にレポート化する 言語非依存 GitHub Actions で公式アクションを実行し、JSON レポートを生成する .json
Checkov Terraform/Bicep などの IaC の設定ミスを検出し、セキュリティ基準への準拠を支援する 言語非依存 CLI でスキャンを実行し、JSON レポートを成果物として保存する .json
Grype コンテナイメージの脆弱性を検出し、CVE 情報とともに可視化する 言語非依存 CLI でスキャンを実行し、JSON レポートを生成する .json

コードサンプル(Trivy)

- name: Scan image with Trivy
  uses: aquasecurity/trivy-action@master
  with:
    image-ref: myapp:latest
    format: json
    output: trivy-results.json

📋 4. 作業項目管理・トレーサビリティ

機能

作業項目管理ツールは、開発タスク・バグ・要求仕様を一元管理し、コード変更との紐付けを可能にします。PR やコミットと作業項目を連携することで、変更理由や背景を追跡しやすくなり、監査性やトレーサビリティが向上します。アジャイル開発の計画・進捗管理にも活用でき、チーム全体の透明性を高めます。

統合方法

GitHub Actions や Azure DevOps と連携し、PR 作成時に自動で作業項目を更新したり、コミットメッセージに ID を含めることで紐付けが可能です。Jira や Azure Boards は Webhook や Marketplace 拡張を通じて CI/CD と連携し、ビルド結果やデプロイ情報を自動反映できます。通知連携により、チームの情報共有も効率化されます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Azure Boards 作業項目・バグ・スプリントを管理し、開発プロセスを可視化する 言語非依存 GitHub PR と連携し、コミットメッセージで作業項目と紐付ける
Jira アジャイル開発の計画・管理を支援し、課題追跡を効率化する 言語非依存 GitHub Actions / Azure DevOps と連携し、課題更新を自動化する
Trello / Linear 軽量なタスク管理を提供し、チームの作業を視覚的に整理する 言語非依存 Webhook や Bot 連携で通知や同期を自動化する
ZenHub GitHub ネイティブのプロジェクト管理を提供し、開発フローを統合する 言語非依存 GitHub 拡張として直接統合される

コードサンプル(Azure Boards)

Fix login issue AB#123

🧪 5. テスト自動化(ユニット・E2E・API)

機能

テスト自動化ツールは、ユニットテスト・UI テスト・API テストを自動実行し、品質を継続的に保証します。CI/CD に組み込むことで、コード変更の影響を即座に検証でき、リグレッション防止や品質向上に貢献します。テスト結果は XML/HTML/JSON 形式で出力され、レポート可視化や失敗時のスクリーンショット取得も可能です。
Pester は PowerShell のテストフレームワークで、スクリプト・モジュール・DSC 構成のテストを自動化でき、Windows/PowerShell ベースの CI/CD に欠かせない存在です。

統合方法

GitHub Actions や Azure DevOps のジョブ内でテストフレームワークを実行し、成果物としてレポートを保存します。VSTest や xUnit は dotnet test と連携し、JUnit 形式で出力可能。Playwright や Cypress は UI テストを自動実行し、HTML レポートを生成します。Newman は API テストを CLI で実行し、CI/CD に容易に統合できます。
Pester は PowerShell スクリプトとして実行でき、Invoke-Pester により CI/CD で PowerShell コードや DSC 構成のテストを自動化できます。JUnit 形式の XML レポートも生成可能です。


ツール一覧(Pester 追加済み)

ツール名 機能 対応言語 統合方法 生成ファイル
VSTest .NET の MSTest/NUnit/xUnit テストを実行し、詳細な結果を取得する C# Azure DevOps / GitHub Actions で vstest.console.exe を実行する .trx
xUnit C# のユニットテストを実行し、テスト結果を XML 形式で出力する C# dotnet test と連携して CI で自動実行する .xml
NUnit C# のユニットテストを実行し、詳細な XML レポートを生成する C# dotnet test を利用して CI に統合する .xml
JUnit Java のユニットテストを実行し、標準的な XML レポートを生成する Java Maven / Gradle と連携して CI で実行する .xml
Pytest Python のユニットテストを実行し、JUnit 形式のレポートを生成する Python CLI で実行し、CI に組み込む .xml
Jest JS のユニットテストを実行し、JSON レポートを生成する Node.js CLI で実行し、CI に統合する .json
Selenium UI テストを自動化し、失敗時のスクリーンショットを取得する 多言語 GitHub Actions でブラウザテストを実行する .png
Playwright UI テストを高速に実行し、HTML レポートを生成する 多言語 GitHub Actions で公式アクションを利用する .html
Cypress E2E テストを実行し、詳細な HTML レポートを生成する Node.js GitHub Actions で CLI を実行する .html
Newman Postman API テストを CLI で実行し、HTML レポートを生成する 言語非依存 CI で newman を実行する .html
Pester(PowerShell) PowerShell スクリプト・モジュール・DSC 構成のテストを自動化し、Windows 環境の品質保証を強化する PowerShell GitHub Actions / Azure DevOps で Invoke-Pester を実行し、JUnit XML を生成する .xml

コードサンプル(VSTest)

- task: VSTest@2
  inputs:
    testSelector: 'testAssemblies'
    testAssemblyVer2: '**\*test.dll'

コードサンプル(Playwright)

- name: Run Playwright tests
  uses: microsoft/playwright-github-action@v1

コードサンプル(Newman)

- name: Run Newman
  run: newman run tests/postman_collection.json -r html --reporter-html-export newman-report.html

コードサンプル(Pester)

- name: Run Pester tests
  shell: pwsh
  run: |
    Invoke-Pester -OutputFormat NUnitXml -OutputFile TestResults.xml

✅ 6. 品質保証(コードカバレッジ・テストレポート)

機能

品質保証ツールは、テストカバレッジやテスト結果を可視化し、品質の定量評価を可能にします。カバレッジ不足の領域を特定し、テストの改善に役立ちます。CI/CD に組み込むことで、コード変更の品質を継続的に監視し、品質ゲートを設定することで基準未達のコードを自動検出できます。

統合方法

GitHub Actions や Azure DevOps のテストステップにカバレッジ収集を追加し、Coverlet や JaCoCo のレポートを XML/JSON 形式で生成します。Codecov と連携すれば、PR にカバレッジコメントを自動投稿し、可視化ダッシュボードで推移を確認できます。CI/CD の成果物としてレポートを保存し、品質監査にも利用できます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
JaCoCo Java のコードカバレッジを測定し、詳細な XML レポートを生成する Java Maven/Gradle と連携して CI で自動収集する .xml
Cobertura Java のカバレッジを測定し、CI 用の XML レポートを生成する Java Maven/Ant と連携して CI に統合する .xml
Coverlet .NET のカバレッジを収集し、複数形式のレポートを生成する C# dotnet test と連携して CI で自動実行する .json .xml
Codecov カバレッジ結果を可視化し、PR にコメントを自動投稿する 多言語 GitHub Actions と連携してレポートをアップロードする .xml .json
TestRail テストケース管理と結果集計を行う 言語非依存 API 連携で CI/CD のテスト結果を同期する

コードサンプル(Coverlet)

- name: Run tests with coverage
  run: dotnet test --collect:"XPlat Code Coverage"

コードサンプル(Codecov)

- name: Upload coverage to Codecov
  uses: codecov/codecov-action@v3
  with:
    token: ${{ secrets.CODECOV_TOKEN }}

📊 7. モニタリング・可観測性

機能

モニタリングツールは、アプリケーションのログ・メトリクス・トレースを収集し、稼働状況やパフォーマンスを可視化します。障害の早期検知やボトルネック分析に役立ち、運用の信頼性を高めます。Crashlytics のようなモバイル向けツールはクラッシュ情報をリアルタイム収集し、ユーザー影響を最小化できます。

統合方法

アプリケーションに SDK を組み込み、CI/CD ではデプロイ後に監視設定を自動適用します。Datadog や New Relic は API 経由でデプロイイベントを送信し、リリースごとのパフォーマンス変化を追跡できます。Crashlytics は Proguard マッピングや dSYM を CI からアップロードし、クラッシュ解析の精度を高めます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Datadog アプリのログ・メトリクス・トレースを統合監視し、異常検知を支援する 多言語 GitHub Actions で API を呼び出し、デプロイイベントを送信する
New Relic パフォーマンス監視とデプロイマーカーでリリース影響を可視化する 多言語 GitHub Actions で API を呼び出してイベントを送信する
Azure Monitor Azure リソースのログ・メトリクスを収集し、可視化する 多言語 SDK / REST API を利用して CI/CD と連携する
Prometheus / Grafana OSS ベースのメトリクス収集と可視化を提供する 言語非依存 Exporter や Webhook を利用して統合する
Firebase Crashlytics モバイルアプリのクラッシュをリアルタイム収集し、原因分析を支援する Kotlin, Java, Swift CI でマッピングファイルをアップロードして解析精度を高める .mapping .dSYM

コードサンプル(Crashlytics)

- name: Upload Proguard mapping
  run: ./gradlew app:uploadCrashlyticsMappingFileRelease

🚀 8. リリース管理・デプロイ戦略

機能

リリース管理ツールは、デプロイの段階管理、承認フロー、ロールバック、環境ごとの設定管理を支援します。GitOps ツールは Git を単一の信頼できるソースとして扱い、宣言的なデプロイを実現します。これにより、デプロイの再現性・透明性が向上し、複数環境の構成管理が容易になります。

統合方法

GitHub Actions や Azure DevOps からデプロイツールの API や CLI を呼び出し、アプリケーションを自動デプロイします。Argo CD や Flux のような GitOps ツールは、Git リポジトリの変更を自動検知し、Kubernetes クラスタへ反映します。Octopus Deploy は複雑なリリースフローを GUI と API で管理できます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Octopus Deploy デプロイの段階管理・承認・ロールバックを提供し、複雑なリリースを統合管理する 多言語 GitHub Actions / Azure DevOps から API を呼び出してデプロイを実行する
Argo CD / Flux GitOps により Git の状態を自動的に Kubernetes に反映する 言語非依存 GitHub Actions でマニフェスト更新を行い、自動同期させる
LaunchDarkly / Azure App Configuration フィーチャーフラグで機能のオン/オフを制御し、安全な段階的リリースを実現する 多言語 SDK / CLI / API を利用して CI/CD と連携する

コードサンプル(Octopus Deploy)

- name: Push package to Octopus
  uses: OctopusDeploy/push-package-action@v3
  with:
    api_key: ${{ secrets.OCTOPUS_API_KEY }}
    package: './dist/app.zip'

🔐 9. シークレット管理・認証連携

機能

シークレット管理ツールは、API キー・パスワード・証明書などの機密情報を安全に保管し、アプリケーションや CI/CD パイプラインに安全に供給します。アクセス制御やローテーション機能により、漏洩リスクを最小化できます。クラウドネイティブなシークレットストアは、監査ログや自動暗号化も提供します。

統合方法

GitHub Actions や Azure DevOps からシークレットストアにアクセスし、必要な値を安全に取得します。Azure Key Vault や HashiCorp Vault は専用アクションや CLI を提供し、パイプライン内で安全に参照できます。クラウドの Secret Manager は SDK や CLI を通じて統合し、環境変数として注入できます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Azure Key Vault Secrets を安全に保管し、アクセス制御と監査を提供する 多言語 GitHub Actions / Azure Pipelines で専用アクションを利用して取得する
HashiCorp Vault 高度なアクセス制御と動的シークレットを提供する 多言語 GitHub Actions / Azure DevOps で CLI や API を利用して取得する
1Password CLI / Doppler クロスクラウドな Secrets 管理を提供し、統合を簡素化する 言語非依存 CLI や専用アクションで CI/CD に統合する
AWS / GCP Secret Manager クラウドネイティブな Secrets 管理を提供する 言語非依存 SDK / CLI を利用して CI/CD に統合する

コードサンプル(Azure Key Vault)

- name: Fetch secrets
  uses: Azure/get-keyvault-secrets@v1
  with:
    keyvault: 'my-keyvault'
    secrets: 'DB_PASSWORD,API_KEY'

📦 10. アーティファクト管理・ビルドキャッシュ

機能

アーティファクト管理ツールは、ビルド成果物・パッケージ・バイナリを安全に保存し、再利用可能にします。キャッシュ機能によりビルド時間を短縮し、CI/CD の効率を向上させます。依存パッケージのバージョン管理やアクセス制御も提供し、チーム全体の開発体験を改善します。

統合方法

GitHub Actions や Azure DevOps のビルドステップでパッケージを生成し、アーティファクト管理ツールにアップロードします。npm や NuGet のようなパッケージマネージャと連携し、CI/CD で自動公開できます。キャッシュ機能を利用すれば、依存関係のインストール時間を大幅に短縮できます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
GitHub Packages / Azure Artifacts パッケージの保存・配布を行い、依存管理を効率化する 多言語 CI でパッケージを生成し、パッケージレジストリに自動公開する .nupkg .jar .tgz
JFrog Artifactory バイナリ・パッケージを統合管理し、アクセス制御を提供する 多言語 GitHub Actions / Azure DevOps で CLI や API を利用してアップロードする 任意
npm audit npm 依存の脆弱性を検出する Node.js CI で npm audit を実行してレポートを生成する
NuGet CLI .NET パッケージを生成・公開する C# CI で nuget push を実行して公開する .nupkg

コードサンプル(npm publish)

- name: Publish to GitHub Packages
  run: npm publish
  env:
    NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

🛠 11. ビルドツール・パッケージ管理

機能

ビルドツールは、ソースコードのコンパイル、依存関係管理、テスト実行、パッケージ生成を自動化します。CI/CD に組み込むことで、ビルドの再現性を確保し、環境差異による問題を防ぎます。パッケージ管理ツールは、依存関係の解決とバージョン管理を効率化し、開発体験を向上させます。

統合方法

GitHub Actions や Azure DevOps のビルドステップでビルドツールを実行し、成果物を生成します。Gradle や Maven は Java プロジェクトの標準ビルドツールとして CI に容易に統合できます。Cargo や dotnet CLI は言語専用のビルド・テスト・パッケージ生成を一貫して実行できます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Gradle Java/Kotlin のビルド・テスト・パッケージ生成を自動化する Java, Kotlin GitHub Actions で gradle build を実行する .jar .war
Maven Java の標準ビルドツールとして依存管理とビルドを行う Java CLI で mvn clean install を実行する .jar .war
Cargo Rust のビルド・テスト・バイナリ生成を行う Rust CLI で cargo build を実行する 実行バイナリ
dotnet CLI .NET のビルド・テスト・パッケージ生成を行う C# CLI で dotnet build dotnet test を実行する .dll .exe .nupkg

コードサンプル(Gradle)

- name: Build with Gradle
  run: ./gradlew build

🍽 12. 構成管理・プロビジョニング

機能

構成管理ツールは、サーバーやクラウド環境の設定をコードとして管理し、環境の再現性と一貫性を保証します。IaC(Infrastructure as Code)により、環境構築を自動化し、手作業による設定ミスを防ぎます。構成のドリフト検出や自動修復も可能で、運用負荷を大幅に削減できます。

統合方法

GitHub Actions や Azure DevOps のジョブ内で IaC ツールを実行し、環境構築や更新を自動化します。Terraform や Pulumi はクラウド環境を宣言的・コードベースで管理し、CI/CD で planapply を自動実行できます。Azure Automation や DSC は構成の適用と監視を自動化し、運用の安定性を高めます。


ツール一覧

ツール名 機能 対応言語 統合方法 生成ファイル
Chef サーバー構成をコード化し、自動適用する Ruby CLI で構成を適用し、CI/CD に統合する .log
Ansible エージェントレスで構成管理を行い、環境構築を自動化する YAML CLI で Playbook を実行し、CI に統合する .log
Terraform クラウド環境を宣言的に管理し、IaC を実現する HCL GitHub Actions で terraform apply を実行する .tfstate .tfplan
Pulumi TypeScript/Python/C# で IaC を実現する 多言語 CLI で pulumi up を実行し、CI に統合する .json
Azure Automation Runbook による構成管理と自動化を提供する PowerShell/Python GitHub Actions で Runbook を起動する
PowerShell DSC Windows/Linux の構成を宣言的に管理する PowerShell Azure Automation DSC と連携して構成を適用する .mof

コードサンプル(Terraform)

- name: Terraform Apply
  run: |
    terraform init
    terraform apply -auto-approve

コードサンプル(Azure Automation Runbook)

- name: Start Azure Automation Runbook
  uses: azure/CLI@v1
  with:
    inlineScript: |
      az automation runbook start \
        --automation-account-name my-account \
        --name "MyRunbook" \
        --resource-group my-rg

コードサンプル(PowerShell DSC)

Configuration WebServerConfig {
    Node "localhost" {
        WindowsFeature IIS {
            Name = "Web-Server"
            Ensure = "Present"
        }
    }
}

WebServerConfig

生成されるファイル:

.\WebServerConfig\localhost.mof

🧩 おわりに

CI/CD パイプラインは、単なる自動化の仕組みではなく、
品質・セキュリティ・運用・開発体験を継続的に向上させるための基盤です。

本記事では、以下をすべて網羅しました。

  • 各カテゴリの代表的な外部ツール
  • 機能(文章化)
  • 統合方法(文章化)
  • 生成されるファイル(拡張子+例)
  • GitHub Actions / Azure DevOps のコードサンプル
  • 12章構成の完全版カタログ
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?