-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile_windows.yml
More file actions
259 lines (222 loc) · 8.71 KB
/
Copy pathTaskfile_windows.yml
File metadata and controls
259 lines (222 loc) · 8.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
# https://taskfile.dev
# Windows用Taskfile
version: "3"
vars:
BACKEND_DIR: backend
FRONTEND_DIR: frontend
BIN_DIR: bin
tasks:
# デフォルトタスク
default:
desc: 利用可能なタスクを一覧表示
cmds:
- task --list
silent: true
# Task ランナーのインストール
install:task:
desc: Task ランナーをインストール(管理者権限が必要)
cmds:
- powershell -Command "Invoke-WebRequest -Uri https://github.com/go-task/task/releases/latest/download/task_windows_amd64.zip -OutFile task.zip; Expand-Archive -Path task.zip -DestinationPath $env:LOCALAPPDATA\\Programs\\task -Force; Remove-Item task.zip"
- echo "⚠️ Path環境変数に %LOCALAPPDATA%\\Programs\\task を追加してください"
status:
- where task
# 初期セットアップ
setup:
desc: 環境変数と依存関係をセットアップ
cmds:
- powershell -Command "if (!(Test-Path .env)) { Copy-Item .env.example .env; Write-Host '📝 .envファイルを作成しました' } else { Write-Host '✅ .envファイルは既に存在します' }"
- powershell -Command "if (!(Test-Path frontend/.env.local)) { Copy-Item frontend/.env.sample frontend/.env.local; Write-Host '📝 フロントエンド用 .env.local を作成しました' } else { Write-Host '✅ フロントエンド用 .env.local は既に存在します' }"
- echo 🐳 Docker Composeサービスを起動中...
- docker compose up -d postgres air
- echo ⏳ サービスの起動を待機中...
- timeout /t 5 /nobreak >nul
- echo 📦 バックエンドの依存関係をインストール中...
- task: backend:deps
- echo 📦 フロントエンドの依存関係をインストール中...
- task: frontend:deps
- echo ✨ セットアップが完了しました!
# 開発環境の起動
start:
desc: 開発環境を起動(DB + バックエンド + フロントエンド)
deps: [db:start]
cmds:
- echo 🚀 開発環境を起動中...
- echo ⚠️ Windows環境では、バックエンドとフロントエンドを別々のターミナルで起動してください
- echo ""
- echo "ターミナル1 - task backend:dev"
- echo "ターミナル2 - task frontend:dev"
- echo ""
- echo "client - http://localhost:3000"
- echo "admin - http://localhost:3000/admin"
- echo ""
- echo "または Docker環境を使用 - task dev"
# 開発環境一式(Docker全サービス)
dev:
desc: 開発環境一式起動(Docker全サービス)
cmds:
- docker compose up -d
- echo ✨ 開発環境が起動しました!
- echo "📊 Adminer - http://localhost:8080"
- echo "⚡ バックエンド - http://localhost:8000 (Docker内)"
- echo "🚀 フロントエンド(client) - http://localhost:3000"
- echo "🛠️ フロントエンド(admin) - http://localhost:3000/admin"
- echo "💡 Next.js は task frontend:dev で起動してください"
- echo ""
- echo "停止するには - task stop"
# 開発環境の停止
stop:
desc: 開発環境を停止
cmds:
- echo 🛑 開発環境を停止中...
- docker compose stop
- echo ℹ️ task start で別ターミナル起動した backend/frontend は各ターミナルで停止してください
- echo ✅ 開発環境が停止されました
# 完全クリーンアップ
clean:
desc: データベースを含めて完全に削除
cmds:
- echo 🧹 クリーンアップ中...
- task: stop
- docker compose down -v
- docker system prune -f
- echo ✅ クリーンアップが完了しました
# 完全リセット
fresh:
desc: 完全に新しい状態で環境を起動
cmds:
- echo 🔄 環境を完全リセット中...
- task: clean
- task: setup
- echo ⚠️ 'task start' または 'task dev' で環境を起動してください
# ==================== データベース関連 ====================
db:start:
desc: PostgreSQLを起動
cmds:
- docker compose up -d postgres
- echo "🐘 PostgreSQL started at localhost - 5432"
db:stop:
desc: PostgreSQLを停止
cmds:
- docker compose stop postgres
- echo 🛑 PostgreSQL stopped
db:reset:
desc: データベースをリセット(全データ削除)
cmds:
- echo ⚠️ データベースをリセット中...
- docker compose down postgres -v
- docker compose up -d postgres
- echo ⏳ PostgreSQLの起動を待機中...
- timeout /t 5 /nobreak >nul
- echo 🔄 Database reset completed
db:logs:
desc: PostgreSQLのログを表示
cmds:
- docker compose logs -f postgres
# ==================== バックエンド関連 ====================
backend:deps:
desc: バックエンドの依存関係をインストール
dir: "{{.BACKEND_DIR}}"
cmds:
- go mod tidy
- go mod download
- echo ✅ バックエンドの依存関係がインストールされました
backend:dev:
desc: バックエンドを開発モードで起動
dir: "{{.BACKEND_DIR}}"
cmds:
- go run app/cmd/main.go
env:
GO_ENV: development
backend:build:
desc: バックエンドをビルド
dir: "{{.BACKEND_DIR}}"
cmds:
- powershell -Command "if (!(Test-Path ../{{.BIN_DIR}})) { New-Item -ItemType Directory -Path ../{{.BIN_DIR}} }"
- go build -o ../{{.BIN_DIR}}/backend.exe app/cmd/main.go
- echo "✅ バックエンドがビルドされました -" {{.BIN_DIR}}/backend.exe
backend:test:
desc: バックエンドのテストを実行
dir: "{{.BACKEND_DIR}}"
cmds:
- go test ./... -v
backend:smoke:
desc: バックエンドAPIスモークテストを実行
dir: "{{.BACKEND_DIR}}"
cmds:
- powershell -Command "$env:SMOKE_BASE_URL='{{default "http://localhost:8000" .SMOKE_BASE_URL}}'; go test ./... -run TestAPISmoke -v"
# backend:lint:
# desc: バックエンドのLintを実行
# dir: "{{.BACKEND_DIR}}"
# cmds:
# - powershell -Command "if (Get-Command golangci-lint -ErrorAction SilentlyContinue) { golangci-lint run } else { Write-Host '⚠️ golangci-lint がインストールされていません'; Write-Host 'インストール: https://golangci-lint.run/usage/install/' }"
# ==================== フロントエンド関連 ====================
frontend:deps:
desc: フロントエンドの依存関係をインストール
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm install
- echo ✅ フロントエンドの依存関係がインストールされました
frontend:dev:
desc: フロントエンドを開発モードで起動
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm dev
frontend:build:
desc: フロントエンドをビルド
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm build
- echo ✅ フロントエンドがビルドされました
frontend:test:
desc: フロントエンドのテストを実行
dir: "{{.FRONTEND_DIR}}"
cmds:
- powershell -Command "$scripts = (Get-Content package.json -Raw | ConvertFrom-Json).scripts; if ($scripts.PSObject.Properties.Name -contains 'test') { pnpm test } else { Write-Host 'ℹ️ frontend に test スクリプトが未定義のためスキップします' }"
frontend:lint:
desc: フロントエンドのLintを実行
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm lint
frontend:format:
desc: フロントエンドのフォーマットを実行
dir: "{{.FRONTEND_DIR}}"
cmds:
- pnpm format
# ==================== 統合タスク ====================
test:
desc: 全体のテストを実行
cmds:
- echo 🧪 全体のテストを実行中...
- task: backend:test
- task: frontend:test
- echo ✅ 全テスト完了
lint:
desc: 全体のLintを実行
cmds:
- echo 🔍 全体のLintを実行中...
- task: backend:lint
- task: frontend:lint
- echo ✅ 全Lint完了
build:
desc: 全体をビルド
cmds:
- echo 🔨 全体をビルド中...
- task: backend:build
- task: frontend:build
- echo ✅ 全ビルド完了
deploy:prep:
desc: デプロイ準備(ビルド + テスト)
cmds:
- echo 📦 デプロイ準備中...
- task: build
- task: test
- echo ✅ デプロイ準備完了
# ==================== ログ関連 ====================
logs:
desc: 全サービスのログを表示
cmds:
- docker compose logs -f
logs:backend:
desc: バックエンドのログを表示
cmds:
- docker compose logs -f air