GitHub Actions 統合

Sync the model from CI with the official GitHub Action

Archyl は、アーキテクチャガバナンスを CI/CD パイプラインに直接統合する 6 つの公式 GitHub Actions を提供しています。

Action トリガー 目的
Conformance Check プルリクエスト アーキテクチャルールに対してコード変更を検証
Drift Score プルリクエスト ドリフトスコアを計算し、品質ゲートを適用
Generate Context main へのプッシュ AI エージェント向けに archyl.txt を生成
Auto CR main へのプッシュ マージ時にアーキテクチャ変更リクエストを作成
Release プッシュ / タグ Archyl でリリースを追跡
Sync main へのプッシュ archyl.yaml DSL を Archyl に同期

すべてのアクションは archyl-com/actions で公開されており、@v1 でバージョン管理されています。

前提条件

アクションを使用する前に、以下が必要です:

  1. Archyl API キー — プロフィール > APIキー で書き込みスコープ付きのキーを作成
  2. 組織 ID — 組織の設定ページで確認
  3. プロジェクト ID — プロジェクトの URL または設定ページで確認
  4. これらを GitHub のシークレットと変数として保存します:
Settings > Secrets > Actions:
  ARCHYL_API_KEY       # Your API key (secret)

Settings > Variables > Actions:
  ARCHYL_ORG_ID        # Organization UUID
  ARCHYL_PROJECT_ID    # Project UUID

クイックスタート

最も手早く始めるには、Archyl の再利用可能なワークフローを使います — PR 用と main ブランチへのプッシュ用の 2 つです:

# .github/workflows/archyl.yml
name: Archyl Architecture

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  # Conformance check + drift score on PRs (run in parallel)
  pr-checks:
    if: github.event_name == 'pull_request'
    uses: archyl-com/actions/.github/workflows/archyl-pr.yml@v1
    with:
      organization-id: ${{ vars.ARCHYL_ORG_ID }}
      project-id: ${{ vars.ARCHYL_PROJECT_ID }}
      drift-threshold: 70
    secrets:
      api-key: ${{ secrets.ARCHYL_API_KEY }}

  # Generate context + sync + release on merge to main
  main-sync:
    if: github.event_name == 'push'
    uses: archyl-com/actions/.github/workflows/archyl-main.yml@v1
    with:
      organization-id: ${{ vars.ARCHYL_ORG_ID }}
      project-id: ${{ vars.ARCHYL_PROJECT_ID }}
      sync: true
      release: true
      release-environment: 'production'
    secrets:
      api-key: ${{ secrets.ARCHYL_API_KEY }}

これにより、完全なアーキテクチャガバナンスループが実現します。適合性ルールがすべての PR を検証し、ドリフトスコアがコードとモデルの一致度を追跡し、マージ時にはモデルが自動的に同期されます。

個別のアクション

Conformance Check

プルリクエストで変更されたファイルに対して適合性ルールを実行します。違反をインラインで注釈し、PR コメントでサマリーを投稿します。

- uses: archyl-com/actions/conformance-check@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    organization-id: ${{ vars.ARCHYL_ORG_ID }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}

入力

入力 必須 デフォルト 説明
api-key はい — 書き込みスコープ付きの Archyl API キー
organization-id はい — Archyl 組織 UUID
project-id はい — Archyl プロジェクト UUID
api-url いいえ https://api.archyl.com カスタム API URL(セルフホスト用)
fail-on いいえ error チェックを失敗させる最小重大度:error、warning、または none
comment-on-pr いいえ true プルリクエストにサマリーコメントを投稿
github-token いいえ ${{ github.token }} PR コメント用の GitHub トークン
max-file-lines いいえ 200 ファイルごとに送信する最大行数(トークン使用量を削減)
chunk-size いいえ 20 API 呼び出しごとに送信するファイル数(大きな diff 向け)

出力

出力 説明
check-id 適合性チェックの UUID
total-violations 見つかった違反の総数
errors error レベルの違反の数
warnings warning レベルの違反の数
infos info レベルの違反の数
status チェック結果:pass または fail

出力の使用

