Skip to content

Latest commit

 

History

History
82 lines (54 loc) · 4.56 KB

File metadata and controls

82 lines (54 loc) · 4.56 KB

クイックスタート: GitHub

English

前提条件

  • Node.js >= 24 と pnpm 10
  • mise を使っている場合は mise install で自動セットアップ
  • または Dev Container / Codespaces でローカル環境構築なしで開始可能

初回:Organization の設定

clasp の共有認証情報を Google Cloud Secret Manager に格納し、CI は Workload Identity Federation でキーレス取得します — 詳細: secret-manager.ja.md。概要:

  1. CI/CD 用の専用 Google アカウント(例: apps-script-deploy@yourcompany.com)を作成し、clasp login を実行。~/.clasprc.json を secret clasp-credentials に格納します。
  2. WIF プール apps-script-fleetgithub プロバイダを作成し、org に attribute 制限(assertion.repository_owner == '<org>' — GitHub の issuer はマルチテナントのため必須)。
  3. principalSet://…/attribute.repository_owner/<org>roles/secretmanager.secretAccessor を付与。
  4. Organization variables GCP_WIF_PROVIDERCLASPRC_SECRET を設定。

このテンプレートから作成されるすべてのリポジトリが自動的に WIF で認証します。リポごとの認証設定は不要です。リポ単位のハードニングが必要な場合は、IAM を attribute.repository/<org>/<repo> にバインドするか、deployment environment にピン留め(sub = repo:ORG/REPO:environment:ENV)できます。注意: CD は workflow_run トリガーで動くため、ref ベースの OIDC 条件は不安定です — repository / environment クレームを使ってください。

Legacy フォールバック: CLASPRC_JSON Organization Secret

GCP_WIF_PROVIDER 未設定時に自動的に使われます: ~/.clasprc.json の内容を Organization Secret(名前: CLASPRC_JSON)として追加します。

プロジェクトごと:新しい Apps Script リポジトリの作成

1. テンプレートから作成

GitHub で "Use this template" をクリックし、クローン:

git clone https://github.com/<your-org>/<your-project>.git
cd <your-project>
pnpm install

2. Script ID の設定

.clasp-dev.json.clasp-prod.json を作成(gitignore 済み):

{
  "scriptId": "YOUR_SCRIPT_ID",
  "projectId": "YOUR_GCP_PROJECT_ID",
  "rootDir": "dist"
}

projectId は Apps Script に紐づく GCP プロジェクト番号です("123456789" のような数字列。my-project-abc のようなプロジェクト ID ではない)。Apps Script エディタ → プロジェクトの設定 → Google Cloud Platform(GCP)プロジェクトで確認できます。記載することで GCP プロジェクトの紐づけが宣言的・再現可能になります。省略時は clasp がスクリプトの既存 GCP プロジェクトを使用します。

3. GitHub Environments の設定

Environment Secret / Variable
development Secret: CLASP_JSON {"scriptId":"DEV_ID","projectId":"GCP_NUM","rootDir":"dist"}
development Variable: DEPLOYMENT_ID dev のデプロイメント ID
production Secret: CLASP_JSON {"scriptId":"PROD_ID","projectId":"GCP_NUM","rootDir":"dist"}
production Variable: DEPLOYMENT_ID prod のデプロイメント ID

GCP プロジェクト統合時: CLASP_JSON"projectId":"プロジェクト番号" を追加します(例: {"scriptId":"...","rootDir":"dist","projectId":"123456789"})。init.sh --gcp-project 使用時は自動設定されます。

4. 確認とデプロイ

pnpm run check    # lint + 型チェック + テスト
pnpm run deploy   # check → build → dev にデプロイ

これで完了です。main へのプッシュで本番デプロイが自動的に実行されます。

Dev Container / Codespaces

ローカル環境の構築は不要です。.devcontainer/ にすべて設定済み。

  • VS Code: 「Reopen in Container」を選択
  • GitHub Codespaces: Code → Codespaces → Create codespace on main

コンテナ内での clasp loginpnpm exec clasp login --no-localhost を使用してください。