GitHub Actions 統合

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 でバージョン管理されています。
前提条件
アクションを使用する前に、以下が必要です:
- Archyl API キー — プロフィール > APIキー で書き込みスコープ付きのキーを作成
- 組織 ID — 組織の設定ページで確認
- プロジェクト ID — プロジェクトの URL または設定ページで確認
- これらを 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 テンプレートを提供しています。マージリクエストで適合性チェックとドリフトスコアを実行し、デフォルトブランチへのプッシュ時にコンテキストを生成します。
セットアップ:
Settings > CI/CD > Variables で必要な CI/CD 変数を追加します:
ARCHYL_API_KEY(マスク、保護)ARCHYL_ORG_IDARCHYL_PROJECT_ID
.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 にコピーします。
セットアップ:
Settings > Repository variables で必要なリポジトリ変数を追加します:
ARCHYL_API_KEY(Secured を有効化)ARCHYL_ORG_IDARCHYL_PROJECT_ID
パイプラインのステップを追加します:
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 です。