- uses: archyl-com/actions/conformance-check@v1
  id: conformance
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    organization-id: ${{ vars.ARCHYL_ORG_ID }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}
    fail-on: none  # Don't fail, handle manually

- name: Custom handling
  if: steps.conformance.outputs.status == 'fail'
  run: |
    echo "Found ${{ steps.conformance.outputs.total-violations }} violations"
    echo "Errors: ${{ steps.conformance.outputs.errors }}"
    echo "Warnings: ${{ steps.conformance.outputs.warnings }}"

Drift Score

アーキテクチャのドリフトスコア(コードベースが C4 モデルとどれだけ一致しているか)を計算します。オプションで、スコアがしきい値を下回った場合にビルドを失敗させる品質ゲートを適用できます。

- uses: archyl-com/actions/drift-score@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    organization-id: ${{ vars.ARCHYL_ORG_ID }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}
    threshold: 70

入力

入力 必須 デフォルト 説明
api-key はい — 書き込みスコープ付きの Archyl API キー
organization-id はい — Archyl 組織 UUID
project-id はい — Archyl プロジェクト UUID
api-url いいえ https://api.archyl.com カスタム API URL(セルフホスト用)
threshold いいえ 0 許容される最小ドリフトスコア(0-100)。スコアがこれを下回ると失敗します。0 に設定すると失敗しません。
poll-interval いいえ 5 計算の完了を待つ間、ステータスをポーリングする間隔(秒)
poll-timeout いいえ 300 計算の完了を待つ最大秒数
comment-on-pr いいえ false プルリクエストにサマリーコメントを投稿
github-token いいえ ${{ github.token }} PR コメント用の GitHub トークン

出力

出力 説明
score ドリフトスコア(0-100)
score-id ドリフトスコアレコードの UUID
total-elements 比較された要素の総数
matched-count 一致した要素の数
missing-in-code コードに存在しない要素の数
new-in-code コード内で新たに見つかった要素の数
status 計算ステータス:completed または failed

Generate Context

AI エージェントや LLM 向けに最適化された、アーキテクチャコンテキストを含む archyl.txt ファイルを生成します。ファイルが変更された場合は自動でコミットすることもできます。

- uses: archyl-com/actions/generate-context@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    organization-id: ${{ vars.ARCHYL_ORG_ID }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}
    commit: 'true'

入力

入力 必須 デフォルト 説明
api-key はい — 読み取りスコープ付きの Archyl API キー
organization-id はい — Archyl 組織 UUID
project-id はい — Archyl プロジェクト UUID
api-url いいえ https://api.archyl.com カスタム API URL(セルフホスト用)
output-file いいえ archyl.txt 生成したコンテキストファイルの書き込み先パス
format いいえ markdown 出力形式:LLM 向けに最適化されたブリーフィングには markdown、構造化 JSON + Markdown には full
commit いいえ false 生成したファイルが変更された場合に自動コミット
commit-message いいえ chore: update archyl.txt architecture context 自動コミット時のコミットメッセージ

出力

出力 説明
file-path 生成されたコンテキストファイルのパス
changed ファイル内容が変更されたかどうか(true または false)
token-count 生成されたファイルのおおよそのトークン数

Auto CR

コードが main にマージされたときに、Archyl でアーキテクチャ変更リクエストを自動作成します。diff を分析してアーキテクチャに関わる変更を検出し、レビューのために追跡します。

- uses: archyl-com/actions/auto-cr@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    organization-id: ${{ vars.ARCHYL_ORG_ID }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}

入力

入力 必須 デフォルト 説明
api-key はい — 書き込みスコープ付きの Archyl API キー
organization-id はい — Archyl 組織 UUID
project-id はい — Archyl プロジェクト UUID
api-url いいえ https://api.archyl.com カスタム API URL(セルフホスト用)
github-token いいえ ${{ github.token }} コミットコメントと diff へのアクセスに使用する GitHub トークン
base-ref いいえ (自動検出) 比較対象のベース ref
comment-on-commit いいえ false 変更リクエストへのリンクを含むコメントをマージコミットに投稿

出力

出力 説明
request-id 作成された変更リクエストの UUID
changes-detected 見つかったアーキテクチャ関連の変更の数
status created、skipped(変更なし)、または failed

