@ciderjs/clasp-auth
v0.2.0
Published
Manage clasp credential data to use GitHub Actions secrets
Downloads
223
Maintainers
Readme
@ciderjs/clasp-auth
Google Apps Script (GAS) を GitHub Actions で CI/CD するための clasp 認証補助ツール。
ローカルで clasp login した認証情報を GitHub Secrets にアップロード/削除し、CI/CD 環境で .clasprc.json を自動生成します。
⚠️ Prerequisites
このツールを利用するには以下が必要です:
GitHub CLI (
gh)- インストール してください
gh auth loginを実行し、GitHub にログインしておく必要があります
Google Apps Script CLI (
clasp)- インストール してください
clasp loginを実行し、Google アカウントでログインしておく必要があります
注意事項
- CI/CD は 実行者の Google アカウント情報 を利用して行われます
- Secrets をアップロードするリポジトリは十分に注意してください
(誤ったリポジトリにアップロードすると、意図しない環境で認証情報が利用される可能性があります)
✨ Features
CLI
upload: ローカルの~/.clasprc.jsonを読み込み、JSON 文字列として GitHub Secrets (CLASPRC_JSON) にアップロードdelete: 登録済みの Secret (CLASPRC_JSON) を削除--yesオプションで確認プロンプトをスキップ可能- 実行前に リポジトリの存在確認 と 編集権限チェック を自動で行う
GitHub Action
- Secrets (
CLASPRC_JSON) から.clasprc.jsonを生成し、CI/CD 環境でclasp pushを実行可能にする
- Secrets (
📦 Installation
グローバルインストール:
npm install -g @ciderjs/clasp-authプロジェクトローカル:
npm install --save-dev @ciderjs/clasp-auth🚀 Usage
1. Secrets をアップロード (CLI)
まずローカルで clasp login を実行し、~/.clasprc.json を生成します。
その後、以下のコマンドで GitHub Secrets にアップロードします:
npx @ciderjs/clasp-auth upload <owner/repo>例:
npx @ciderjs/clasp-auth upload ciderjs/city-gas登録される Secret:
CLASPRC_JSON….clasprc.jsonの内容を JSON 文字列としてBase64エンコードし保存
2. Secrets を削除 (CLI)
登録済みの Secret を削除するには:
npx @ciderjs/clasp-auth delete <owner/repo>確認プロンプトをスキップする場合:
npx @ciderjs/clasp-auth delete <owner/repo> --yes3. GitHub Actions で利用 (Action)
Workflow 内で Secret をファイルに復元し、clasp が利用できるようにします。
name: Deploy GAS
on:
push:
branches: [ "main" ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
+ - name: Setup clasp auth
+ uses: ciderjs/[email protected]
+ with:
+ json: {{ secrets.CLASPRC_JSON }}
- name: Install clasp
run: npm install -g @google/clasp
- name: Push to GAS
run: clasp push📖 Examples
プライベートリポジトリで使用
# Secrets をアップロード
clasp-auth upload myorg/private-gas-project
# GitHub Actions で使用
# (workflow 例を参照)複数プロジェクトの管理
# プロジェクトごとに異なるリポジトリにアップロード
clasp-auth upload myorg/project-a
clasp-auth upload myorg/project-b🛠 Development
# ビルド
pnpm build
# テスト (Vitest)
pnpm test
# ローカルで CLI を試す
npm link
clasp-auth upload <owner/repo>🔒 Security Considerations
- Secrets は 1 つ (
CLASPRC_JSON) のみを利用するため、管理が容易 .clasprc.jsonの内部構造変更にも強い- 公開リポジトリではなくプライベートリポジトリでの利用を推奨
- Secrets を参照できるジョブを限定するために
permissionsを明示的に設定すること .clasprc.jsonの内容をログに出力しないこと- 定期的に
clasp loginをやり直し、Secrets をローテーションすること
🔧 Troubleshooting
gh: command not found
GitHub CLI がインストールされていません。こちらからインストールしてください。
No .clasprc.json found
clasp login を実行して認証情報を生成してください。
Permission denied
gh auth login を実行し、適切な権限でログインしてください。
Repository not found
リポジトリ名が正しいか確認してください (形式: owner/repo)。
🔄 Release
- タグを手動で付与してリリースをトリガーします(例:
v0.1.0) - リリースノートは GitHub の自動生成ノート を利用
- npm publish は CI により実行されます(
NPM_TOKENが必要)
📄 License
MIT
