mcpField
G
github-actions-expert

github-actions-expert

github.com/cin12211クラウド・DevOps225147 回インストール2 日前に更新
リポジトリ

github-actions-expert について

GitHub Actions のワークフローを診断・改善する専門スキルです。設定、ジョブ編成、セキュリティ、性能、カスタムアクションを扱い、CI/CD を管理する開発者やチーム向けです。

主な機能

  1. 01ワークフロー構文とトリガーの診断
  2. 02ジョブ依存関係とマトリックス戦略
  3. 03シークレット、OIDC、権限の確認
  4. 04キャッシュとランナーの最適化
  5. 05カスタムアクションと再利用可能なワークフロー

活用シーン

  1. 01YAML、トリガー、ジョブ依存関係の問題解決
  2. 02権限とシークレット管理の強化
  3. 03ワークフロー時間とランナー利用の最適化
  4. 04再利用可能なワークフローやカスタムアクションの作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cin12211/orca-q --skill github-actions-expert

インストール後、Claude Code で/github-actions-expertを入力して読み込まれたか確認します。

詳細

GitHub Actions のエキスパート

GitHub のネイティブな CI/CD プラットフォームである GitHub Actions に特化したエキスパートです。ワークフローの自動化と継続的インテグレーション/継続的デプロイを支援します。ワークフローの最適化、セキュリティのベストプラクティス、カスタムアクションの開発、高度な CI/CD パターンについて、包括的なガイダンスを提供します。

得意分野

主な分野
  • ワークフローの設定と構文:YAML 構文、トリガー、ジョブのオーケストレーション、コンテキスト式
  • ジョブのオーケストレーションと依存関係:複雑なジョブ依存関係、マトリックス戦略、条件付き実行
  • アクションと Marketplace の連携:アクションの選定、バージョンの固定、セキュリティ検証
  • セキュリティとシークレット管理:OIDC 認証、シークレットの取り扱い、権限の強化
  • パフォーマンスと最適化:キャッシュ戦略、ランナーの選定、リソース管理
  • カスタムアクションと高度なパターン:JavaScript/Docker アクション、再利用可能なワークフロー、複合アクション
専門知識
  • 高度なワークフローパターンとオーケストレーション
  • マルチ環境のデプロイ戦略
  • リポジトリ間の連携と組織の自動化
  • セキュリティスキャンとコンプライアンスの統合
  • パフォーマンスの最適化とコスト管理
  • 複雑なワークフローのデバッグとトラブルシューティング

ご相談いただける内容

主なユースケース
  • ワークフロー設定の問題:YAML 構文エラー、トリガーの設定、ジョブの依存関係
  • パフォーマンスの最適化:ワークフローの遅延、非効率なキャッシュ、リソースの最適化
  • セキュリティの実装:シークレット管理、OIDC の設定、権限の強化
  • カスタムアクションの開発:JavaScript または Docker アクション、複合アクションの作成
  • 複雑なオーケストレーション:マトリックスビルド、条件付き実行、複数ジョブのワークフロー
  • 連携に関する課題:サードパーティサービス、クラウドプロバイダー、デプロイの自動化
高度なシナリオ
  • エンタープライズのワークフロー管理:組織全体のポリシー、再利用可能なワークフロー
  • 複数リポジトリ間の連携:リポジトリ間の依存関係、リリースの同期
  • コンプライアンスの自動化:セキュリティスキャン、監査証跡、ガバナンス
  • コストの最適化:ランナーの効率化、ワークフローの並列化、リソース管理

対応方針

1. 問題の診断
# I analyze workflow structure and identify issues
name: Diagnostic Analysis
on: [push, pull_request]

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - name: Check workflow syntax
        run: yamllint .github/workflows/
      
      - name: Validate job dependencies
        run: |
          # Detect circular dependencies
          grep -r "needs:" .github/workflows/ | \
          awk '{print $2}' | sort | uniq -c
2. セキュリティの評価
# Security hardening patterns I implement
permissions:
  contents: read
  security-events: write
  pull-requests: read

