コンテンツにスキップ
Classmethod Gas Github Actions Clasp Secure Deploy

GitHub ActionsでGASをデプロイしclasp認証情報をローカルに残さない方法

詳細

解決する問題

  • clasp login で生成される ~/.clasprc.json にはアクセストークン・リフレッシュトークンが含まれ、ローカルに残すと流出リスクがある

構成のポイント

  1. CLASPRC_JSON~/.clasprc.json 全体)と CLASP_SCRIPT_ID_MAIN/CLASP_SCRIPT_ID_DEV を GitHub Repository Secrets に登録
  2. .clasp.json 全体ではなく scriptId だけを Secret に保存。GitHub Actions 実行中に dist/.clasp.json を動的生成
  3. 処理終了後はランナーごと破棄 → ローカルにもリポジトリにも認証情報が残らない

推奨運用

  • CI 用の専用 Google アカウントで clasp login してトークン取得。対象 GAS だけ編集権限を共有
  • dev ブランチ push → 検証用 GAS、main push → 本番用 GAS に振り分け(誤デプロイ防止)
  • 登録後はローカルの認証情報を clasp logout で削除

ワークフロー構成

  • ci.yml: PR(main/dev 向け)で lint・test・build のみ実行
  • deploy.yml: main/dev への push で ~/.clasprc.json を一時生成 → clasp push → ランナー終了で自動削除

参考

  • Google 公式ドキュメント「clasp と GitHub Actions を使用した Apps Script の CI/CD」をベースに .clasp.json 全体ではなく scriptId のみを Secret 化する方式に改良