Release

CI パイプラインから Archyl のリリースを作成または更新します。デプロイを追跡し、環境や C4 要素に関連付け、DORA メトリクスに反映できます。

- uses: archyl-com/actions/release@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}
    status: deployed
    environment: production

入力

入力 必須 デフォルト 説明
api-key はい — 書き込みスコープ付きの Archyl API キー
project-id はい — Archyl プロジェクト UUID
api-url いいえ https://api.archyl.com カスタム API URL(セルフホスト用)
version いいえ $GITHUB_REF_NAME リリースバージョン
status いいえ deployed リリースステータス:planned、in_progress、deployed、rolled_back、failed
changelog いいえ — リリースの変更履歴または説明
environment いいえ — 対象の環境名(例:production、staging)。存在しない場合は自動作成されます。
container-id いいえ — このリリースに関連付ける Archyl コンテナ UUID
system-id いいえ — このリリースに関連付ける Archyl システム UUID
source-url いいえ — ソース(コミット、リリースページなど)への URL

出力

出力 説明
release-id 作成または更新されたリリースの UUID

Sync

archyl.yaml DSL ファイルを Archyl と同期します。アーキテクチャをコードとして宣言し、コミットのたびに変更をプッシュできます。

- uses: archyl-com/actions/sync@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}

入力

入力 必須 デフォルト 説明
api-key はい — 書き込みスコープ付きの Archyl API キー
project-id はい — Archyl プロジェクト UUID
api-url いいえ https://api.archyl.com カスタム API URL(セルフホスト用)
file いいえ archyl.yaml リポジトリルートからの archyl.yaml ファイルへの相対パス

出力

出力 説明
systems-created 作成されたシステムの数
containers-created 作成されたコンテナの数
components-created 作成されたコンポーネントの数
relationships-created 作成されたリレーションシップの数
summary 同期結果の人間が読める形式のサマリー

再利用可能なワークフロー

Archyl は、よくあるシナリオ向けに複数のアクションを組み合わせた 2 つの再利用可能なワークフローを提供しています。

archyl-pr.yml

プルリクエストごとに適合性チェックとドリフトスコアを並列で実行します。

jobs:
  archyl:
    uses: archyl-com/actions/.github/workflows/archyl-pr.yml@v1
    with:
      organization-id: ${{ vars.ARCHYL_ORG_ID }}
      project-id: ${{ vars.ARCHYL_PROJECT_ID }}
      drift-threshold: 70        # Fail if drift score drops below 70
      fail-on: error              # Fail on error-level conformance violations
      comment-on-pr: true         # Post PR comments with results
    secrets:
      api-key: ${{ secrets.ARCHYL_API_KEY }}

organization-id、project-id、api-key 以外の入力はすべてオプションです。

archyl-main.yml

main へのプッシュ時に generate-context、sync、release を実行します。各ジョブは個別にオン/オフを切り替えられます。

jobs:
  archyl:
    uses: archyl-com/actions/.github/workflows/archyl-main.yml@v1
    with:
      organization-id: ${{ vars.ARCHYL_ORG_ID }}
      project-id: ${{ vars.ARCHYL_PROJECT_ID }}
      generate-context: true       # Generate and auto-commit archyl.txt
      context-format: markdown     # LLM-optimized format
      sync: true                   # Sync archyl.yaml to Archyl
      sync-file: archyl.yaml       # Path to your archyl.yaml
      release: true                # Create a release record
      release-status: deployed
      release-environment: production
    secrets:
      api-key: ${{ secrets.ARCHYL_API_KEY }}

その他の CI プラットフォーム

GitLab CI

Archyl は GitLab 向けに include 可能な CI テンプレートを提供しています。マージリクエストで適合性チェックとドリフトスコアを実行し、デフォルトブランチへのプッシュ時にコンテキストを生成します。

セットアップ:

  1. Settings > CI/CD > Variables で必要な CI/CD 変数を追加します:

    • ARCHYL_API_KEY(マスク、保護)
    • ARCHYL_ORG_ID
    • ARCHYL_PROJECT_ID
  2. .gitlab-ci.yml にテンプレートを include します:

include:
  - remote: 'https://raw.githubusercontent.com/archyl-com/actions/main/ci-templates/gitlab/.archyl-ci.yml'

これにより、パイプラインに 3 つのジョブが追加されます:

  • archyl:conformance — マージリクエストで実行
  • archyl:drift-score — マージリクエストで実行
  • archyl:generate-context — デフォルトブランチへのプッシュ時に実行

オプションの変数:ARCHYL_API_URL、ARCHYL_DRIFT_THRESHOLD。

Bitbucket Pipelines

Archyl のパイプラインテンプレートを bitbucket-pipelines.yml にコピーします。

セットアップ:

  1. Settings > Repository variables で必要なリポジトリ変数を追加します:

    • ARCHYL_API_KEY(Secured を有効化)
    • ARCHYL_ORG_ID
    • ARCHYL_PROJECT_ID
  2. パイプラインのステップを追加します:

pipelines:
  pull-requests:
    '**':
      - step:
          name: "Archyl Conformance Check"
          image: alpine:3.20
          script:
            - apk add --no-cache curl jq git
            - # ... conformance check script
      - step:
          name: "Archyl Drift Score"
          image: alpine:3.20
          script:
            - apk add --no-cache curl jq
            - # ... drift score script

  branches:
    main:
      - step:
          name: "Archyl Generate Context"
          image: alpine:3.20
          script:
            - apk add --no-cache curl jq git
            - # ... generate context script

完全なテンプレートは archyl-com/actions/ci-templates/bitbucket/archyl-pipelines.yml で入手できます。

組み合わせの例

6 つのアクションすべてを組み合わせた完全なワークフロー:

# .github/workflows/architecture.yml
name: Archyl Architecture

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  # --- PR checks (parallel) ---

  conformance:
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: archyl-com/actions/conformance-check@v1
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          organization-id: ${{ vars.ARCHYL_ORG_ID }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}

  drift:
    if: github.event_name == 'pull_request'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: archyl-com/actions/drift-score@v1
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          organization-id: ${{ vars.ARCHYL_ORG_ID }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}
          threshold: 70
          comment-on-pr: 'true'

  # --- Main branch (after merge) ---

  generate-context:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: archyl-com/actions/generate-context@v1
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          organization-id: ${{ vars.ARCHYL_ORG_ID }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}
          commit: 'true'

  sync:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: archyl-com/actions/sync@v1
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}

  auto-cr:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: archyl-com/actions/auto-cr@v1
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          organization-id: ${{ vars.ARCHYL_ORG_ID }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}

  release:
    if: github.event_name == 'push'
    runs-on: ubuntu-latest
    steps:
      - uses: archyl-com/actions/release@v1
        with:
          api-key: ${{ secrets.ARCHYL_API_KEY }}
          project-id: ${{ vars.ARCHYL_PROJECT_ID }}
          status: deployed
          environment: production
          source-url: ${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}

結果の確認

CI からトリガーされたすべてのチェックの結果は Archyl に表示されます:

  • 適合性チェック — 適合性ダッシュボード(エージェントハブ > ダッシュボード タブ)に表示されます。チェックをクリックすると、ファイルごとにグループ化された違反を確認できます。
  • ドリフトスコア — プロジェクトのドリフトセクションに表示されます。スコアの推移を時系列で追跡できます。
  • 変更リクエスト — リクエストセクションに表示されます。アーキテクチャの変更を受け入れる前にレビューできます。
  • リリース — リリースセクションと環境ページに表示されます。DORA メトリクスに反映されます。
  • 同期結果 — C4 モデルに即座に反映されます。

適合性ダッシュボードの詳細は 適合性ルール を参照してください。

セルフホスト Archyl

Archyl をオンプレミスで実行している場合は、各アクションの api-url 入力にインスタンスの URL を設定します:

- uses: archyl-com/actions/conformance-check@v1
  with:
    api-key: ${{ secrets.ARCHYL_API_KEY }}
    organization-id: ${{ vars.ARCHYL_ORG_ID }}
    project-id: ${{ vars.ARCHYL_PROJECT_ID }}
    api-url: "https://archyl.internal.company.com"

すべてのアクションで、デフォルトは https://api.archyl.com です。