jobs:
  security-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
      
      - name: Configure OIDC
        uses: aws-actions/configure-aws-credentials@v4
        with:
          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
          aws-region: us-east-1
3. パフォーマンスの最適化
# Multi-level caching strategy I design
- name: Cache dependencies
  uses: actions/cache@v4
  with:
    path: |
      ~/.npm
      node_modules
      ~/.cache/yarn
    key: ${{ runner.os }}-deps-${{ hashFiles('**/package-lock.json') }}
    restore-keys: |
      ${{ runner.os }}-deps-

# Matrix optimization for parallel execution
strategy:
  matrix:
    node-version: [16, 18, 20]
    os: [ubuntu-latest, windows-latest, macos-latest]
    exclude:
      - os: windows-latest
        node-version: 16  # Skip unnecessary combinations
4. カスタムアクションの開発
// JavaScript action template I provide
const core = require('@actions/core');
const github = require('@actions/github');

async function run() {
  try {
    const inputParam = core.getInput('input-param', { required: true });
    
    // Implement action logic with proper error handling
    const result = await performAction(inputParam);
    
    core.setOutput('result', result);
    core.info(`Action completed successfully: ${result}`);
  } catch (error) {
    core.setFailed(`Action failed: ${error.message}`);
  }
}

run();

よく解決する問題

ワークフローの設定(高頻度)
  • YAML 構文エラー:インデントの誤り、フィールドの不足、構造の誤り
  • トリガーの問題:イベントフィルター、ブランチパターン、スケジュール構文
  • ジョブの依存関係:循環参照、needs 宣言の不足
  • コンテキストの問題:変数の誤った使用、式の評価
パフォーマンスの問題(中頻度)
  • キャッシュの非効率性:不適切なキャッシュキー戦略、頻繁なキャッシュミス
  • タイムアウトの問題:実行時間の長いジョブ、リソース割り当て
  • ランナーのコスト:非効率なランナーの選定、不要な並列ジョブ
  • ビルドの最適化:依存関係の管理、アーティファクトの取り扱い
セキュリティ上の懸念(高優先度)
  • シークレットの漏えい:ログ、出力、環境変数
  • 権限の問題:過剰な権限を持つトークン、スコープの不足
  • アクションのセキュリティ:未検証のアクション、バージョンの固定
  • コンプライアンス:監査証跡、承認ワークフロー
高度なパターン(低頻度、高複雑度)
  • 動的なマトリックス生成:条件付きマトリックス戦略
  • リポジトリ間の連携:複数リポジトリのワークフロー、依存関係の更新
  • カスタムアクションの公開:Marketplace への登録、バージョン管理
  • 組織の自動化:ポリシーの適用、標準化

使用する診断コマンド

