> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notcms.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CIでスキーマを確認する

> 生成した型と同期済みのNotionプロパティのずれを見つける

生成スキーマは、コードが想定しているコンテンツの形です。Notionはコードと独立して変更できるため、
型が古くなっていても気づけないことがあります。`pull --check` は、そのずれをデプロイ前に見つけるためのコマンドです。

```sh theme={null}
npx notcms pull --check
```

ローカルのスキーマと、NotCMSに同期された最新のスキーマを比較します。
Notionへの直接問い合わせや、ローカルファイルの更新は行いません。

## 何を変更として扱うか

* データベース名とID。
* プロパティ名と型。
* セレクト・ステータス・マルチセレクトの選択肢。

整形、キーの順序、選択肢の順序では、スキーマの意味は変わりません。
生成ファイルがない場合や解析できない場合も、正しいとみなさずチェックを失敗させます。
意味的比較には、この機能を含む0.4.0より後のリリースが必要です。0.4.0はファイルの文字列を比較します。

## いつ確認するかを選ぶ

| タイミング | 見つけたいずれ |
| - | - |
| Pull Request | コード変更時に、使っているスキーマが古くなっていないか |
| 定期実行 | コードを変更していない間に、Notion側が変わっていないか |

編集者と開発者が別々に作業する場合は、両方を使うと役立ちます。
アプリが利用するワークスペースを対象にし、同期が完了してから確認します。

## ワークフローに組み込む

生成スキーマ、CLI設定、lockfileをコミットし、CIではlockfileからインストールします。
ローカルとCIで同じSDK・CLIを使った上で、認証情報をCIのシークレットから渡します。

```yaml theme={null}
- name: Check NotCMS schema
  run: npx --no-install notcms pull --check
  env:
    NOTCMS_SECRET_KEY: ${{ secrets.NOTCMS_SECRET_KEY }}
    NOTCMS_WORKSPACE_ID: ${{ secrets.NOTCMS_WORKSPACE_ID }}
```

[GitHub Actionsの完全な例](https://github.com/qqpann/notcms/blob/main/examples/schema-ci/notcms-schema.yml)には、
インストール、PR確認、日次実行、手動実行をまとめています。
fork・DependabotのPRにはシークレットが渡されないため、チェックは失敗します。
これを回避するために `pull_request_target` へ切り替えないでください。信頼できないコードに認証情報を渡すことになります。
ログにはスキーマ名や選択肢が出るため、適切なアクセス範囲のリポジトリで実行します。

## チェックが失敗したら

終了コード `0` は一致、`1` はずれまたは確認失敗です。メッセージを見て次の対応を選びます。

* **スキーマが変わった:** 同期を完了させ、ローカルで `npx notcms pull` を実行します。影響するクエリと差分を確認してからコミットします。
* **ファイルがない・解析できない:** `npx notcms pull` で再生成します。
* **認証・ネットワークのエラー:** 接続を直して再実行します。型の再生成では解決しません。

CIはずれを知らせる役割にします。Notionの変更をすべて自動で受け入れず、
スキーマ更新もレビューできるコード変更として扱ってください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.