@yhonda/gcloud-secrets 2.0.11 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -36
- package/cli.js +761 -218
- package/package.json +6 -5
- package/skills/secrets.md +40 -10
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @yhonda/gcloud-secrets
|
|
1
|
+
# @yhonda/gcloud-secrets
|
|
2
2
|
|
|
3
3
|
複数の GCP プロジェクトの `.env` / `.dev.vars` を1つの Secret Manager で一元管理する CLI ツール。
|
|
4
4
|
|
|
@@ -8,11 +8,14 @@ Claude Code のスキルとしても利用可能。
|
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
Secret Manager (中央プロジェクト)
|
|
11
|
-
├── project-a/
|
|
11
|
+
├── project-a/ [dev]
|
|
12
12
|
│ ├── DATABASE_URL
|
|
13
13
|
│ ├── API_KEY
|
|
14
14
|
│ └── CLOUDFLARE_SECRET
|
|
15
|
-
├── project-
|
|
15
|
+
├── project-a/ [prod]
|
|
16
|
+
│ ├── DATABASE_URL
|
|
17
|
+
│ └── API_KEY
|
|
18
|
+
├── project-b/ [dev]
|
|
16
19
|
│ ├── DATABASE_URL
|
|
17
20
|
│ └── STRIPE_KEY
|
|
18
21
|
└── project-c/
|
|
@@ -22,13 +25,7 @@ Secret Manager (中央プロジェクト)
|
|
|
22
25
|
## インストール
|
|
23
26
|
|
|
24
27
|
```bash
|
|
25
|
-
|
|
26
|
-
mkdir -p ~/bin && cd ~/bin
|
|
27
|
-
npm install @yhonda/gcloud-secrets-mcp
|
|
28
|
-
ln -sf ~/bin/node_modules/.bin/gcloud-secrets-mcp ~/bin/gcloud-secrets-mcp
|
|
29
|
-
|
|
30
|
-
# PATH に追加 (~/.bashrc または ~/.zshrc)
|
|
31
|
-
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
|
|
28
|
+
npm install -g @yhonda/gcloud-secrets
|
|
32
29
|
```
|
|
33
30
|
|
|
34
31
|
### 前提条件
|
|
@@ -39,58 +36,100 @@ echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
|
|
|
39
36
|
## 初期設定
|
|
40
37
|
|
|
41
38
|
```bash
|
|
42
|
-
gcloud-secrets
|
|
39
|
+
gcloud-secrets init <project-id> [--env <default-env>]
|
|
43
40
|
```
|
|
44
41
|
|
|
45
42
|
設定は `~/.secrets-manager.conf` に保存されます。
|
|
46
43
|
|
|
47
|
-
## CLI
|
|
44
|
+
## CLI コマンド
|
|
45
|
+
|
|
46
|
+
### 基本操作
|
|
48
47
|
|
|
49
48
|
```bash
|
|
50
|
-
#
|
|
51
|
-
gcloud-secrets
|
|
49
|
+
# フォルダ一覧(環境ごとにグループ化)
|
|
50
|
+
gcloud-secrets list
|
|
52
51
|
|
|
53
52
|
# フォルダ内のシークレット一覧
|
|
54
|
-
gcloud-secrets
|
|
53
|
+
gcloud-secrets list my-project --env dev
|
|
55
54
|
|
|
56
|
-
# シークレットを取得(.env形式で標準出力)
|
|
57
|
-
gcloud-secrets
|
|
55
|
+
# シークレットを取得(.env 形式で標準出力)
|
|
56
|
+
gcloud-secrets pull my-project --env prod
|
|
58
57
|
|
|
59
58
|
# シークレットをアップロード
|
|
60
|
-
gcloud-secrets
|
|
59
|
+
gcloud-secrets push my-project .env --env dev
|
|
61
60
|
```
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
### スキャン & 検索
|
|
64
63
|
|
|
65
|
-
|
|
64
|
+
```bash
|
|
65
|
+
# 全リポジトリの .env 同期状況をスキャン
|
|
66
|
+
gcloud-secrets scan
|
|
67
|
+
|
|
68
|
+
# 指定パス以下をスキャン(特定環境のみ)
|
|
69
|
+
gcloud-secrets scan ~/projects --env dev
|
|
66
70
|
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
# 値から逆引き検索
|
|
72
|
+
gcloud-secrets search "api-key-12345"
|
|
73
|
+
```
|
|
69
74
|
|
|
70
|
-
|
|
75
|
+
### 自動同期 (pre-commit hook)
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
77
|
+
```bash
|
|
78
|
+
# グローバル git hook をインストール(全リポジトリ対象)
|
|
79
|
+
gcloud-secrets hook install
|
|
80
|
+
|
|
81
|
+
# アンインストール
|
|
82
|
+
gcloud-secrets hook uninstall
|
|
83
|
+
|
|
84
|
+
# 手動実行
|
|
85
|
+
gcloud-secrets pre-commit
|
|
76
86
|
```
|
|
77
87
|
|
|
78
|
-
|
|
88
|
+
`hook install` すると、全リポジトリで `git commit` のたびに `.env` が自動で Secret Manager に同期されます。
|
|
79
89
|
|
|
80
|
-
|
|
90
|
+
**高速化の仕組み:**
|
|
91
|
+
- キャッシュ (`~/.secrets-manager-cache.json`) で .env の変更を検知
|
|
92
|
+
- 変更なし → **0 API コール**(即座に終了)
|
|
93
|
+
- 変更あり → フィルタ付き API + 並列取得で高速チェック&自動 push
|
|
94
|
+
- 常に exit 0(commit をブロックしない)
|
|
95
|
+
- 既存の `.husky/` や `.git/hooks/` と互換性あり
|
|
81
96
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
97
|
+
## 環境 (Environment)
|
|
98
|
+
|
|
99
|
+
`--env` または `-e` で環境を指定できます:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
gcloud-secrets push --env dev # dev 環境にアップロード
|
|
103
|
+
gcloud-secrets pull -e prod # prod 環境から取得
|
|
104
|
+
gcloud-secrets scan --env staging # staging のみスキャン
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
デフォルト環境は `~/.secrets-manager.conf` の `DEFAULT_ENVIRONMENT` で設定。
|
|
85
108
|
|
|
86
109
|
## コマンド一覧
|
|
87
110
|
|
|
88
111
|
| コマンド | 説明 |
|
|
89
112
|
|---------|------|
|
|
90
|
-
| `init <project-id
|
|
91
|
-
| `list [folder]` | 一覧表示 |
|
|
92
|
-
| `pull [folder]` | シークレットを取得 |
|
|
93
|
-
| `push [folder] [file]` | アップロード |
|
|
113
|
+
| `init <project-id> [--env <default>]` | 中央プロジェクトを設定 |
|
|
114
|
+
| `list [folder] [--env <env>]` | 一覧表示 |
|
|
115
|
+
| `pull [folder] [--env <env>]` | シークレットを取得 |
|
|
116
|
+
| `push [folder] [file] [--env <env>]` | アップロード |
|
|
117
|
+
| `scan [basePath] [--env <env>]` | Git リポジトリの同期状況をスキャン |
|
|
118
|
+
| `search <keyword> [--env <env>]` | 値から逆引き検索 |
|
|
119
|
+
| `pre-commit` | .env 自動同期(git hook 用) |
|
|
120
|
+
| `hook install` | グローバル git hook をインストール |
|
|
121
|
+
| `hook uninstall` | グローバル git hook をアンインストール |
|
|
122
|
+
|
|
123
|
+
## フォルダ名の正規化
|
|
124
|
+
|
|
125
|
+
ディレクトリ名は自動で kebab-case に変換されます:
|
|
126
|
+
|
|
127
|
+
- `gcloudSec` → `gcloud-sec`
|
|
128
|
+
- `myAppTest` → `my-app-test`
|
|
129
|
+
|
|
130
|
+
## シークレット名の形式
|
|
131
|
+
|
|
132
|
+
`{folder}_{env}_{KEY}` (例: `gcloud-sec_dev_DATABASE_URL`)
|
|
94
133
|
|
|
95
134
|
## 設定
|
|
96
135
|
|
|
@@ -102,8 +141,17 @@ export SECRETS_CENTRAL_PROJECT=your-project-id
|
|
|
102
141
|
|
|
103
142
|
# または設定ファイル (~/.secrets-manager.conf)
|
|
104
143
|
SECRETS_CENTRAL_PROJECT=your-project-id
|
|
144
|
+
DEFAULT_ENVIRONMENT=dev
|
|
105
145
|
```
|
|
106
146
|
|
|
147
|
+
## Claude Code スキル
|
|
148
|
+
|
|
149
|
+
インストール時に `~/.claude/skills/secrets.md` が自動作成され、`/secrets` コマンドが使えます:
|
|
150
|
+
|
|
151
|
+
- 「このプロジェクトの .env を Secret Manager にアップロードして」
|
|
152
|
+
- 「dev 環境のシークレットを確認して」
|
|
153
|
+
- 「全リポジトリの同期状況をスキャンして」
|
|
154
|
+
|
|
107
155
|
## ライセンス
|
|
108
156
|
|
|
109
157
|
MIT
|