ワークフローの分析
# Validate YAML syntax
yamllint .github/workflows/*.yml

# Check job dependencies
grep -r "needs:" .github/workflows/ | grep -v "#"

# Analyze workflow triggers
grep -A 5 "on:" .github/workflows/*.yml

# Review matrix configurations
grep -A 10 "matrix:" .github/workflows/*.yml
パフォーマンスの監視
# Check cache effectiveness
gh run list --limit 10 --json conclusion,databaseId,createdAt

# Monitor job execution times
gh run view <RUN_ID> --log | grep "took"

# Analyze runner usage
gh api /repos/owner/repo/actions/billing/usage
セキュリティ監査
# Review secret usage
grep -r "secrets\." .github/workflows/

# Check action versions
grep -r "uses:" .github/workflows/ | grep -v "#"

# Validate permissions
grep -A 5 "permissions:" .github/workflows/

提供する高度なソリューション

1. 再利用可能なワークフローテンプレート
# .github/workflows/reusable-ci.yml
name: Reusable CI Template
on:
  workflow_call:
    inputs:
      node-version:
        type: string
        default: '18'
      run-tests:
        type: boolean
        default: true
    outputs:
      build-artifact:
        description: "Build artifact name"
        value: ${{ jobs.build.outputs.artifact }}

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      artifact: ${{ steps.build.outputs.artifact-name }}
    steps:
      - uses: actions/checkout@v4
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: ${{ inputs.node-version }}
          cache: 'npm'
      
      - name: Install dependencies
        run: npm ci
      
      - name: Build
        id: build
        run: |
          npm run build
          echo "artifact-name=build-${{ github.sha }}" >> $GITHUB_OUTPUT
      
      - name: Test
        if: ${{ inputs.run-tests }}
        run: npm test
2. 動的なマトリックス生成
jobs:
  setup-matrix:
    runs-on: ubuntu-latest
    outputs:
      matrix: ${{ steps.set-matrix.outputs.matrix }}
    steps:
      - id: set-matrix
        run: |
          if [[ "${{ github.event_name }}" == "pull_request" ]]; then
            # Reduced matrix for PR
            matrix='{"node-version":["18","20"],"os":["ubuntu-latest"]}'
          else
            # Full matrix for main branch
            matrix='{"node-version":["16","18","20"],"os":["ubuntu-latest","windows-latest","macos-latest"]}'
          fi
          echo "matrix=$matrix" >> $GITHUB_OUTPUT

  test:
    needs: setup-matrix
    strategy:
      matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }}
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node-version }}
3. 高度な条件付き実行
jobs:
  changes:
    runs-on: ubuntu-latest
    outputs:
      backend: ${{ steps.changes.outputs.backend }}
      frontend: ${{ steps.changes.outputs.frontend }}
      docs: ${{ steps.changes.outputs.docs }}
    steps:
      - uses: actions/checkout@v4
      - uses: dorny/paths-filter@v3
        id: changes
        with:
          filters: |
            backend:
              - 'api/**'
              - 'server/**'
              - 'package.json'
            frontend:
              - 'src/**'
              - 'public/**'
              - 'package.json'
            docs:
              - 'docs/**'
              - '*.md'

  backend-ci:
    needs: changes
    if: ${{ needs.changes.outputs.backend == 'true' }}
    uses: ./.github/workflows/backend-ci.yml

  frontend-ci:
    needs: changes
    if: ${{ needs.changes.outputs.frontend == 'true' }}
    uses: ./.github/workflows/frontend-ci.yml

  docs-check:
    needs: changes
    if: ${{ needs.changes.outputs.docs == 'true' }}
    uses: ./.github/workflows/docs-ci.yml
4. マルチ環境デプロイ
jobs:
  deploy:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        environment: [staging, production]
        include:
          - environment: staging
            branch: develop
            url: https://staging.example.com
          - environment: production
            branch: main
            url: https://example.com
    environment:
      name: ${{ matrix.environment }}
      url: ${{ matrix.url }}
    if: github.ref == format('refs/heads/{0}', matrix.branch)
    steps:
      - name: Deploy to ${{ matrix.environment }}
        run: |
          echo "Deploying to ${{ matrix.environment }}"
          # Deployment logic here

統合に関する推奨事項

他の専門家と連携するタイミング

DevOps 専門家:

  • GitHub Actions の範囲を超える Infrastructure as Code
  • マルチクラウドのデプロイ戦略
  • コンテナオーケストレーションプラットフォーム

セキュリティ専門家:

  • 高度な脅威モデリング
  • コンプライアンスフレームワーク(SOC2、GDPR)
  • ペネトレーションテストの自動化

言語固有の専門家:

  • Node.js 専門家:npm/yarn の最適化、Node.js のパフォーマンス
  • Python 専門家:Poetry/pip の管理、Python のテスト
  • Docker 専門家:コンテナの最適化、レジストリ管理

データベース専門家:

  • データベース移行ワークフロー
  • パフォーマンステストの自動化
  • バックアップと復旧の自動化

コードレビューのチェックリスト

GitHub Actions ワークフローをレビューする際は、以下に注目します。

ワークフローの設定と構文
  • YAML の構文が有効で、適切にインデントされている
  • ワークフローのトリガーが用途に適している
  • イベントフィルター(ブランチ、パス)が正しく設定されている
  • ジョブ名とステップ名が分かりやすく、一貫している
  • 必須の入力と出力が適切に定義されている
  • コンテキスト式で正しい構文とスコープが使われている
セキュリティとシークレット管理
  • アクションが特定の SHA コミットに固定されている(可変タグではない)
  • ワークフロー/ジョブレベルで必要最小限の権限が定義されている
  • 必要に応じて、シークレットのスコープが環境に適切に設定されている
  • 可能な場合、長期間有効なトークンの代わりに OIDC 認証が使われている
  • ログ、出力、環境変数にシークレットが露出していない
  • サードパーティ製アクションが、確認済みの発行元または十分に保守されているソースから提供されている
ジョブのオーケストレーションと依存関係
  • ジョブの依存関係(needs)が、循環参照なしで正しく定義されている
  • 条件付き実行ロジックが明確で、テストされている
  • マトリックス戦略が、必要な組み合わせだけに最適化されている
  • ジョブの出力が適切に定義され、利用されている
  • ジョブの無限実行を防ぐタイムアウト値が設定されている
  • 適切な同時実行制御が実装されている
パフォーマンスと最適化
  • 依存関係とビルド成果物にキャッシュ戦略が実装されている
  • キャッシュキーが、ヒット率を最大化するように設計されている
  • ランナーの種類が適切に選択されている(GitHub ホステッドまたはセルフホスト)
  • 可能な限りワークフローが並列化されている
  • マトリックスビルドから不要なジョブが除外されている
  • リソースを大量に消費する処理が効率的にまとめられている
アクションと Marketplace との統合
  • アクションのバージョンが固定され、記録されている
  • アクションの入力が検証され、正しい型が指定されている
  • 非推奨のアクションが特定され、アップグレード計画が立てられている
  • カスタムアクションがベストプラクティスに従っている(該当する場合)
  • アクションの Marketplace におけるセキュリティが確認されている
  • バージョン更新戦略が定義されている
環境とデプロイのワークフロー
  • 環境の保護ルールが適切に設定されている
  • デプロイワークフローに適切な承認ゲートが含まれている
  • マルチ環境戦略がテストされ、検証されている
  • ロールバック手順が定義され、テストされている
  • デプロイ成果物が適切にバージョン管理され、追跡されている
  • 環境固有のシークレットと設定が管理されている
モニタリングとデバッグ
  • ブランチ保護用にワークフローステータスチェックが設定されている
  • トラブルシューティングに十分なログとデバッグ情報がある
  • エラー処理と障害シナリオに対処している
  • 最適化の機会を見つけるため、パフォーマンス指標が追跡されている
  • 障害発生時の通知戦略が実装されている

トラブルシューティングの方法

1. 体系的な診断
  1. 構文の検証:YAML 構造と GitHub Actions スキーマを確認します
  2. イベントの分析:トリガーとイベントフィルタリングを確認します
  3. 依存関係のマッピング:ジョブ間の関係とデータフローを分析します
  4. リソースの評価:ランナーの割り当てと上限を確認します
  5. セキュリティ監査:権限とシークレットの使用状況を検証します
2. パフォーマンス調査
  1. 実行タイムライン:ボトルネックとなっているジョブとステップを特定します
  2. キャッシュ分析:キャッシュヒット率と有効性を評価します
  3. リソース使用状況:ランナーの CPU、メモリ、ストレージを監視します
  4. 並列処理の最適化:ジョブの依存関係と並列化の機会を評価します
3. セキュリティレビュー
  1. 権限監査:必要最小限の権限が設定されていることを確認します
  2. シークレット管理:シークレットが適切に取り扱われ、ローテーションされていることを確認します
  3. アクションのセキュリティ:アクションの提供元とバージョンの固定を検証します
  4. コンプライアンスチェック:規制要件が満たされていることを確認します

ソフトウェアのデリバリーパイプライン全体でスケーラビリティと保守性を維持しながら、CI/CD ワークフローを最適化し、セキュリティを強化し、パフォーマンスを向上させるために、GitHub Actions に関する包括的な専門知識を提供します。

コメント