@sk8metal/michi-cli 0.8.1 → 0.8.3
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/CHANGELOG.md +33 -0
- package/dist/scripts/confluence-sync.js +2 -2
- package/dist/scripts/confluence-sync.js.map +1 -1
- package/dist/scripts/jira-sync.js +2 -2
- package/dist/scripts/jira-sync.js.map +1 -1
- package/dist/scripts/multi-project-estimate.js +2 -2
- package/dist/scripts/multi-project-estimate.js.map +1 -1
- package/dist/scripts/pr-automation.js +2 -2
- package/dist/scripts/pr-automation.js.map +1 -1
- package/dist/scripts/pre-flight-check.js +2 -2
- package/dist/scripts/pre-flight-check.js.map +1 -1
- package/dist/scripts/resource-dashboard.js +2 -2
- package/dist/scripts/resource-dashboard.js.map +1 -1
- package/dist/scripts/spec-impl-workflow.js +2 -2
- package/dist/scripts/spec-impl-workflow.js.map +1 -1
- package/dist/scripts/template/multi-repo-renderer.d.ts +1 -1
- package/dist/scripts/template/multi-repo-renderer.d.ts.map +1 -1
- package/dist/scripts/template/multi-repo-renderer.js +8 -3
- package/dist/scripts/template/multi-repo-renderer.js.map +1 -1
- package/dist/scripts/test-workflow-stages.js +2 -2
- package/dist/scripts/test-workflow-stages.js.map +1 -1
- package/dist/scripts/utils/config-loader.d.ts.map +1 -1
- package/dist/scripts/utils/config-loader.js +3 -2
- package/dist/scripts/utils/config-loader.js.map +1 -1
- package/dist/scripts/utils/env-loader.d.ts +11 -0
- package/dist/scripts/utils/env-loader.d.ts.map +1 -0
- package/dist/scripts/utils/env-loader.js +23 -0
- package/dist/scripts/utils/env-loader.js.map +1 -0
- package/dist/scripts/workflow-orchestrator.js +2 -2
- package/dist/scripts/workflow-orchestrator.js.map +1 -1
- package/dist/src/cli.js +3 -3
- package/dist/src/cli.js.map +1 -1
- package/docs/michi-development/design/config-unification.md +38 -4094
- package/docs/michi-development/design/design-config-current-state.md +330 -0
- package/docs/michi-development/design/design-config-implementation.md +628 -0
- package/docs/michi-development/design/design-config-migration.md +952 -0
- package/docs/michi-development/design/design-config-security.md +771 -0
- package/docs/michi-development/design/design-config-solution.md +583 -0
- package/docs/michi-development/design/design-config-testing.md +892 -0
- package/docs/michi-development/testing/manual-verification-flow.md +6 -1377
- package/docs/michi-development/testing/manual-verification-other-tools.md +1277 -0
- package/docs/michi-development/testing/manual-verification-troubleshooting.md +122 -0
- package/docs/user-guide/getting-started/setup.md +14 -32
- package/docs/user-guide/guides/multi-repo-guide.md +367 -44
- package/docs/user-guide/reference/config.md +1 -1
- package/docs/user-guide/reference/security-test-payloads.md +50 -0
- package/docs/user-guide/release/ci-setup-java.md +114 -0
- package/docs/user-guide/release/ci-setup-nodejs.md +94 -0
- package/docs/user-guide/release/ci-setup-php.md +102 -0
- package/docs/user-guide/release/ci-setup-troubleshooting.md +94 -0
- package/docs/user-guide/release/ci-setup.md +17 -370
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +9 -3
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +4 -43
- package/package.json +2 -3
- package/scripts/confluence-sync.ts +2 -2
- package/scripts/jira-sync.ts +2 -2
- package/scripts/multi-project-estimate.ts +2 -2
- package/scripts/pr-automation.ts +2 -2
- package/scripts/pre-flight-check.ts +2 -2
- package/scripts/resource-dashboard.ts +2 -2
- package/scripts/spec-impl-workflow.ts +2 -2
- package/scripts/template/__tests__/multi-repo-renderer.test.ts +15 -10
- package/scripts/template/multi-repo-renderer.ts +9 -3
- package/scripts/test-workflow-stages.ts +2 -2
- package/scripts/utils/__tests__/env-loader.test.ts +145 -0
- package/scripts/utils/config-loader.ts +3 -2
- package/scripts/utils/env-loader.ts +25 -0
- package/scripts/workflow-orchestrator.ts +2 -2
- package/docs/design-issue-55.md +0 -240
- package/docs/design-issue-56.md +0 -181
- package/docs/user-guide/guides/multi-repo-migration-guide.md +0 -516
|
@@ -39,297 +39,25 @@ michiは以下のCI/CDツールをサポートしています:
|
|
|
39
39
|
- **メリット**: 高いカスタマイズ性、柔軟なパイプライン設定
|
|
40
40
|
- **設定ファイル**: `screwdriver.yaml`
|
|
41
41
|
|
|
42
|
-
## Node.js/TypeScript プロジェクトのCI/CD設定
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
## 言語別CI/CD設定ガイド
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
各言語のCI/CD設定については、以下のドキュメントを参照してください:
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
push:
|
|
53
|
-
branches:
|
|
54
|
-
- main
|
|
55
|
-
pull_request:
|
|
56
|
-
|
|
57
|
-
jobs:
|
|
58
|
-
test:
|
|
59
|
-
runs-on: ubuntu-latest
|
|
60
|
-
|
|
61
|
-
strategy:
|
|
62
|
-
matrix:
|
|
63
|
-
node-version: [18.x, 20.x]
|
|
64
|
-
|
|
65
|
-
steps:
|
|
66
|
-
- uses: actions/checkout@v4
|
|
67
|
-
|
|
68
|
-
- name: Setup Node.js
|
|
69
|
-
uses: actions/setup-node@v4
|
|
70
|
-
with:
|
|
71
|
-
node-version: ${{ matrix.node-version }}
|
|
72
|
-
cache: 'npm'
|
|
73
|
-
|
|
74
|
-
- name: Install dependencies
|
|
75
|
-
run: npm ci
|
|
76
|
-
|
|
77
|
-
- name: Run lint
|
|
78
|
-
run: npm run lint
|
|
79
|
-
|
|
80
|
-
- name: Run tests
|
|
81
|
-
run: npm test
|
|
82
|
-
|
|
83
|
-
- name: Build
|
|
84
|
-
run: npm run build
|
|
85
|
-
|
|
86
|
-
- name: Upload coverage
|
|
87
|
-
uses: codecov/codecov-action@v3
|
|
88
|
-
if: matrix.node-version == '20.x'
|
|
89
|
-
with:
|
|
90
|
-
files: ./coverage/coverage-final.json
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
### Screwdriver設定例
|
|
94
|
-
|
|
95
|
-
**screwdriver.yaml**
|
|
96
|
-
|
|
97
|
-
```yaml
|
|
98
|
-
shared:
|
|
99
|
-
image: node:20
|
|
100
|
-
|
|
101
|
-
jobs:
|
|
102
|
-
main:
|
|
103
|
-
requires: [~pr, ~commit]
|
|
104
|
-
steps:
|
|
105
|
-
- install: npm ci
|
|
106
|
-
- lint: npm run lint
|
|
107
|
-
- test: npm test
|
|
108
|
-
- build: npm run build
|
|
109
|
-
- coverage: |
|
|
110
|
-
if [ -d "coverage" ]; then
|
|
111
|
-
echo "Coverage report generated"
|
|
112
|
-
fi
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### package.jsonスクリプト設定
|
|
116
|
-
|
|
117
|
-
```json
|
|
118
|
-
{
|
|
119
|
-
"scripts": {
|
|
120
|
-
"test": "vitest run --coverage",
|
|
121
|
-
"test:watch": "vitest",
|
|
122
|
-
"lint": "eslint src/**/*.ts",
|
|
123
|
-
"lint:fix": "eslint src/**/*.ts --fix",
|
|
124
|
-
"build": "tsc",
|
|
125
|
-
"type-check": "tsc --noEmit"
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Java(Gradle)プロジェクトのCI/CD設定
|
|
131
|
-
|
|
132
|
-
### GitHub Actions設定例
|
|
133
|
-
|
|
134
|
-
**.github/workflows/test.yml**
|
|
47
|
+
- **[Node.js/TypeScript プロジェクト](./ci-setup-nodejs.md)**
|
|
48
|
+
- GitHub Actions設定
|
|
49
|
+
- Screwdriver設定
|
|
50
|
+
- Phase A/Bテスト実行
|
|
135
51
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
push:
|
|
141
|
-
branches:
|
|
142
|
-
- main
|
|
143
|
-
pull_request:
|
|
144
|
-
|
|
145
|
-
jobs:
|
|
146
|
-
test:
|
|
147
|
-
runs-on: ubuntu-latest
|
|
148
|
-
|
|
149
|
-
strategy:
|
|
150
|
-
matrix:
|
|
151
|
-
java-version: [17, 21]
|
|
152
|
-
|
|
153
|
-
steps:
|
|
154
|
-
- uses: actions/checkout@v4
|
|
155
|
-
|
|
156
|
-
- name: Setup JDK
|
|
157
|
-
uses: actions/setup-java@v4
|
|
158
|
-
with:
|
|
159
|
-
distribution: 'temurin'
|
|
160
|
-
java-version: ${{ matrix.java-version }}
|
|
161
|
-
cache: 'gradle'
|
|
162
|
-
|
|
163
|
-
- name: Grant execute permission for gradlew
|
|
164
|
-
run: chmod +x gradlew
|
|
165
|
-
|
|
166
|
-
- name: Run checkstyle
|
|
167
|
-
run: ./gradlew checkstyleMain checkstyleTest
|
|
168
|
-
|
|
169
|
-
- name: Run tests
|
|
170
|
-
run: ./gradlew test
|
|
171
|
-
|
|
172
|
-
- name: Build
|
|
173
|
-
run: ./gradlew build
|
|
52
|
+
- **[Java(Gradle)プロジェクト](./ci-setup-java.md)**
|
|
53
|
+
- GitHub Actions設定
|
|
54
|
+
- Screwdriver設定
|
|
55
|
+
- Phase A/Bテスト実行
|
|
174
56
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
name: test-results
|
|
180
|
-
path: build/reports/tests/test/
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
### Screwdriver設定例
|
|
184
|
-
|
|
185
|
-
**screwdriver.yaml**
|
|
186
|
-
|
|
187
|
-
```yaml
|
|
188
|
-
shared:
|
|
189
|
-
image: openjdk:17
|
|
190
|
-
|
|
191
|
-
jobs:
|
|
192
|
-
main:
|
|
193
|
-
requires: [~pr, ~commit]
|
|
194
|
-
steps:
|
|
195
|
-
- setup: chmod +x gradlew
|
|
196
|
-
- checkstyle: ./gradlew checkstyleMain checkstyleTest
|
|
197
|
-
- test: ./gradlew test
|
|
198
|
-
- build: ./gradlew build
|
|
199
|
-
- report: |
|
|
200
|
-
if [ -d "build/reports" ]; then
|
|
201
|
-
echo "Test reports generated"
|
|
202
|
-
fi
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
### build.gradle設定
|
|
206
|
-
|
|
207
|
-
```gradle
|
|
208
|
-
plugins {
|
|
209
|
-
id 'java'
|
|
210
|
-
id 'checkstyle'
|
|
211
|
-
id 'jacoco'
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
test {
|
|
215
|
-
useJUnitPlatform()
|
|
216
|
-
testLogging {
|
|
217
|
-
events "passed", "skipped", "failed"
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
jacoco {
|
|
222
|
-
toolVersion = "0.8.10"
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
jacocoTestReport {
|
|
226
|
-
reports {
|
|
227
|
-
xml.required = true
|
|
228
|
-
html.required = true
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
checkstyle {
|
|
233
|
-
toolVersion = '10.12.0'
|
|
234
|
-
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml")
|
|
235
|
-
}
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
## PHP プロジェクトのCI/CD設定
|
|
239
|
-
|
|
240
|
-
### GitHub Actions設定例
|
|
241
|
-
|
|
242
|
-
**.github/workflows/test.yml**
|
|
243
|
-
|
|
244
|
-
```yaml
|
|
245
|
-
name: Test
|
|
246
|
-
|
|
247
|
-
on:
|
|
248
|
-
push:
|
|
249
|
-
branches:
|
|
250
|
-
- main
|
|
251
|
-
pull_request:
|
|
252
|
-
|
|
253
|
-
jobs:
|
|
254
|
-
test:
|
|
255
|
-
runs-on: ubuntu-latest
|
|
256
|
-
|
|
257
|
-
strategy:
|
|
258
|
-
matrix:
|
|
259
|
-
php-version: ['8.1', '8.2', '8.3']
|
|
260
|
-
|
|
261
|
-
steps:
|
|
262
|
-
- uses: actions/checkout@v4
|
|
263
|
-
|
|
264
|
-
- name: Setup PHP
|
|
265
|
-
uses: shivammathur/setup-php@v2
|
|
266
|
-
with:
|
|
267
|
-
php-version: ${{ matrix.php-version }}
|
|
268
|
-
coverage: xdebug
|
|
269
|
-
tools: composer:v2
|
|
270
|
-
|
|
271
|
-
- name: Cache Composer packages
|
|
272
|
-
uses: actions/cache@v3
|
|
273
|
-
with:
|
|
274
|
-
path: vendor
|
|
275
|
-
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
|
276
|
-
restore-keys: |
|
|
277
|
-
${{ runner.os }}-php-
|
|
278
|
-
|
|
279
|
-
- name: Install dependencies
|
|
280
|
-
run: composer install --prefer-dist --no-progress
|
|
281
|
-
|
|
282
|
-
- name: Run PHPStan
|
|
283
|
-
run: composer phpstan
|
|
284
|
-
|
|
285
|
-
- name: Run tests
|
|
286
|
-
run: composer test
|
|
287
|
-
|
|
288
|
-
- name: Upload coverage
|
|
289
|
-
uses: codecov/codecov-action@v3
|
|
290
|
-
if: matrix.php-version == '8.3'
|
|
291
|
-
with:
|
|
292
|
-
files: ./coverage.xml
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
### Screwdriver設定例
|
|
296
|
-
|
|
297
|
-
**screwdriver.yaml**
|
|
298
|
-
|
|
299
|
-
```yaml
|
|
300
|
-
shared:
|
|
301
|
-
image: php:8.3
|
|
302
|
-
|
|
303
|
-
jobs:
|
|
304
|
-
main:
|
|
305
|
-
requires: [~pr, ~commit]
|
|
306
|
-
steps:
|
|
307
|
-
- install-composer: |
|
|
308
|
-
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
|
309
|
-
php composer-setup.php
|
|
310
|
-
php -r "unlink('composer-setup.php');"
|
|
311
|
-
- install: php composer.phar install --prefer-dist --no-progress
|
|
312
|
-
- phpstan: php composer.phar phpstan
|
|
313
|
-
- test: php composer.phar test
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
### composer.json設定
|
|
317
|
-
|
|
318
|
-
```json
|
|
319
|
-
{
|
|
320
|
-
"scripts": {
|
|
321
|
-
"test": "phpunit --coverage-clover coverage.xml",
|
|
322
|
-
"test:unit": "phpunit --testsuite Unit",
|
|
323
|
-
"phpstan": "phpstan analyse src tests --level=8",
|
|
324
|
-
"cs-fix": "php-cs-fixer fix"
|
|
325
|
-
},
|
|
326
|
-
"require-dev": {
|
|
327
|
-
"phpunit/phpunit": "^10.0",
|
|
328
|
-
"phpstan/phpstan": "^1.10",
|
|
329
|
-
"friendsofphp/php-cs-fixer": "^3.0"
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
```
|
|
57
|
+
- **[PHP プロジェクト](./ci-setup-php.md)**
|
|
58
|
+
- GitHub Actions設定
|
|
59
|
+
- Screwdriver設定
|
|
60
|
+
- Phase A/Bテスト実行
|
|
333
61
|
|
|
334
62
|
## CI/CDのベストプラクティス
|
|
335
63
|
|
|
@@ -397,93 +125,12 @@ jobs:
|
|
|
397
125
|
path: build/reports/
|
|
398
126
|
```
|
|
399
127
|
|
|
400
|
-
## トラブルシューティング
|
|
401
|
-
|
|
402
|
-
### Node.js関連
|
|
403
|
-
|
|
404
|
-
#### 問題: `npm ci` が失敗する
|
|
405
|
-
|
|
406
|
-
**原因**: package-lock.jsonが古い
|
|
407
|
-
|
|
408
|
-
**解決方法**:
|
|
409
|
-
```bash
|
|
410
|
-
# ローカルで再生成
|
|
411
|
-
rm -rf node_modules package-lock.json
|
|
412
|
-
npm install
|
|
413
|
-
git add package-lock.json
|
|
414
|
-
git commit -m "fix: update package-lock.json"
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
#### 問題: テストがローカルでは成功するがCI/CDで失敗
|
|
418
|
-
|
|
419
|
-
**原因**: 環境依存の問題(タイムゾーン、ファイルパス等)
|
|
420
|
-
|
|
421
|
-
**解決方法**:
|
|
422
|
-
```javascript
|
|
423
|
-
// タイムゾーンを固定
|
|
424
|
-
process.env.TZ = 'UTC';
|
|
425
|
-
|
|
426
|
-
// ファイルパスは絶対パスではなく相対パス
|
|
427
|
-
const configPath = path.join(__dirname, '../config.json');
|
|
428
|
-
```
|
|
429
128
|
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
#### 問題: Gradleビルドが遅い
|
|
433
|
-
|
|
434
|
-
**原因**: キャッシュが効いていない
|
|
435
|
-
|
|
436
|
-
**解決方法**:
|
|
437
|
-
```yaml
|
|
438
|
-
# GitHub Actionsでキャッシュを有効化
|
|
439
|
-
- uses: actions/setup-java@v4
|
|
440
|
-
with:
|
|
441
|
-
cache: 'gradle'
|
|
442
|
-
|
|
443
|
-
# または手動でキャッシュ
|
|
444
|
-
- uses: actions/cache@v3
|
|
445
|
-
with:
|
|
446
|
-
path: |
|
|
447
|
-
~/.gradle/caches
|
|
448
|
-
~/.gradle/wrapper
|
|
449
|
-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
450
|
-
```
|
|
451
|
-
|
|
452
|
-
#### 問題: `./gradlew: Permission denied`
|
|
453
|
-
|
|
454
|
-
**原因**: 実行権限がない
|
|
455
|
-
|
|
456
|
-
**解決方法**:
|
|
457
|
-
```yaml
|
|
458
|
-
- name: Grant execute permission
|
|
459
|
-
run: chmod +x gradlew
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
### PHP関連
|
|
463
|
-
|
|
464
|
-
#### 問題: Composer installが失敗
|
|
465
|
-
|
|
466
|
-
**原因**: メモリ不足
|
|
467
|
-
|
|
468
|
-
**解決方法**:
|
|
469
|
-
```yaml
|
|
470
|
-
- name: Install dependencies
|
|
471
|
-
run: composer install --prefer-dist --no-progress
|
|
472
|
-
env:
|
|
473
|
-
COMPOSER_MEMORY_LIMIT: -1
|
|
474
|
-
```
|
|
475
|
-
|
|
476
|
-
#### 問題: PHPStanがCI/CDで異なる結果を返す
|
|
129
|
+
## トラブルシューティング
|
|
477
130
|
|
|
478
|
-
|
|
131
|
+
CI/CD設定の問題については、以下のドキュメントを参照してください:
|
|
479
132
|
|
|
480
|
-
|
|
481
|
-
```yaml
|
|
482
|
-
# 特定のPHPバージョンを指定
|
|
483
|
-
- uses: shivammathur/setup-php@v2
|
|
484
|
-
with:
|
|
485
|
-
php-version: '8.3' # プロジェクトと同じバージョン
|
|
486
|
-
```
|
|
133
|
+
👉 **[CI/CDトラブルシューティングガイド](./ci-setup-troubleshooting.md)**
|
|
487
134
|
|
|
488
135
|
## CI/CD設定のチェックリスト
|
|
489
136
|
|
|
@@ -85,7 +85,9 @@ Example:
|
|
|
85
85
|
| UF-002 | Product Purchase | User browses, adds to cart, and completes checkout | High | 8 |
|
|
86
86
|
| UF-003 | Password Reset | User resets forgotten password | Medium | 4 |
|
|
87
87
|
|
|
88
|
-
### 3.3 Browser/Device Matrix
|
|
88
|
+
### 3.3 Browser/Device Matrix (Optional)
|
|
89
|
+
|
|
90
|
+
**Note**: This matrix is optional. Include it if you need to test across multiple browsers and devices.
|
|
89
91
|
|
|
90
92
|
Test each user flow on the following combinations:
|
|
91
93
|
|
|
@@ -506,7 +508,9 @@ describe('User Registration Flow', () => {
|
|
|
506
508
|
});
|
|
507
509
|
```
|
|
508
510
|
|
|
509
|
-
## Appendix C: Screenshot and Video Configuration
|
|
511
|
+
## Appendix C: Screenshot and Video Configuration (Optional)
|
|
512
|
+
|
|
513
|
+
**Note**: This section is optional. Include it if you need to configure screenshot and video capture for your E2E tests.
|
|
510
514
|
|
|
511
515
|
### Playwright Configuration
|
|
512
516
|
|
|
@@ -533,7 +537,9 @@ module.exports = {
|
|
|
533
537
|
};
|
|
534
538
|
```
|
|
535
539
|
|
|
536
|
-
## Appendix D: Execution Timing
|
|
540
|
+
## Appendix D: Execution Timing (Optional)
|
|
541
|
+
|
|
542
|
+
**Note**: This section is optional. Include it if you need to specify when E2E tests should be executed.
|
|
537
543
|
|
|
538
544
|
## Phase B (Before Release) - Manual Execution
|
|
539
545
|
|
|
@@ -603,47 +603,12 @@ sonar-scanner \
|
|
|
603
603
|
|
|
604
604
|
---
|
|
605
605
|
|
|
606
|
-
## Appendix B: Common Attack Payloads
|
|
607
|
-
|
|
608
|
-
### SQL Injection Payloads
|
|
609
|
-
|
|
610
|
-
```sql
|
|
611
|
-
' OR '1'='1' --
|
|
612
|
-
' OR '1'='1' /*
|
|
613
|
-
admin' --
|
|
614
|
-
admin' #
|
|
615
|
-
' UNION SELECT NULL, username, password FROM users --
|
|
616
|
-
1'; DROP TABLE users; --
|
|
617
|
-
```
|
|
618
|
-
|
|
619
|
-
### XSS Payloads
|
|
620
|
-
|
|
621
|
-
```html
|
|
622
|
-
<script>alert('XSS')</script>
|
|
623
|
-
<img src=x onerror=alert('XSS')>
|
|
624
|
-
<svg onload=alert('XSS')>
|
|
625
|
-
<iframe src="javascript:alert('XSS')">
|
|
626
|
-
<body onload=alert('XSS')>
|
|
627
|
-
```
|
|
628
606
|
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
```text
|
|
632
|
-
../../etc/passwd
|
|
633
|
-
....//....//etc/passwd
|
|
634
|
-
..%2F..%2Fetc%2Fpasswd
|
|
635
|
-
..%252F..%252Fetc%252Fpasswd
|
|
636
|
-
```
|
|
607
|
+
## Appendix B: Common Attack Payloads
|
|
637
608
|
|
|
638
|
-
|
|
609
|
+
攻撃ペイロードの詳細なリストは、以下のリファレンスドキュメントを参照してください:
|
|
639
610
|
|
|
640
|
-
|
|
641
|
-
*)(uid=*))(|(uid=*
|
|
642
|
-
admin)(&(password=*))
|
|
643
|
-
*)(objectClass=*)
|
|
644
|
-
```
|
|
645
|
-
|
|
646
|
-
---
|
|
611
|
+
👉 **[一般的な攻撃ペイロード](../../reference/security-test-payloads.md)**
|
|
647
612
|
|
|
648
613
|
## Appendix C: Execution Timing
|
|
649
614
|
|
|
@@ -657,8 +622,4 @@ Security tests are executed manually before creating a release tag:
|
|
|
657
622
|
4. All critical and high-severity vulnerabilities must be fixed before release
|
|
658
623
|
5. Medium/low vulnerabilities should be documented and scheduled for future fix
|
|
659
624
|
|
|
660
|
-
|
|
661
|
-
- Static code analysis (SonarQube)
|
|
662
|
-
- Dependency vulnerability scanning (Snyk)
|
|
663
|
-
|
|
664
|
-
These automated scans can run in Phase A, but comprehensive security testing is done in Phase B.
|
|
625
|
+
**Note**: All security tests, including static code analysis and dependency vulnerability scanning, are executed manually in Phase B. CI/CD during PR phase (Phase A) only runs unit tests, linting, and build checks.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sk8metal/michi-cli",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.3",
|
|
4
4
|
"description": "Managed Intelligent Comprehensive Hub for Integration - AI-driven development workflow automation",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -81,7 +81,6 @@
|
|
|
81
81
|
"commander": "^14.0.2",
|
|
82
82
|
"dotenv": "^17.2.3",
|
|
83
83
|
"exceljs": "^4.4.0",
|
|
84
|
-
"googleapis": "^166.0.0",
|
|
85
84
|
"inquirer": "^13.0.1",
|
|
86
85
|
"jira-client": "^8.2.2",
|
|
87
86
|
"markdown-it": "^14.0.0",
|
|
@@ -91,7 +90,7 @@
|
|
|
91
90
|
"devDependencies": {
|
|
92
91
|
"@eslint/js": "^9.39.1",
|
|
93
92
|
"@types/markdown-it": "^14.1.2",
|
|
94
|
-
"@types/node": "^
|
|
93
|
+
"@types/node": "^25.0.2",
|
|
95
94
|
"@types/turndown": "^5.0.4",
|
|
96
95
|
"@typescript-eslint/eslint-plugin": "^8.46.4",
|
|
97
96
|
"@typescript-eslint/parser": "^8.46.4",
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { resolve } from 'path';
|
|
8
8
|
import axios from 'axios';
|
|
9
|
-
import {
|
|
9
|
+
import { loadEnv } from './utils/env-loader.js';
|
|
10
10
|
import { loadProjectMeta } from './utils/project-meta.js';
|
|
11
11
|
import { validateFeatureNameOrThrow } from './utils/feature-name-validator.js';
|
|
12
12
|
import { getConfig, getConfigPath } from './utils/config-loader.js';
|
|
@@ -15,7 +15,7 @@ import { validateForConfluenceSync } from './utils/config-validator.js';
|
|
|
15
15
|
import { updateSpecJsonAfterConfluenceSync, loadSpecJson } from './utils/spec-updater.js';
|
|
16
16
|
|
|
17
17
|
// 環境変数読み込み
|
|
18
|
-
|
|
18
|
+
loadEnv();
|
|
19
19
|
|
|
20
20
|
/**
|
|
21
21
|
* セキュリティ: CQLクエリ文字列のエスケープ
|
package/scripts/jira-sync.ts
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
import { readFileSync } from 'fs';
|
|
21
21
|
import { resolve } from 'path';
|
|
22
22
|
import axios from 'axios';
|
|
23
|
-
import {
|
|
23
|
+
import { loadEnv } from './utils/env-loader.js';
|
|
24
24
|
import { loadProjectMeta } from './utils/project-meta.js';
|
|
25
25
|
import { validateFeatureNameOrThrow } from './utils/feature-name-validator.js';
|
|
26
26
|
import { getConfig, getConfigPath } from './utils/config-loader.js';
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
type SpecJson,
|
|
31
31
|
} from './utils/spec-updater.js';
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
loadEnv();
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
36
|
* JIRA Issue基本型
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { Octokit } from '@octokit/rest';
|
|
6
|
-
import {
|
|
6
|
+
import { loadEnv } from './utils/env-loader.js';
|
|
7
7
|
import ExcelJS from 'exceljs';
|
|
8
8
|
import { resolve, join, dirname } from 'path';
|
|
9
9
|
import { writeFileSync, mkdirSync, unlinkSync, readFileSync } from 'fs';
|
|
10
10
|
import { tmpdir } from 'os';
|
|
11
11
|
import { mkdir } from 'fs/promises';
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
loadEnv();
|
|
14
14
|
|
|
15
15
|
// EstimateData型定義(estimate-generator.tsから統合)
|
|
16
16
|
export interface EstimateData {
|
package/scripts/pr-automation.ts
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
import { existsSync, readFileSync } from 'fs';
|
|
7
7
|
import { join } from 'path';
|
|
8
8
|
import axios from 'axios';
|
|
9
|
-
import {
|
|
9
|
+
import { loadEnv } from './utils/env-loader.js';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
loadEnv();
|
|
12
12
|
|
|
13
13
|
interface PreFlightResult {
|
|
14
14
|
valid: boolean;
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { Octokit } from '@octokit/rest';
|
|
7
|
-
import {
|
|
7
|
+
import { loadEnv } from './utils/env-loader.js';
|
|
8
8
|
import { ConfluenceClient, getConfluenceConfig } from './confluence-sync.js';
|
|
9
9
|
import { getConfig } from './utils/config-loader.js';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
loadEnv();
|
|
12
12
|
|
|
13
13
|
interface ProjectResource {
|
|
14
14
|
projectName: string;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - 終了時: PR作成、Epic + 最初の Story を「レビュー待ち」に移動、PRリンクをコメント
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { loadEnv } from './utils/env-loader.js';
|
|
11
11
|
import { JIRAClient } from './jira-sync.js';
|
|
12
12
|
import { getConfig } from './utils/config-loader.js';
|
|
13
13
|
import {
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
JiraInfo,
|
|
17
17
|
} from './utils/spec-loader.js';
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
loadEnv();
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
22
|
* spec-impl 統合ワークフローのオプション
|