@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
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Michi CI/CD設定ガイド - Java/Gradle
|
|
2
|
+
|
|
3
|
+
**親ドキュメント**: [ci-setup.md](./ci-setup.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Java(Gradle)プロジェクトのCI/CD設定
|
|
8
|
+
|
|
9
|
+
### GitHub Actions設定例
|
|
10
|
+
|
|
11
|
+
**設定ファイル例**: `.github/workflows/test.yml`
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
name: Test
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
branches:
|
|
19
|
+
- main
|
|
20
|
+
pull_request:
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
test:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
|
|
26
|
+
strategy:
|
|
27
|
+
matrix:
|
|
28
|
+
java-version: [17, 21]
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
- name: Setup JDK
|
|
34
|
+
uses: actions/setup-java@v4
|
|
35
|
+
with:
|
|
36
|
+
distribution: 'temurin'
|
|
37
|
+
java-version: ${{ matrix.java-version }}
|
|
38
|
+
cache: 'gradle'
|
|
39
|
+
|
|
40
|
+
- name: Grant execute permission for gradlew
|
|
41
|
+
run: chmod +x gradlew
|
|
42
|
+
|
|
43
|
+
- name: Run checkstyle
|
|
44
|
+
run: ./gradlew checkstyleMain checkstyleTest
|
|
45
|
+
|
|
46
|
+
- name: Run tests
|
|
47
|
+
run: ./gradlew test
|
|
48
|
+
|
|
49
|
+
- name: Build
|
|
50
|
+
run: ./gradlew build
|
|
51
|
+
|
|
52
|
+
- name: Upload test results
|
|
53
|
+
uses: actions/upload-artifact@v3
|
|
54
|
+
if: failure()
|
|
55
|
+
with:
|
|
56
|
+
name: test-results
|
|
57
|
+
path: build/reports/tests/test/
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Screwdriver設定例
|
|
61
|
+
|
|
62
|
+
**設定ファイル例**: `screwdriver.yaml`
|
|
63
|
+
|
|
64
|
+
```yaml
|
|
65
|
+
shared:
|
|
66
|
+
image: openjdk:17
|
|
67
|
+
|
|
68
|
+
jobs:
|
|
69
|
+
main:
|
|
70
|
+
requires: [~pr, ~commit]
|
|
71
|
+
steps:
|
|
72
|
+
- setup: chmod +x gradlew
|
|
73
|
+
- checkstyle: ./gradlew checkstyleMain checkstyleTest
|
|
74
|
+
- test: ./gradlew test
|
|
75
|
+
- build: ./gradlew build
|
|
76
|
+
- report: |
|
|
77
|
+
if [ -d "build/reports" ]; then
|
|
78
|
+
echo "Test reports generated"
|
|
79
|
+
fi
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### build.gradle設定
|
|
83
|
+
|
|
84
|
+
```gradle
|
|
85
|
+
plugins {
|
|
86
|
+
id 'java'
|
|
87
|
+
id 'checkstyle'
|
|
88
|
+
id 'jacoco'
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
test {
|
|
92
|
+
useJUnitPlatform()
|
|
93
|
+
testLogging {
|
|
94
|
+
events "passed", "skipped", "failed"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
jacoco {
|
|
99
|
+
toolVersion = "0.8.10"
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
jacocoTestReport {
|
|
103
|
+
reports {
|
|
104
|
+
xml.required = true
|
|
105
|
+
html.required = true
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
checkstyle {
|
|
110
|
+
toolVersion = '10.12.0'
|
|
111
|
+
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml")
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Michi CI/CD設定ガイド - Node.js/TypeScript
|
|
2
|
+
|
|
3
|
+
**親ドキュメント**: [ci-setup.md](./ci-setup.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Node.js/TypeScript プロジェクトのCI/CD設定
|
|
8
|
+
|
|
9
|
+
### GitHub Actions設定例
|
|
10
|
+
|
|
11
|
+
**設定ファイル例**: `.github/workflows/test.yml`
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
name: Test
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
branches:
|
|
19
|
+
- main
|
|
20
|
+
pull_request:
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
test:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
|
|
26
|
+
strategy:
|
|
27
|
+
matrix:
|
|
28
|
+
node-version: [18.x, 20.x]
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
- name: Setup Node.js
|
|
34
|
+
uses: actions/setup-node@v4
|
|
35
|
+
with:
|
|
36
|
+
node-version: ${{ matrix.node-version }}
|
|
37
|
+
cache: 'npm'
|
|
38
|
+
|
|
39
|
+
- name: Install dependencies
|
|
40
|
+
run: npm ci
|
|
41
|
+
|
|
42
|
+
- name: Run lint
|
|
43
|
+
run: npm run lint
|
|
44
|
+
|
|
45
|
+
- name: Run tests
|
|
46
|
+
run: npm test
|
|
47
|
+
|
|
48
|
+
- name: Build
|
|
49
|
+
run: npm run build
|
|
50
|
+
|
|
51
|
+
- name: Upload coverage
|
|
52
|
+
uses: codecov/codecov-action@v5.5.1
|
|
53
|
+
if: matrix.node-version == '20.x'
|
|
54
|
+
with:
|
|
55
|
+
files: ./coverage/coverage-final.json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Screwdriver設定例
|
|
59
|
+
|
|
60
|
+
**設定ファイル例**: `screwdriver.yaml`
|
|
61
|
+
|
|
62
|
+
```yaml
|
|
63
|
+
shared:
|
|
64
|
+
image: node:20
|
|
65
|
+
|
|
66
|
+
jobs:
|
|
67
|
+
main:
|
|
68
|
+
requires: [~pr, ~commit]
|
|
69
|
+
steps:
|
|
70
|
+
- install: npm ci
|
|
71
|
+
- lint: npm run lint
|
|
72
|
+
- test: npm test
|
|
73
|
+
- build: npm run build
|
|
74
|
+
- coverage: |
|
|
75
|
+
if [ -d "coverage" ]; then
|
|
76
|
+
echo "Coverage report generated"
|
|
77
|
+
fi
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### package.jsonスクリプト設定
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"scripts": {
|
|
85
|
+
"test": "vitest run --coverage",
|
|
86
|
+
"test:watch": "vitest",
|
|
87
|
+
"lint": "eslint src/**/*.ts",
|
|
88
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
89
|
+
"build": "tsc",
|
|
90
|
+
"type-check": "tsc --noEmit"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
# Michi CI/CD設定ガイド - PHP
|
|
2
|
+
|
|
3
|
+
**親ドキュメント**: [ci-setup.md](./ci-setup.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## PHP プロジェクトのCI/CD設定
|
|
8
|
+
|
|
9
|
+
### GitHub Actions設定例
|
|
10
|
+
|
|
11
|
+
**設定ファイル例**: `.github/workflows/test.yml`
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
name: Test
|
|
15
|
+
|
|
16
|
+
on:
|
|
17
|
+
push:
|
|
18
|
+
branches:
|
|
19
|
+
- main
|
|
20
|
+
pull_request:
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
test:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
|
|
26
|
+
strategy:
|
|
27
|
+
matrix:
|
|
28
|
+
php-version: ['8.1', '8.2', '8.3']
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
- name: Setup PHP
|
|
34
|
+
uses: shivammathur/setup-php@v2
|
|
35
|
+
with:
|
|
36
|
+
php-version: ${{ matrix.php-version }}
|
|
37
|
+
coverage: xdebug
|
|
38
|
+
tools: composer:v2
|
|
39
|
+
|
|
40
|
+
- name: Cache Composer packages
|
|
41
|
+
uses: actions/cache@v3
|
|
42
|
+
with:
|
|
43
|
+
path: vendor
|
|
44
|
+
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
|
45
|
+
restore-keys: |
|
|
46
|
+
${{ runner.os }}-php-
|
|
47
|
+
|
|
48
|
+
- name: Install dependencies
|
|
49
|
+
run: composer install --prefer-dist --no-progress
|
|
50
|
+
|
|
51
|
+
- name: Run PHPStan
|
|
52
|
+
run: composer phpstan
|
|
53
|
+
|
|
54
|
+
- name: Run tests
|
|
55
|
+
run: composer test
|
|
56
|
+
|
|
57
|
+
- name: Upload coverage
|
|
58
|
+
uses: codecov/codecov-action@v5.5.1
|
|
59
|
+
if: matrix.php-version == '8.3'
|
|
60
|
+
with:
|
|
61
|
+
files: ./coverage.xml
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Screwdriver設定例
|
|
65
|
+
|
|
66
|
+
**設定ファイル例**: `screwdriver.yaml`
|
|
67
|
+
|
|
68
|
+
```yaml
|
|
69
|
+
shared:
|
|
70
|
+
image: php:8.3
|
|
71
|
+
|
|
72
|
+
jobs:
|
|
73
|
+
main:
|
|
74
|
+
requires: [~pr, ~commit]
|
|
75
|
+
steps:
|
|
76
|
+
- install-composer: |
|
|
77
|
+
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
|
|
78
|
+
php composer-setup.php
|
|
79
|
+
php -r "unlink('composer-setup.php');"
|
|
80
|
+
- install: php composer.phar install --prefer-dist --no-progress
|
|
81
|
+
- phpstan: php composer.phar phpstan
|
|
82
|
+
- test: php composer.phar test
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### composer.json設定
|
|
86
|
+
|
|
87
|
+
```json
|
|
88
|
+
{
|
|
89
|
+
"scripts": {
|
|
90
|
+
"test": "phpunit --coverage-clover coverage.xml",
|
|
91
|
+
"test:unit": "phpunit --testsuite Unit",
|
|
92
|
+
"phpstan": "phpstan analyse src tests --level=8",
|
|
93
|
+
"cs-fix": "php-cs-fixer fix"
|
|
94
|
+
},
|
|
95
|
+
"require-dev": {
|
|
96
|
+
"phpunit/phpunit": "^10.0",
|
|
97
|
+
"phpstan/phpstan": "^1.10",
|
|
98
|
+
"friendsofphp/php-cs-fixer": "^3.0"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Michi CI/CD - トラブルシューティング
|
|
2
|
+
|
|
3
|
+
**親ドキュメント**: [ci-setup.md](./ci-setup.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## トラブルシューティング
|
|
8
|
+
|
|
9
|
+
### Node.js関連
|
|
10
|
+
|
|
11
|
+
#### 問題: `npm ci` が失敗する
|
|
12
|
+
|
|
13
|
+
**原因**: package-lock.jsonが古い
|
|
14
|
+
|
|
15
|
+
**解決方法**:
|
|
16
|
+
```bash
|
|
17
|
+
# ローカルで再生成
|
|
18
|
+
rm -rf node_modules package-lock.json
|
|
19
|
+
npm install
|
|
20
|
+
git add package-lock.json
|
|
21
|
+
git commit -m "fix: update package-lock.json"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
#### 問題: テストがローカルでは成功するがCI/CDで失敗
|
|
25
|
+
|
|
26
|
+
**原因**: 環境依存の問題(タイムゾーン、ファイルパス等)
|
|
27
|
+
|
|
28
|
+
**解決方法**:
|
|
29
|
+
```javascript
|
|
30
|
+
// タイムゾーンを固定
|
|
31
|
+
process.env.TZ = 'UTC';
|
|
32
|
+
|
|
33
|
+
// ファイルパスは絶対パスではなく相対パス
|
|
34
|
+
const configPath = path.join(__dirname, '../config.json');
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Java(Gradle)関連
|
|
38
|
+
|
|
39
|
+
#### 問題: Gradleビルドが遅い
|
|
40
|
+
|
|
41
|
+
**原因**: キャッシュが効いていない
|
|
42
|
+
|
|
43
|
+
**解決方法**:
|
|
44
|
+
```yaml
|
|
45
|
+
# GitHub Actionsでキャッシュを有効化
|
|
46
|
+
- uses: actions/setup-java@v4
|
|
47
|
+
with:
|
|
48
|
+
cache: 'gradle'
|
|
49
|
+
|
|
50
|
+
# または手動でキャッシュ
|
|
51
|
+
- uses: actions/cache@v3
|
|
52
|
+
with:
|
|
53
|
+
path: |
|
|
54
|
+
~/.gradle/caches
|
|
55
|
+
~/.gradle/wrapper
|
|
56
|
+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### 問題: `./gradlew: Permission denied`
|
|
60
|
+
|
|
61
|
+
**原因**: 実行権限がない
|
|
62
|
+
|
|
63
|
+
**解決方法**:
|
|
64
|
+
```yaml
|
|
65
|
+
- name: Grant execute permission
|
|
66
|
+
run: chmod +x gradlew
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### PHP関連
|
|
70
|
+
|
|
71
|
+
#### 問題: Composer installが失敗
|
|
72
|
+
|
|
73
|
+
**原因**: メモリ不足
|
|
74
|
+
|
|
75
|
+
**解決方法**:
|
|
76
|
+
```yaml
|
|
77
|
+
- name: Install dependencies
|
|
78
|
+
run: composer install --prefer-dist --no-progress
|
|
79
|
+
env:
|
|
80
|
+
COMPOSER_MEMORY_LIMIT: -1
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
#### 問題: PHPStanがCI/CDで異なる結果を返す
|
|
84
|
+
|
|
85
|
+
**原因**: PHPバージョンの違い
|
|
86
|
+
|
|
87
|
+
**解決方法**:
|
|
88
|
+
```yaml
|
|
89
|
+
# 特定のPHPバージョンを指定
|
|
90
|
+
- uses: shivammathur/setup-php@v2
|
|
91
|
+
with:
|
|
92
|
+
php-version: '8.3' # プロジェクトと同じバージョン
|
|
93
|
+
```
|
|
94
|
+
|