@asagiri-design/labels-config 0.2.2 → 0.3.1
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 +62 -0
- package/dist/chunk-MM4GCVPE.mjs +549 -0
- package/dist/cli.js +522 -98
- package/dist/cli.mjs +256 -103
- package/dist/github/index.d.mts +49 -1
- package/dist/github/index.d.ts +49 -1
- package/dist/github/index.js +212 -0
- package/dist/github/index.mjs +3 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/docs/BATCH_SYNC.md +396 -0
- package/docs/NPM_SETUP.md +200 -0
- package/docs/QUICK_START.md +457 -0
- package/docs/RELEASE_FLOW.md +436 -0
- package/package.json +3 -6
- package/dist/chunk-4ZUJQMV7.mjs +0 -285
- package/dist/chunk-DGUMSQAI.mjs +0 -496
- package/dist/chunk-ZYHIDOG2.mjs +0 -247
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
# npm Trusted Publishers (OIDC) セットアップガイド
|
|
2
|
+
|
|
3
|
+
このプロジェクトは、npm の **Trusted Publishers (OIDC)** 方式を使用して自動的にパッケージを公開しています。
|
|
4
|
+
従来の長期有効なトークンではなく、GitHub Actions が実行時に一時的な認証情報を取得する方式です。
|
|
5
|
+
|
|
6
|
+
> **⚠️ 重要な注意事項**
|
|
7
|
+
>
|
|
8
|
+
> npm の Trusted Publisher 設定は **Web UI からのみ可能**です。
|
|
9
|
+
> 現時点では npm CLI やターミナルから設定することはできません。
|
|
10
|
+
> 以下の手順に従って、[npmjs.com](https://www.npmjs.com/) から設定してください。
|
|
11
|
+
|
|
12
|
+
## 🔐 セキュリティ強化について
|
|
13
|
+
|
|
14
|
+
### npm の新しいセキュリティポリシー(2024年〜)
|
|
15
|
+
|
|
16
|
+
- **長期トークンの有効期限短縮**: 書き込み可能なトークンはデフォルト7日、最大90日に制限
|
|
17
|
+
- **クラシックトークンの廃止**: 従来の広範な権限を持つトークンは段階的に廃止
|
|
18
|
+
- **TOTP から WebAuthn/パスキーへの移行**: より強力な2要素認証への移行を推奨
|
|
19
|
+
- **Trusted Publishers の推奨**: CI/CD での OIDC 認証方式を標準に
|
|
20
|
+
|
|
21
|
+
### Trusted Publishers (OIDC) のメリット
|
|
22
|
+
|
|
23
|
+
✅ **トークン管理不要**: 手動でのトークン生成・更新・ローテーションが不要
|
|
24
|
+
✅ **セキュリティリスク最小化**: 長期有効なトークンが漏洩するリスクがゼロ
|
|
25
|
+
✅ **自動 Provenance**: パッケージの出所証明が自動的に生成される
|
|
26
|
+
✅ **最小権限の原則**: 各 CI/CD ジョブに必要最低限の権限のみ付与
|
|
27
|
+
✅ **npm の推奨方式**: 今後の標準として推奨されている方式
|
|
28
|
+
|
|
29
|
+
## 📋 必須:npm での Trusted Publisher 設定
|
|
30
|
+
|
|
31
|
+
このリポジトリのワークフローが正常に動作するためには、npm 側で Trusted Publisher の設定が必要です。
|
|
32
|
+
|
|
33
|
+
### ステップ 1: npm にログイン
|
|
34
|
+
|
|
35
|
+
1. [npmjs.com](https://www.npmjs.com/) にアクセス
|
|
36
|
+
2. あなたのアカウントでログイン
|
|
37
|
+
|
|
38
|
+
### ステップ 2: パッケージの設定画面へ移動
|
|
39
|
+
|
|
40
|
+
1. パッケージ `@boxpistols/labels-config` のページへ移動
|
|
41
|
+
2. "Settings" タブをクリック
|
|
42
|
+
|
|
43
|
+
### ステップ 3: Publishing Access の設定
|
|
44
|
+
|
|
45
|
+
1. 左サイドバーから **"Publishing Access"** を選択
|
|
46
|
+
2. **"Add Trusted Publisher"** または **"Configure OIDC"** をクリック
|
|
47
|
+
|
|
48
|
+
### ステップ 4: GitHub Actions の情報を入力
|
|
49
|
+
|
|
50
|
+
以下の情報を入力します:
|
|
51
|
+
|
|
52
|
+
| 項目 | 値 |
|
|
53
|
+
|------|-----|
|
|
54
|
+
| **Provider** | GitHub |
|
|
55
|
+
| **Organization / Repository owner** | `your-org` |
|
|
56
|
+
| **Repository name** | `labels-config` |
|
|
57
|
+
| **Workflow name** | (以下の3つを個別に追加) |
|
|
58
|
+
|
|
59
|
+
**追加するワークフロー:**
|
|
60
|
+
|
|
61
|
+
1. **自動リリース用**(main へのマージ時)
|
|
62
|
+
- Workflow: `auto-release.yml`
|
|
63
|
+
- Environment: (空欄のまま)
|
|
64
|
+
- Job: `auto-patch-release`
|
|
65
|
+
|
|
66
|
+
2. **手動リリース用**
|
|
67
|
+
- Workflow: `manual-release.yml`
|
|
68
|
+
- Environment: (空欄のまま)
|
|
69
|
+
- Job: `manual-release`
|
|
70
|
+
|
|
71
|
+
3. **GitHub Release トリガー用**
|
|
72
|
+
- Workflow: `publish.yml`
|
|
73
|
+
- Environment: (空欄のまま)
|
|
74
|
+
- Job: `publish`
|
|
75
|
+
|
|
76
|
+
### ステップ 5: 設定の保存
|
|
77
|
+
|
|
78
|
+
各ワークフローを追加後、設定を保存します。
|
|
79
|
+
|
|
80
|
+
## 🚀 動作確認
|
|
81
|
+
|
|
82
|
+
### main ブランチへのマージで自動公開
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# feature ブランチで作業
|
|
86
|
+
git checkout -b feature/new-feature
|
|
87
|
+
# コードを変更
|
|
88
|
+
git add .
|
|
89
|
+
git commit -m "feat: add new feature"
|
|
90
|
+
git push origin feature/new-feature
|
|
91
|
+
|
|
92
|
+
# PR を作成してマージ
|
|
93
|
+
# → main へのマージ後、自動的にパッチバージョンがリリースされ npm に公開される
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 手動でのバージョン指定リリース
|
|
97
|
+
|
|
98
|
+
GitHub の Actions タブから "Manual Release" ワークフローを実行:
|
|
99
|
+
|
|
100
|
+
1. リポジトリの **Actions** タブを開く
|
|
101
|
+
2. **"Manual Release"** を選択
|
|
102
|
+
3. **"Run workflow"** をクリック
|
|
103
|
+
4. バージョンタイプを選択(patch / minor / major / prerelease)
|
|
104
|
+
5. **"Run workflow"** を実行
|
|
105
|
+
|
|
106
|
+
## 🔍 トラブルシューティング
|
|
107
|
+
|
|
108
|
+
### エラー: "403 Forbidden" または "OIDC authentication failed"
|
|
109
|
+
|
|
110
|
+
**原因**: npm で Trusted Publisher が正しく設定されていない
|
|
111
|
+
|
|
112
|
+
**解決方法**:
|
|
113
|
+
1. npm の Publishing Access 設定を再確認
|
|
114
|
+
2. Organization、Repository、Workflow、Job 名が正確に一致しているか確認
|
|
115
|
+
3. 設定後、数分待ってから再試行
|
|
116
|
+
|
|
117
|
+
### エラー: "Provenance generation failed"
|
|
118
|
+
|
|
119
|
+
**原因**: ワークフローの permissions 設定が不足している
|
|
120
|
+
|
|
121
|
+
**解決方法**:
|
|
122
|
+
- ワークフローファイルに以下が含まれているか確認:
|
|
123
|
+
```yaml
|
|
124
|
+
permissions:
|
|
125
|
+
contents: write # または read(ジョブに応じて)
|
|
126
|
+
id-token: write # OIDC に必須
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### リリースがスキップされる
|
|
130
|
+
|
|
131
|
+
**原因**: コミットメッセージに `[skip ci]` または `[no release]` が含まれている
|
|
132
|
+
|
|
133
|
+
**解決方法**:
|
|
134
|
+
- これらのキーワードを含まないコミットメッセージを使用
|
|
135
|
+
- または、手動リリースワークフローを使用
|
|
136
|
+
|
|
137
|
+
## 📚 参考リンク
|
|
138
|
+
|
|
139
|
+
**プロジェクト内ドキュメント:**
|
|
140
|
+
- [npm Publish 更新フローガイド](./RELEASE_FLOW.md) - リリース方法の詳細
|
|
141
|
+
|
|
142
|
+
**外部リンク:**
|
|
143
|
+
- [npm: Publishing packages with provenance via GitHub Actions](https://docs.npmjs.com/generating-provenance-statements)
|
|
144
|
+
- [GitHub: Security hardening with OpenID Connect](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/about-security-hardening-with-openid-connect)
|
|
145
|
+
- [npm Blog: Introducing npm package provenance](https://github.blog/2023-04-19-introducing-npm-package-provenance/)
|
|
146
|
+
|
|
147
|
+
## 🔄 従来のトークン方式からの移行
|
|
148
|
+
|
|
149
|
+
もし以前 `NPM_TOKEN` シークレットを使用していた場合:
|
|
150
|
+
|
|
151
|
+
1. ✅ Trusted Publisher の設定を完了
|
|
152
|
+
2. ✅ ワークフローが正常に動作することを確認
|
|
153
|
+
3. ✅ GitHub リポジトリの Settings → Secrets から `NPM_TOKEN` を削除(もう不要です)
|
|
154
|
+
4. ✅ `package.json` の `release:*` スクリプトは廃止されました。今後のリリースは GitHub Actions ワークフロー経由で行います。
|
|
155
|
+
|
|
156
|
+
### 廃止されたローカルスクリプト
|
|
157
|
+
|
|
158
|
+
以下のスクリプトは削除されました(GitHub Actions で自動化されているため):
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# 🚫 これらのコマンドはもう使用しません
|
|
162
|
+
npm run release:patch # → GitHub Actions の auto-release が自動実行
|
|
163
|
+
npm run release:minor # → GitHub Actions の manual-release で実行
|
|
164
|
+
npm run release:major # → GitHub Actions の manual-release で実行
|
|
165
|
+
npm run release:beta # → GitHub Actions の manual-release で実行
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**新しいリリース方法:**
|
|
169
|
+
- **自動**: main へマージすると自動的にパッチバージョンがリリース
|
|
170
|
+
- **手動**: GitHub Actions UI から Manual Release ワークフローを実行
|
|
171
|
+
|
|
172
|
+
## 💡 ベストプラクティス
|
|
173
|
+
|
|
174
|
+
### コミットメッセージ
|
|
175
|
+
|
|
176
|
+
自動リリースをスキップしたい場合は、コミットメッセージに `[skip ci]` または `[no release]` を含めます:
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
git commit -m "docs: update README [skip ci]"
|
|
180
|
+
git commit -m "chore: update dependencies [no release]"
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### バージョニング戦略
|
|
184
|
+
|
|
185
|
+
- **patch**: バグ修正、小さな改善(main へのマージで自動)
|
|
186
|
+
- **minor**: 新機能追加(手動リリース推奨)
|
|
187
|
+
- **major**: 破壊的変更(手動リリース推奨)
|
|
188
|
+
- **prerelease**: ベータ版リリース(手動リリース)
|
|
189
|
+
|
|
190
|
+
### 2要素認証の強化
|
|
191
|
+
|
|
192
|
+
npm アカウントのセキュリティ強化のため、WebAuthn/パスキーの使用を推奨:
|
|
193
|
+
|
|
194
|
+
1. npm アカウント設定で 2FA を開く
|
|
195
|
+
2. パスキー(YubiKey、Touch ID、Face ID など)を追加
|
|
196
|
+
3. 従来の TOTP(Google Authenticator など)からの移行を検討
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
**設定完了後、このリポジトリは自動的に npm への公開が可能になります 🎉**
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
# Quick Start - 3ステップで始めるラベル管理
|
|
2
|
+
|
|
3
|
+
`@asagiri-design/labels-config` を使って、GitHubリポジトリのラベルを簡単に管理できます。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 🚀 3ステップで完了
|
|
8
|
+
|
|
9
|
+
### ステップ1: インストール(1回だけ)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g @asagiri-design/labels-config
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### ステップ2: GitHub認証(1回だけ)
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
gh auth login
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### ステップ3: ラベルを適用
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# あなたのリポジトリにラベルを適用
|
|
25
|
+
labels-config batch-sync --repos YourName/YourRepo --template prod-ja
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**これだけ!** 🎉
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 📋 具体例
|
|
33
|
+
|
|
34
|
+
### 例1: 自分のリポジトリ1つに適用
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
# Foo/Bar リポジトリに prod-ja テンプレートを適用
|
|
38
|
+
labels-config batch-sync --repos Foo/Bar --template prod-ja
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**実行結果:**
|
|
42
|
+
```
|
|
43
|
+
📋 Target repositories: 1
|
|
44
|
+
|
|
45
|
+
✅ [1/1] Foo/Bar
|
|
46
|
+
|
|
47
|
+
📊 Batch Sync Summary:
|
|
48
|
+
✅ Successful: 1
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
### 例2: 自分の全リポジトリに一括適用
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# あなたの全リポジトリに適用
|
|
57
|
+
labels-config batch-sync --user Foo --template prod-ja
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### 例3: 組織の全リポジトリに一括適用
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Foo組織の全リポジトリに適用
|
|
66
|
+
labels-config batch-sync --org Foo --template prod-ja
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
### 例4: 複数のリポジトリを指定
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# 複数のリポジトリに一括適用
|
|
75
|
+
labels-config batch-sync \
|
|
76
|
+
--repos Foo/Bar,Foo/Baz,Foo/Qux \
|
|
77
|
+
--template prod-ja
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 🔍 ドライランで事前確認
|
|
83
|
+
|
|
84
|
+
実際に変更する前に、何が変更されるか確認できます:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# ドライラン(変更を実行しない)
|
|
88
|
+
labels-config batch-sync --repos Foo/Bar --template prod-ja --dry-run
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**出力例:**
|
|
92
|
+
```
|
|
93
|
+
[DRY RUN] 📋 Target repositories: 1
|
|
94
|
+
|
|
95
|
+
📊 Batch Sync Configuration
|
|
96
|
+
Labels: 14
|
|
97
|
+
Repositories: 1 specified
|
|
98
|
+
Parallel: 3
|
|
99
|
+
Mode: append
|
|
100
|
+
|
|
101
|
+
✅ [1/1] Foo/Bar
|
|
102
|
+
|
|
103
|
+
📊 Batch Sync Summary:
|
|
104
|
+
✅ Successful: 1
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
問題なければ `--dry-run` を外して本番実行してください。
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 🎨 利用可能なテンプレート
|
|
112
|
+
|
|
113
|
+
| テンプレート名 | 説明 | ラベル数 |
|
|
114
|
+
|--------------|------|---------|
|
|
115
|
+
| `minimal` | 基本的な3ラベル (bug, feature, documentation) | 3 |
|
|
116
|
+
| `github` | GitHub標準ラベル | 9 |
|
|
117
|
+
| `prod-ja` | 本番プロジェクト用(日本語) | 14 |
|
|
118
|
+
| `prod-en` | 本番プロジェクト用(英語) | 14 |
|
|
119
|
+
| `react` | React開発用 | 12 |
|
|
120
|
+
| `vue` | Vue.js開発用 | 12 |
|
|
121
|
+
| `frontend` | フロントエンド開発用 | 15 |
|
|
122
|
+
| `agile` | アジャイル/スクラム用 | 18 |
|
|
123
|
+
|
|
124
|
+
### テンプレートの内容を確認
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# テンプレートからファイル生成
|
|
128
|
+
labels-config init prod-ja --file labels.json
|
|
129
|
+
|
|
130
|
+
# ファイルを確認
|
|
131
|
+
cat labels.json
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 🎯 よくある使い方
|
|
137
|
+
|
|
138
|
+
### パターン1: 新しいリポジトリを作ったらすぐ実行
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
# 1. 新しいリポジトリを作成
|
|
142
|
+
gh repo create Foo/NewProject --public
|
|
143
|
+
|
|
144
|
+
# 2. ラベルを適用
|
|
145
|
+
labels-config batch-sync --repos Foo/NewProject --template prod-ja
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### パターン2: 既存リポジトリのラベルを統一
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
# 組織の全リポジトリのラベルを統一
|
|
154
|
+
labels-config batch-sync --org Foo --template prod-ja
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
### パターン3: TypeScriptプロジェクトだけに適用
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# TypeScriptプロジェクトのみフィルタリング
|
|
163
|
+
labels-config batch-sync \
|
|
164
|
+
--org Foo \
|
|
165
|
+
--template react \
|
|
166
|
+
--filter-lang TypeScript
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
### パターン4: 公開リポジトリのみに適用
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# 公開リポジトリのみに適用
|
|
175
|
+
labels-config batch-sync \
|
|
176
|
+
--user Foo \
|
|
177
|
+
--template prod-ja \
|
|
178
|
+
--filter-vis public
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 🔄 2つのモード
|
|
184
|
+
|
|
185
|
+
### Appendモード(デフォルト)
|
|
186
|
+
|
|
187
|
+
既存のラベルを保持したまま、新しいラベルを追加・更新します。
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
labels-config batch-sync --repos Foo/Bar --template prod-ja
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**動作:**
|
|
194
|
+
- ✅ 新しいラベルを追加
|
|
195
|
+
- ✅ 既存のラベルを更新
|
|
196
|
+
- ✅ 設定にないラベルは保持
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
### Replaceモード
|
|
201
|
+
|
|
202
|
+
既存のラベルを完全に置き換えます。
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
labels-config batch-sync --repos Foo/Bar --template prod-ja --delete-extra
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**動作:**
|
|
209
|
+
- ✅ 新しいラベルを追加
|
|
210
|
+
- ✅ 既存のラベルを更新
|
|
211
|
+
- ❌ 設定にないラベルを削除
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## ⚙️ オプション一覧
|
|
216
|
+
|
|
217
|
+
### ターゲット指定(いずれか必須)
|
|
218
|
+
|
|
219
|
+
| オプション | 説明 | 例 |
|
|
220
|
+
|-----------|------|-----|
|
|
221
|
+
| `--repos <list>` | リポジトリリスト(カンマ区切り) | `--repos Foo/Bar,Foo/Baz` |
|
|
222
|
+
| `--user <name>` | ユーザーの全リポジトリ | `--user Foo` |
|
|
223
|
+
| `--org <name>` | 組織の全リポジトリ | `--org Foo` |
|
|
224
|
+
|
|
225
|
+
### ラベル指定(いずれか必須)
|
|
226
|
+
|
|
227
|
+
| オプション | 説明 | 例 |
|
|
228
|
+
|-----------|------|-----|
|
|
229
|
+
| `--template <name>` | テンプレート名 | `--template prod-ja` |
|
|
230
|
+
| `--file <path>` | カスタムラベルファイル | `--file ./labels.json` |
|
|
231
|
+
|
|
232
|
+
### フィルタリング(オプション)
|
|
233
|
+
|
|
234
|
+
| オプション | 説明 | 例 |
|
|
235
|
+
|-----------|------|-----|
|
|
236
|
+
| `--filter-lang <lang>` | プログラミング言語でフィルタ | `--filter-lang TypeScript` |
|
|
237
|
+
| `--filter-vis <vis>` | 可視性でフィルタ (public/private/all) | `--filter-vis public` |
|
|
238
|
+
|
|
239
|
+
### その他(オプション)
|
|
240
|
+
|
|
241
|
+
| オプション | 説明 | 例 |
|
|
242
|
+
|-----------|------|-----|
|
|
243
|
+
| `--dry-run` | ドライラン(実行しない) | `--dry-run` |
|
|
244
|
+
| `--delete-extra` | Replaceモード(設定外を削除) | `--delete-extra` |
|
|
245
|
+
| `--parallel <num>` | 並列実行数(デフォルト: 3) | `--parallel 5` |
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 🔐 必要な権限
|
|
250
|
+
|
|
251
|
+
### 1. GitHub CLI の認証
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
gh auth login
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
以下のスコープが必要です:
|
|
258
|
+
- `repo` (リポジトリへのアクセス)
|
|
259
|
+
|
|
260
|
+
### 2. リポジトリへのアクセス権限
|
|
261
|
+
|
|
262
|
+
対象リポジトリへの **管理者権限** または **書き込み権限** が必要です。
|
|
263
|
+
|
|
264
|
+
**確認方法:**
|
|
265
|
+
```bash
|
|
266
|
+
# リポジトリのアクセス権限を確認
|
|
267
|
+
gh repo view Foo/Bar --json permissions
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## 📚 次のステップ
|
|
273
|
+
|
|
274
|
+
### カスタムラベルを作成
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
# 1. テンプレートからファイル生成
|
|
278
|
+
labels-config init prod-ja --file my-labels.json
|
|
279
|
+
|
|
280
|
+
# 2. ファイルを編集
|
|
281
|
+
vim my-labels.json
|
|
282
|
+
|
|
283
|
+
# 3. 適用
|
|
284
|
+
labels-config batch-sync --repos Foo/Bar --file my-labels.json
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### 複雑な設定を使う
|
|
288
|
+
|
|
289
|
+
複数の条件で異なるテンプレートを適用する場合は、設定ファイルを使用:
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
# 設定ファイルを作成
|
|
293
|
+
cat > batch-config.json << EOF
|
|
294
|
+
{
|
|
295
|
+
"version": "1.0.0",
|
|
296
|
+
"targets": [
|
|
297
|
+
{
|
|
298
|
+
"organization": "Foo",
|
|
299
|
+
"filter": { "language": "TypeScript" },
|
|
300
|
+
"template": "react"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"repositories": ["Foo/special-project"],
|
|
304
|
+
"file": "./special-labels.json"
|
|
305
|
+
}
|
|
306
|
+
]
|
|
307
|
+
}
|
|
308
|
+
EOF
|
|
309
|
+
|
|
310
|
+
# 設定ファイルで実行
|
|
311
|
+
labels-config batch-config batch-config.json
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
詳細は [BATCH_SYNC.md](./BATCH_SYNC.md) を参照してください。
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## ❓ トラブルシューティング
|
|
319
|
+
|
|
320
|
+
### エラー: `command not found: labels-config`
|
|
321
|
+
|
|
322
|
+
**原因:** パッケージがインストールされていない
|
|
323
|
+
|
|
324
|
+
**解決方法:**
|
|
325
|
+
```bash
|
|
326
|
+
npm install -g @asagiri-design/labels-config
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
### エラー: `gh: command not found`
|
|
332
|
+
|
|
333
|
+
**原因:** GitHub CLI がインストールされていない
|
|
334
|
+
|
|
335
|
+
**解決方法:**
|
|
336
|
+
```bash
|
|
337
|
+
# macOS
|
|
338
|
+
brew install gh
|
|
339
|
+
|
|
340
|
+
# Windows
|
|
341
|
+
winget install --id GitHub.cli
|
|
342
|
+
|
|
343
|
+
# Linux
|
|
344
|
+
# https://github.com/cli/cli#installation
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
### エラー: `Permission denied`
|
|
350
|
+
|
|
351
|
+
**原因:** リポジトリへのアクセス権限がない
|
|
352
|
+
|
|
353
|
+
**解決方法:**
|
|
354
|
+
1. リポジトリの設定で自分の権限を確認
|
|
355
|
+
2. `gh auth status` で認証状態を確認
|
|
356
|
+
3. `gh auth refresh` で認証を更新
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
### エラー: `API rate limit exceeded`
|
|
361
|
+
|
|
362
|
+
**原因:** GitHub APIのレート制限に達した
|
|
363
|
+
|
|
364
|
+
**解決方法:**
|
|
365
|
+
```bash
|
|
366
|
+
# 並列数を減らす
|
|
367
|
+
labels-config batch-sync --user Foo --template prod-ja --parallel 1
|
|
368
|
+
|
|
369
|
+
# または時間を置いて再実行
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
## 🆘 ヘルプ
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
# ヘルプを表示
|
|
378
|
+
labels-config help
|
|
379
|
+
|
|
380
|
+
# コマンドの使い方を確認
|
|
381
|
+
labels-config batch-sync --help
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## 📖 関連ドキュメント
|
|
387
|
+
|
|
388
|
+
- [Getting Started](./GETTING_STARTED.md) - 詳細な使い方
|
|
389
|
+
- [Batch Sync](./BATCH_SYNC.md) - バッチ同期の詳細
|
|
390
|
+
- [API Documentation](./API.md) - プログラマティックな使い方
|
|
391
|
+
- [GitHub Repository](https://github.com/your-org/labels-config) - ソースコード
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## 💡 Tips
|
|
396
|
+
|
|
397
|
+
### Tip 1: エイリアスを作成
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
# .bashrc または .zshrc に追加
|
|
401
|
+
alias label-sync='labels-config batch-sync'
|
|
402
|
+
|
|
403
|
+
# 使用例
|
|
404
|
+
label-sync --repos Foo/Bar --template prod-ja
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
### Tip 2: プロジェクトごとの設定ファイル
|
|
408
|
+
|
|
409
|
+
```bash
|
|
410
|
+
# プロジェクトディレクトリに設定ファイルを作成
|
|
411
|
+
cat > .labelrc.json << EOF
|
|
412
|
+
{
|
|
413
|
+
"version": "1.0.0",
|
|
414
|
+
"targets": [
|
|
415
|
+
{
|
|
416
|
+
"repositories": ["$(gh repo view --json nameWithOwner -q .nameWithOwner)"],
|
|
417
|
+
"template": "prod-ja"
|
|
418
|
+
}
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
EOF
|
|
422
|
+
|
|
423
|
+
# いつでも簡単に実行
|
|
424
|
+
labels-config batch-config .labelrc.json
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
### Tip 3: GitHub Actionsで自動化
|
|
428
|
+
|
|
429
|
+
新しいリポジトリ作成時に自動でラベルを適用:
|
|
430
|
+
|
|
431
|
+
```yaml
|
|
432
|
+
# .github/workflows/auto-label.yml
|
|
433
|
+
name: Auto Apply Labels
|
|
434
|
+
on:
|
|
435
|
+
repository_dispatch:
|
|
436
|
+
types: [repository-created]
|
|
437
|
+
|
|
438
|
+
jobs:
|
|
439
|
+
apply-labels:
|
|
440
|
+
runs-on: ubuntu-latest
|
|
441
|
+
steps:
|
|
442
|
+
- uses: actions/setup-node@v4
|
|
443
|
+
- run: npm install -g @asagiri-design/labels-config
|
|
444
|
+
- run: labels-config batch-sync \
|
|
445
|
+
--repos ${{ github.repository }} \
|
|
446
|
+
--template prod-ja
|
|
447
|
+
env:
|
|
448
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
**さあ、始めましょう!** 🚀
|
|
454
|
+
|
|
455
|
+
```bash
|
|
456
|
+
labels-config batch-sync --repos YourName/YourRepo --template prod-ja
|
|
457
|
+
```
|