@sk8metal/michi-cli 0.10.1 → 0.12.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 +71 -848
- package/dist/scripts/constants/environments.d.ts +1 -1
- package/dist/scripts/constants/environments.d.ts.map +1 -1
- package/dist/scripts/constants/environments.js +0 -20
- package/dist/scripts/constants/environments.js.map +1 -1
- package/dist/scripts/phase-runner.js +1 -1
- package/dist/scripts/phase-runner.js.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.d.ts +18 -0
- package/dist/scripts/utils/multi-repo-validator.d.ts.map +1 -1
- package/dist/scripts/utils/multi-repo-validator.js +42 -0
- package/dist/scripts/utils/multi-repo-validator.js.map +1 -1
- package/dist/scripts/utils/tasks-format-validator.js +3 -3
- package/dist/scripts/utils/tasks-format-validator.js.map +1 -1
- package/dist/scripts/utils/template-finder.d.ts +2 -2
- package/dist/scripts/utils/template-finder.d.ts.map +1 -1
- package/dist/scripts/utils/template-finder.js +3 -8
- package/dist/scripts/utils/template-finder.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +0 -8
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/init.d.ts +0 -4
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +6 -30
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/setup-existing.d.ts +2 -6
- package/dist/src/commands/setup-existing.d.ts.map +1 -1
- package/dist/src/commands/setup-existing.js +8 -142
- package/dist/src/commands/setup-existing.js.map +1 -1
- package/docs/README.md +20 -83
- package/docs/getting-started/configuration.md +350 -0
- package/docs/getting-started/installation.md +59 -0
- package/docs/getting-started/quick-start.md +76 -0
- package/docs/guides/atlassian-integration.md +116 -0
- package/docs/guides/claude-code.md +155 -0
- package/docs/guides/multi-repo.md +117 -0
- package/docs/guides/workflow.md +382 -0
- package/docs/reference/ai-commands.md +92 -0
- package/docs/reference/cli.md +752 -0
- package/docs/reference/environment-variables.md +192 -0
- package/docs/troubleshooting.md +498 -0
- package/package.json +1 -3
- package/scripts/__tests__/create-project.test.ts +12 -12
- package/scripts/__tests__/setup-existing-project.test.ts +22 -22
- package/scripts/constants/__tests__/environments.test.ts +7 -50
- package/scripts/constants/environments.ts +1 -27
- package/scripts/phase-runner.ts +1 -1
- package/scripts/template/__tests__/renderer.test.ts +21 -21
- package/scripts/utils/__tests__/multi-repo-validator.test.ts +159 -1
- package/scripts/utils/multi-repo-validator.ts +50 -0
- package/scripts/utils/tasks-format-validator.ts +3 -3
- package/scripts/utils/template-finder.ts +5 -11
- package/templates/claude/agents/e2e-first-planner/AGENT.md +1 -1
- package/templates/claude/agents/pr-resolver/AGENT.md +15 -3
- package/templates/claude/commands/michi/e2e-plan.md +1 -1
- package/templates/claude/commands/michi/spec-design.md +2 -2
- package/templates/claude/commands/michi/spec-tasks.md +156 -0
- package/templates/claude/commands/michi/test-planning.md +1 -1
- package/templates/claude/commands/michi/validate-design.md +3 -3
- package/templates/claude/commands/michi-multi-repo/impl-all.md +30 -1
- package/templates/claude/commands/michi-multi-repo/propagate-specs.md +14 -1
- package/templates/claude/commands/michi-multi-repo/spec-review.md +16 -2
- package/templates/claude-agent/agents/repo-spec-executor.md +1 -1
- package/templates/claude-agent/commands/michi/spec-tasks.md +117 -0
- package/templates/claude-agent/rules/code-size-monitor.md +26 -0
- package/templates/claude-agent/rules/code-size-rules.md +32 -0
- package/templates/michi/cc-sdd-overrides/settings/rules/design-review-michi.md +1 -1
- package/docs/context.md +0 -59
- package/docs/michi-development/contributing/development.md +0 -341
- package/docs/michi-development/contributing/release.md +0 -365
- package/docs/michi-development/design/config-unification.md +0 -733
- package/docs/michi-development/design/design-config-current-state.md +0 -330
- package/docs/michi-development/design/design-config-implementation.md +0 -628
- package/docs/michi-development/design/design-config-migration.md +0 -952
- package/docs/michi-development/design/design-config-security.md +0 -771
- package/docs/michi-development/design/design-config-solution.md +0 -583
- package/docs/michi-development/design/design-config-testing.md +0 -892
- package/docs/michi-development/testing/manual-verification-flow.md +0 -871
- package/docs/michi-development/testing/manual-verification-other-tools.md +0 -1279
- package/docs/michi-development/testing/manual-verification-troubleshooting.md +0 -122
- package/docs/michi-development/testing/pre-publish-checklist.md +0 -560
- package/docs/michi-development/testing-strategy.md +0 -87
- package/docs/plan.md +0 -275
- package/docs/user-guide/getting-started/github-token-setup.md +0 -510
- package/docs/user-guide/getting-started/new-repository-setup.md +0 -704
- package/docs/user-guide/getting-started/quick-start.md +0 -212
- package/docs/user-guide/getting-started/setup.md +0 -819
- package/docs/user-guide/guides/agent-skills-integration.md +0 -222
- package/docs/user-guide/guides/customization.md +0 -537
- package/docs/user-guide/guides/internationalization.md +0 -540
- package/docs/user-guide/guides/migration-guide.md +0 -138
- package/docs/user-guide/guides/multi-project.md +0 -368
- package/docs/user-guide/guides/multi-repo-guide.md +0 -1590
- package/docs/user-guide/guides/phase-automation.md +0 -419
- package/docs/user-guide/guides/workflow.md +0 -574
- package/docs/user-guide/hands-on/README.md +0 -142
- package/docs/user-guide/hands-on/claude-agent-setup.md +0 -597
- package/docs/user-guide/hands-on/claude-setup.md +0 -452
- package/docs/user-guide/hands-on/cursor-setup.md +0 -353
- package/docs/user-guide/hands-on/troubleshooting.md +0 -964
- package/docs/user-guide/hands-on/verification-checklist.md +0 -439
- package/docs/user-guide/hands-on/workflow-walkthrough.md +0 -1078
- package/docs/user-guide/reference/config.md +0 -589
- package/docs/user-guide/reference/multi-repo-api.md +0 -771
- package/docs/user-guide/reference/quick-reference.md +0 -297
- package/docs/user-guide/reference/security-test-payloads.md +0 -50
- package/docs/user-guide/reference/tasks-template.md +0 -550
- package/docs/user-guide/release/ci-setup-java.md +0 -114
- package/docs/user-guide/release/ci-setup-nodejs.md +0 -94
- package/docs/user-guide/release/ci-setup-php.md +0 -102
- package/docs/user-guide/release/ci-setup-troubleshooting.md +0 -94
- package/docs/user-guide/release/ci-setup.md +0 -188
- package/docs/user-guide/release/release-flow.md +0 -476
- package/docs/user-guide/templates/test-specs/README.md +0 -173
- package/docs/user-guide/templates/test-specs/e2e-test-spec-template.md +0 -553
- package/docs/user-guide/templates/test-specs/integration-test-spec-template.md +0 -435
- package/docs/user-guide/templates/test-specs/performance-test-spec-template.md +0 -454
- package/docs/user-guide/templates/test-specs/security-test-spec-template.md +0 -625
- package/docs/user-guide/templates/test-specs/unit-test-spec-template.md +0 -328
- package/docs/user-guide/testing/integration-tests.md +0 -312
- package/docs/user-guide/testing/tdd-cycle.md +0 -349
- package/docs/user-guide/testing/test-execution-flow.md +0 -396
- package/docs/user-guide/testing/test-failure-handling.md +0 -521
- package/docs/user-guide/testing/test-planning-flow.md +0 -185
- package/docs/user-guide/testing-strategy.md +0 -185
- package/docs/verification-guide.md +0 -518
- package/templates/cline/rules/atlassian-integration.md +0 -36
- package/templates/cline/rules/michi-core.md +0 -56
- package/templates/codex/AGENTS.override.md +0 -277
- package/templates/codex/prompts/confluence-sync.md +0 -177
- package/templates/codex/rules/README.md +0 -210
- package/templates/cursor/commands/kiro/kiro-spec-impl.md +0 -244
- package/templates/cursor/commands/kiro/kiro-spec-tasks.md +0 -354
- package/templates/cursor/commands/michi/confluence-sync.md +0 -76
- package/templates/cursor/commands/michi/project-switch.md +0 -69
- package/templates/cursor/rules/atlassian-mcp.mdc +0 -188
- package/templates/cursor/rules/github-ssot.mdc +0 -151
- package/templates/cursor/rules/multi-project.mdc +0 -81
- package/templates/gemini/commands/README.md +0 -41
- package/templates/gemini/rules/GEMINI.md +0 -80
|
@@ -1,94 +0,0 @@
|
|
|
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
|
-
|
|
@@ -1,102 +0,0 @@
|
|
|
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
|
-
|
|
@@ -1,94 +0,0 @@
|
|
|
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
|
-
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
# CI/CD設定
|
|
2
|
-
|
|
3
|
-
このドキュメントでは、michiを使用したプロジェクトでのCI/CD(継続的インテグレーション/継続的デリバリー)設定について説明します。
|
|
4
|
-
|
|
5
|
-
## michiのCI/CD方針
|
|
6
|
-
|
|
7
|
-
michiでは、**Phase Aのテスト(単体テスト、Lint、ビルド)のみをCI/CDで自動実行**します。
|
|
8
|
-
|
|
9
|
-
### CI/CDで実行されるもの
|
|
10
|
-
|
|
11
|
-
| テストタイプ | 実行タイミング | CI/CDで自動実行 |
|
|
12
|
-
|------------|--------------|---------------|
|
|
13
|
-
| 単体テスト | Phase A(PR前) | ✅ はい |
|
|
14
|
-
| Lint | Phase A(PR前) | ✅ はい |
|
|
15
|
-
| ビルド | Phase A(PR前) | ✅ はい |
|
|
16
|
-
| 統合テスト | Phase B(リリース準備時) | ❌ いいえ(手動) |
|
|
17
|
-
| E2Eテスト | Phase B(リリース準備時) | ❌ いいえ(手動) |
|
|
18
|
-
| パフォーマンステスト | Phase B(リリース準備時) | ❌ いいえ(手動) |
|
|
19
|
-
| セキュリティテスト | Phase B(リリース準備時) | ❌ いいえ(手動) |
|
|
20
|
-
|
|
21
|
-
**理由**:
|
|
22
|
-
- Phase Aは高速実行が必要(数分以内)
|
|
23
|
-
- Phase Bは時間がかかる(数十分〜数時間)
|
|
24
|
-
- Phase Bは本番環境に近い状態での検証が必要
|
|
25
|
-
|
|
26
|
-
## 対応CI/CDツール
|
|
27
|
-
|
|
28
|
-
michiは以下のCI/CDツールをサポートしています:
|
|
29
|
-
|
|
30
|
-
### 1. GitHub Actions(推奨)
|
|
31
|
-
|
|
32
|
-
- **対象**: GitHubホストのリポジトリ
|
|
33
|
-
- **メリット**: GitHubとの統合が容易、無料枠が充実
|
|
34
|
-
- **設定ファイル**: `.github/workflows/`
|
|
35
|
-
|
|
36
|
-
### 2. Screwdriver
|
|
37
|
-
|
|
38
|
-
- **対象**: オープンソースのCI/CDツールを使用したいプロジェクト
|
|
39
|
-
- **メリット**: 高いカスタマイズ性、柔軟なパイプライン設定
|
|
40
|
-
- **設定ファイル**: `screwdriver.yaml`
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
## 言語別CI/CD設定ガイド
|
|
44
|
-
|
|
45
|
-
各言語のCI/CD設定については、以下のドキュメントを参照してください:
|
|
46
|
-
|
|
47
|
-
- **[Node.js/TypeScript プロジェクト](./ci-setup-nodejs.md)**
|
|
48
|
-
- GitHub Actions設定
|
|
49
|
-
- Screwdriver設定
|
|
50
|
-
- Phase A/Bテスト実行
|
|
51
|
-
|
|
52
|
-
- **[Java(Gradle)プロジェクト](./ci-setup-java.md)**
|
|
53
|
-
- GitHub Actions設定
|
|
54
|
-
- Screwdriver設定
|
|
55
|
-
- Phase A/Bテスト実行
|
|
56
|
-
|
|
57
|
-
- **[PHP プロジェクト](./ci-setup-php.md)**
|
|
58
|
-
- GitHub Actions設定
|
|
59
|
-
- Screwdriver設定
|
|
60
|
-
- Phase A/Bテスト実行
|
|
61
|
-
|
|
62
|
-
## CI/CDのベストプラクティス
|
|
63
|
-
|
|
64
|
-
### 1. キャッシュの活用
|
|
65
|
-
|
|
66
|
-
**Node.js(npm):**
|
|
67
|
-
```yaml
|
|
68
|
-
- uses: actions/setup-node@v4
|
|
69
|
-
with:
|
|
70
|
-
cache: 'npm'
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**Java(Gradle):**
|
|
74
|
-
```yaml
|
|
75
|
-
- uses: actions/setup-java@v4
|
|
76
|
-
with:
|
|
77
|
-
cache: 'gradle'
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**PHP(Composer):**
|
|
81
|
-
```yaml
|
|
82
|
-
- uses: actions/cache@v3
|
|
83
|
-
with:
|
|
84
|
-
path: vendor
|
|
85
|
-
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### 2. 並列実行(マトリックス戦略)
|
|
89
|
-
|
|
90
|
-
```yaml
|
|
91
|
-
strategy:
|
|
92
|
-
matrix:
|
|
93
|
-
node-version: [18.x, 20.x]
|
|
94
|
-
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### 3. タイムアウト設定
|
|
98
|
-
|
|
99
|
-
```yaml
|
|
100
|
-
jobs:
|
|
101
|
-
test:
|
|
102
|
-
timeout-minutes: 10 # 10分でタイムアウト
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### 4. エラー時の通知
|
|
106
|
-
|
|
107
|
-
**GitHub Actions(Slack通知):**
|
|
108
|
-
```yaml
|
|
109
|
-
- name: Notify Slack on failure
|
|
110
|
-
if: failure()
|
|
111
|
-
uses: 8398a7/action-slack@v3
|
|
112
|
-
with:
|
|
113
|
-
status: ${{ job.status }}
|
|
114
|
-
webhook_url: ${{ secrets.SLACK_WEBHOOK }}
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
### 5. アーティファクトの保存
|
|
118
|
-
|
|
119
|
-
```yaml
|
|
120
|
-
- name: Upload test results
|
|
121
|
-
uses: actions/upload-artifact@v3
|
|
122
|
-
if: failure()
|
|
123
|
-
with:
|
|
124
|
-
name: test-results
|
|
125
|
-
path: build/reports/
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
## トラブルシューティング
|
|
130
|
-
|
|
131
|
-
CI/CD設定の問題については、以下のドキュメントを参照してください:
|
|
132
|
-
|
|
133
|
-
👉 **[CI/CDトラブルシューティングガイド](./ci-setup-troubleshooting.md)**
|
|
134
|
-
|
|
135
|
-
## CI/CD設定のチェックリスト
|
|
136
|
-
|
|
137
|
-
### 初回設定時
|
|
138
|
-
|
|
139
|
-
- [ ] CI/CD設定ファイルを作成(GitHub Actions or Screwdriver)
|
|
140
|
-
- [ ] 単体テストが自動実行される
|
|
141
|
-
- [ ] Lintが自動実行される
|
|
142
|
-
- [ ] ビルドが自動実行される
|
|
143
|
-
- [ ] キャッシュが有効化されている
|
|
144
|
-
- [ ] マトリックス戦略で複数バージョンをテスト
|
|
145
|
-
- [ ] タイムアウト設定を追加
|
|
146
|
-
- [ ] エラー時の通知設定(任意)
|
|
147
|
-
|
|
148
|
-
### 運用時の定期確認
|
|
149
|
-
|
|
150
|
-
- [ ] CI/CDの実行時間が長くなっていないか(目標: 5分以内)
|
|
151
|
-
- [ ] キャッシュが効いているか
|
|
152
|
-
- [ ] 失敗率が高くなっていないか
|
|
153
|
-
- [ ] 依存パッケージが古くなっていないか
|
|
154
|
-
|
|
155
|
-
## リリースタグ作成時のCI/CD
|
|
156
|
-
|
|
157
|
-
リリースタグを作成すると、CI/CDが自動的に実行されます:
|
|
158
|
-
|
|
159
|
-
```yaml
|
|
160
|
-
# タグプッシュ時にも実行
|
|
161
|
-
on:
|
|
162
|
-
push:
|
|
163
|
-
tags:
|
|
164
|
-
- 'v*'
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
**実行内容**:
|
|
168
|
-
1. 単体テスト
|
|
169
|
-
2. Lint
|
|
170
|
-
3. ビルド
|
|
171
|
-
|
|
172
|
-
**すべて成功したら、GitHub Releaseを作成**します(手動)。
|
|
173
|
-
|
|
174
|
-
詳細は [リリースフロー](./release-flow.md) を参照してください。
|
|
175
|
-
|
|
176
|
-
## 次のステップ
|
|
177
|
-
|
|
178
|
-
- [リリースフロー](./release-flow.md): リリースタグ作成からGitHub Releaseまで
|
|
179
|
-
- [テスト実行フロー](../testing/test-execution-flow.md): Phase A/Bの詳細
|
|
180
|
-
|
|
181
|
-
## CI/CD設定テンプレート
|
|
182
|
-
|
|
183
|
-
実際のCI/CD設定ファイルテンプレートは、以下のディレクトリに用意されています:
|
|
184
|
-
|
|
185
|
-
- GitHub Actions: `templates/ci/github-actions/`
|
|
186
|
-
- Screwdriver: `templates/ci/screwdriver/`
|
|
187
|
-
|
|
188
|
-
詳細は各テンプレートファイルを参照してください。
|