GitHub Actions 統合
Archyl は、アーキテクチャガバナンスを CI/CD パイプラインに直接統合する2つの公式 GitHub Actions を提供しています:
| Action | トリガー | 目的 |
|---|---|---|
| Conformance Check | プルリクエスト | アーキテクチャルールに対してコード変更を検証 |
| Incremental Discovery | main へのプッシュ | コード変更に合わせて C4 モデルを同期 |
前提条件
Actions を使用する前に、以下が必要です:
- Archyl API キー — Profile > API Keys で書き込みスコープ付きのキーを作成
- Project ID — プロジェクトの URL または設定ページで確認
- API キーを GitHub シークレットとして保存: Settings > Secrets > Actions >
ARCHYL_API_KEY - オプションでプロジェクト ID を変数として保存: Settings > Variables > Actions >
ARCHYL_PROJECT_ID
Conformance Check Action
プルリクエストごとに適合性ルールを実行し、違反を PR コメントとコミットステータスチェックとして報告します。
クイックセットアップ
# .github/workflows/archyl-conformance.yml
name: Architecture Conformance
on:
pull_request:
branches: [main]
jobs:
conformance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl/archyl/.github/actions/conformance-check@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
動作の仕組み
- Action が PR で変更されたすべてのファイルを収集
- ファイル内容が head SHA で取得される
- ファイル+内容が評価のために Archyl API に送信される
- 有効なすべての適合性ルールが変更ファイルに対して評価される
- コミットステータスが投稿される(合格/不合格)
- 違反の詳細を含む PR コメントが投稿される
- Critical または High の違反が見つかった場合、ワークフローが失敗する
PR コメント
違反が見つかると、Archyl は次のようなコメントを投稿します:
Archyl Conformance Check — Failed
12 ファイル分析 — 3 件の違反が見つかりました。
重大度 件数 Critical 1 High 2
コメントは後続のプッシュで更新されます — 重複コメントは作成されません。
入力
| 入力 | 必須 | デフォルト | 説明 |
|---|---|---|---|
api-key |
はい | — | 書き込みスコープ付き Archyl API キー |
project-id |
はい | — | Archyl プロジェクト UUID |
api-url |
いいえ | https://api.archyl.com/api/v1 |
カスタム API URL(セルフホスト用) |
fail-on-violations |
いいえ | true |
Critical/High 違反時にワークフローを失敗させる |
comment |
いいえ | true |
結果を含む PR コメントを投稿 |
出力
| 出力 | 説明 |
|---|---|
passed |
Critical/High 違反なしの場合 true、それ以外は false |
violations |
見つかった違反の総数 |
critical |
Critical 違反の数 |
high |
High 違反の数 |
出力の使用
後続のステップで出力を使用できます:
- uses: archyl/archyl/.github/actions/conformance-check@main
id: archyl
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
fail-on-violations: "false" # 失敗させず、手動で処理
- name: Custom handling
if: steps.archyl.outputs.passed == 'false'
run: |
echo "Found ${{ steps.archyl.outputs.violations }} violations"
echo "Critical: ${{ steps.archyl.outputs.critical }}"
echo "High: ${{ steps.archyl.outputs.high }}"
Incremental Discovery Action
デフォルトブランチへのプッシュ時に変更ファイルを分析し、C4 モデルを最新に保つための保留中のディスカバリーを作成します。
クイックセットアップ
# .github/workflows/archyl-discovery.yml
name: Architecture Sync
on:
push:
branches: [main]
jobs:
discovery:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2 # git diff に必要
- uses: archyl/archyl/.github/actions/incremental-discovery@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
動作の仕組み
- Action が前回のコミットと現在のコミット間の git diff を計算
- 変更ファイルの内容が head SHA で取得される
- ファイルが AI 分析のために Archyl API に送信される
- ソースファイルのみが分析される(テストファイル、生成コードなどはスキップ)
- 新しい C4 要素がレビュー用の保留中のディスカバリーとして作成される
- 既存の要素は自動的に重複排除される — 重複なし
- ディスカバリージョブステータスを含むステップサマリーが投稿される
入力
| 入力 | 必須 | デフォルト | 説明 |
|---|---|---|---|
api-key |
はい | — | 書き込みスコープ付き Archyl API キー |
project-id |
はい | — | Archyl プロジェクト UUID |
api-url |
いいえ | https://api.archyl.com/api/v1 |
カスタム API URL(セルフホスト用) |
出力
| 出力 | 説明 |
|---|---|
job-id |
ディスカバリージョブ ID(API 経由でステータスをポーリングに使用) |
changed-files |
検出された変更ファイルの数 |
重要な注意事項
- checkout ステップで fetch-depth: 2 が必要(git が diff を計算するため)
- ディスカバリーは保留中の要素を作成します — 承認するまで C4 モデルには表示されません
- ソースファイルのみが分析されます(
.go、.ts、.py、.javaなど) — 設定ファイル、ドキュメント、アセットはスキップされます - Action は
pushとpull_requestの両方のイベントで動作します
組み合わせワークフロー
推奨セットアップは両方の Actions を併用します — PR で適合性チェック、マージでディスカバリー:
# .github/workflows/archyl.yml
name: Archyl Architecture
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
conformance:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl/archyl/.github/actions/conformance-check@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
discovery:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: archyl/archyl/.github/actions/incremental-discovery@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
これにより、完全なアーキテクチャガバナンスループが実現します:
- 開発者が PR を作成
- 適合性ルールがアーキテクチャに対して変更を検証
- 違反が PR コメントとして報告される
- 承認・マージ後、インクリメンタルディスカバリーが C4 モデルを更新
- モデルは次の PR チェックに向けて常に最新
セルフホスト Archyl
Archyl をオンプレミスで実行している場合、api-url 入力をインスタンスに設定します:
- uses: archyl/archyl/.github/actions/conformance-check@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
api-url: "https://archyl.internal.company.com/api/v1"
Webhook 代替手段
GitHub Actions よりも Webhook を好む場合、プロジェクト設定で直接 push/PR Webhook を設定できます。詳細は Webhooks を参照してください。
Webhook アプローチ:
- GitHub Action の設定が不要
- API アクセスにプロジェクトオーナーの OAuth トークンを使用
- GitHub と GitLab をサポート
- Archyl のインフラストラクチャで実行(GitHub Action の分数を消費しない)
GitHub Action アプローチ:
- 自分の API キーを使用(より明示的)
- GitHub のインフラストラクチャで実行
- カスタマイズが容易(条件追加、パスフィルタリング、他のステップとの組み合わせ)
- GitHub Actions をサポートするすべての Git プロバイダーで動作