AstroプロジェクトのGitHub Actions CI設定と「Missing script: check」エラーの解決方法

## GitHub Actions CIとは何か

`ci.yml` は、GitHub Actionsの**CI(継続的インテグレーション)設定ファイル**です。GitHubにコードをpushしたり、Pull Requestを作成・更新したりするたびに、定義した処理を自動で実行してくれます。

「コードに問題がないか」「ビルドが壊れていないか」を人間が手動で確認する代わりに、GitHubのサーバー上で自動検証してくれる仕組みです。

---

## 今回のci.ymlの構成

以下が今回使用しているCI設定ファイルの完成版です。

```yaml

name: CI

on:

pull_request:

push:

branches:

- "**"

jobs:

quality:

runs-on: ubuntu-latest

steps:

- name: Checkout

uses: actions/checkout@v4

- name: Setup Node.js

uses: actions/setup-node@v4

with:

node-version: "22"

cache: "npm"

- name: Install dependencies

run: npm ci

- name: Run checks

run: npx astro check

env:

ASTRO_TELEMETRY_DISABLED: 1

- name: Build

run: npm run build

env:

ASTRO_TELEMETRY_DISABLED: 1

```

### トリガー条件

`on:` のセクションで、CIが起動する条件を定義しています。

- **すべてのブランチへのpush**

- **すべてのPull Requestの作成・更新時**

### 実行されるステップ

1. **Checkout** — リポジトリのコードをCI環境に取得します

2. **Setup Node.js** — Node.js 22をセットアップし、npmキャッシュを有効にして高速化します

3. **Install dependencies** — `npm ci` で依存パッケージをインストールします

4. **Run checks** — `npx astro check` でAstroの型チェックを実行します

5. **Build** — `npm run build` でプロジェクトをビルドします

`ASTRO_TELEMETRY_DISABLED: 1` は、AstroのテレメトリデータをCI環境から送信しないようにするための設定です。

---

## よくあるエラー:「Missing script: check」

### エラー内容

当初のci.ymlでは `npm run check` を使用していましたが、以下のエラーが発生してCIが失敗していました。

```

Run npm run check

npm error Missing script: "check"

npm error

npm error To see a list of scripts, run:

npm error npm run

npm error A complete log of this run can be found in: ...

Error: Process completed with exit code 1.

```

### 原因

`npm run check` は `package.json` の `scripts` セクションに `"check"` というエントリが定義されている場合にのみ動作します。このプロジェクトの `package.json` には `check` スクリプトが存在しなかったため、エラーになっていました。

### 修正方法

`npm run check` を `npx astro check` に直接置き換えることで解決できます。

```yaml

# 修正前

- name: Run checks

run: npm run check

# 修正後

- name: Run checks

run: npx astro check

```

`npx astro check` はAstro CLIを直接呼び出すため、`package.json` へのスクリプト追加が不要です。

なお、`package.json` の `scripts` に以下を追加する方法でも同様に解決できます。

```json

{

"scripts": {

"check": "astro check"

}

}

```

どちらの方法でも同じ結果になります。

---

## CIが成功したらどうなるか

全ステップが正常に完了すると、GitHubのUIに以下の変化が現れます。

- **Actionsタブ** — ワークフローの横に✅緑のチェックマークが表示されます

- **Pull Request画面** — ページ下部に「All checks have passed」と緑色で表示されます

ただし、今回のCI設定は**チェックとビルドの確認のみ**です。成功しても自動デプロイや通知などは何も起きません。成功時にデプロイや通知を行いたい場合は、ci.ymlにさらにステップを追加することで対応できます。

---

## まとめ

| 項目 | 内容 |

|------|------|

| CIのトリガー | 全ブランチへのpush・全PR |

| 使用Node.js | v22 |

| チェックコマンド | `npx astro check` |

| ビルドコマンド | `npm run build` |

| 成功時の動作 | 緑のチェックマーク表示のみ |

`npm run check` でエラーが出た際は、`package.json` にスクリプトが定義されているかを確認し、なければ `npx astro check` に置き換えるのが最もシンプルな解決策です。

コメント

タイトルとURLをコピーしました