project-auto-wizard 0.9.0 โ†’ 0.10.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.
@@ -19,9 +19,9 @@
19
19
  # ===================================================================
20
20
  #
21
21
  # ๐Ÿš€ ์‚ฌ์šฉ๋ฒ•:
22
- # @suh-lab server build - Preview ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ
23
- # @suh-lab server destroy - Preview ํ™˜๊ฒฝ ์‚ญ์ œ
24
- # @suh-lab server status - ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ
22
+ # /wizard server build - Preview ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ
23
+ # /wizard server destroy - Preview ํ™˜๊ฒฝ ์‚ญ์ œ
24
+ # /wizard server status - ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ
25
25
  #
26
26
  # ๐Ÿ“Š ๋ฆฌ์†Œ์Šค ๋„ค์ด๋ฐ:
27
27
  # - ์ปจํ…Œ์ด๋„ˆ: {PROJECT_NAME}-pr-{๋ฒˆํ˜ธ}
@@ -64,7 +64,7 @@ env:
64
64
 
65
65
  # Issue Helper ๋Œ“๊ธ€ ๋งˆ์ปค (ํ”„๋กœ์ ํŠธ๋ณ„ ์ˆ˜์ • ํ•„์š”)
66
66
  # Issue ๋Œ“๊ธ€์—์„œ ๋ธŒ๋žœ์น˜๋ช…์„ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ
67
- ISSUE_HELPER_MARKER: 'Guide by SUH-LAB'
67
+ ISSUE_HELPER_MARKER: '<!-- project-auto-wizard issue helper -->'
68
68
 
69
69
  # Health Check ์„ค์ • (ํ”„๋กœ์ ํŠธ๋ณ„ ์ˆ˜์ • ํ•„์š”)
70
70
  # - HEALTH_CHECK_PATH: HTTP Health Check ๊ฒฝ๋กœ (๋นˆ๊ฐ’์ด๋ฉด HTTP ์ฒดํฌ ๊ฑด๋„ˆ๋œ€)
@@ -114,7 +114,7 @@ jobs:
114
114
  is_custom_branch: ${{ steps.parse.outputs.is_custom_branch }}
115
115
  steps:
116
116
  - name: ๋Œ“๊ธ€์— ๐Ÿ‘€ ๋ฆฌ์•ก์…˜ ์ถ”๊ฐ€
117
- if: contains(github.event.comment.body, '@suh-lab') && contains(github.event.comment.body, 'server')
117
+ if: contains(github.event.comment.body, '/wizard') && contains(github.event.comment.body, 'server')
118
118
  uses: actions/github-script@v9
119
119
  with:
120
120
  github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -142,8 +142,8 @@ jobs:
142
142
  fi
143
143
 
144
144
  # ๋ช…๋ น์–ด ํŒŒ์‹ฑ (๋ธŒ๋žœ์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์›)
145
- # ํ˜•์‹: @suh-lab server <command> [๋ธŒ๋žœ์น˜๋ช…]
146
- if [[ "$COMMENT" =~ @suh-lab[[:space:]]+server[[:space:]]+build([[:space:]]+([^[:space:]]+))? ]]; then
145
+ # ํ˜•์‹: /wizard server <command> [๋ธŒ๋žœ์น˜๋ช…]
146
+ if [[ "$COMMENT" =~ /wizard[[:space:]]+server[[:space:]]+build([[:space:]]+([^[:space:]]+))? ]]; then
147
147
  echo "command=build" >> $GITHUB_OUTPUT
148
148
  echo "is_valid=true" >> $GITHUB_OUTPUT
149
149
  if [[ -n "${BASH_REMATCH[2]}" ]]; then
@@ -154,7 +154,7 @@ jobs:
154
154
  echo "is_custom_branch=false" >> $GITHUB_OUTPUT
155
155
  echo "โœ… ๋ช…๋ น์–ด ๊ฐ์ง€: build"
156
156
  fi
157
- elif [[ "$COMMENT" =~ @suh-lab[[:space:]]+server[[:space:]]+destroy([[:space:]]+([^[:space:]]+))? ]]; then
157
+ elif [[ "$COMMENT" =~ /wizard[[:space:]]+server[[:space:]]+destroy([[:space:]]+([^[:space:]]+))? ]]; then
158
158
  echo "command=destroy" >> $GITHUB_OUTPUT
159
159
  echo "is_valid=true" >> $GITHUB_OUTPUT
160
160
  if [[ -n "${BASH_REMATCH[2]}" ]]; then
@@ -165,7 +165,7 @@ jobs:
165
165
  echo "is_custom_branch=false" >> $GITHUB_OUTPUT
166
166
  echo "โœ… ๋ช…๋ น์–ด ๊ฐ์ง€: destroy"
167
167
  fi
168
- elif [[ "$COMMENT" =~ @suh-lab[[:space:]]+server[[:space:]]+status([[:space:]]+([^[:space:]]+))? ]]; then
168
+ elif [[ "$COMMENT" =~ /wizard[[:space:]]+server[[:space:]]+status([[:space:]]+([^[:space:]]+))? ]]; then
169
169
  echo "command=status" >> $GITHUB_OUTPUT
170
170
  echo "is_valid=true" >> $GITHUB_OUTPUT
171
171
  if [[ -n "${BASH_REMATCH[2]}" ]]; then
@@ -178,7 +178,7 @@ jobs:
178
178
  fi
179
179
  else
180
180
  echo "is_valid=false" >> $GITHUB_OUTPUT
181
- echo "โ„น๏ธ @suh-lab server ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹˜"
181
+ echo "โ„น๏ธ /wizard server ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹˜"
182
182
  fi
183
183
 
184
184
  # -----------------------------------------------------------------
@@ -518,17 +518,17 @@ jobs:
518
518
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
519
519
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
520
520
  '|--------|------|',
521
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
522
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
523
- '| `@suh-lab server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
521
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
522
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
523
+ '| `/wizard server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
524
524
  '',
525
525
  '<details>',
526
526
  '<summary>๐Ÿ”ง ๊ณ ๊ธ‰ ๋ช…๋ น์–ด (๋‹ค๋ฅธ Issue/PR์—์„œ ์ œ์–ด)</summary>',
527
527
  '',
528
528
  '```',
529
- `@suh-lab server build ${branchName}`,
530
- `@suh-lab server destroy ${branchName}`,
531
- `@suh-lab server status ${branchName}`,
529
+ `/wizard server build ${branchName}`,
530
+ `/wizard server destroy ${branchName}`,
531
+ `/wizard server status ${branchName}`,
532
532
  '```',
533
533
  '</details>',
534
534
  '',
@@ -593,7 +593,7 @@ jobs:
593
593
  '',
594
594
  '### ๐Ÿ’ก ๋‹ค์Œ ๋‹จ๊ณ„',
595
595
  '1. ์œ„ ๋งํฌ์—์„œ ๋นŒ๋“œ/๋ฐฐํฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”',
596
- '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `@suh-lab server build`',
596
+ '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `/wizard server build`',
597
597
  '',
598
598
  '---',
599
599
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ PR Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -1114,17 +1114,17 @@ jobs:
1114
1114
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
1115
1115
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
1116
1116
  '|--------|------|',
1117
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1118
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1119
- '| `@suh-lab server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
1117
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1118
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1119
+ '| `/wizard server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
1120
1120
  '',
1121
1121
  '<details>',
1122
1122
  '<summary>๐Ÿ”ง ๊ณ ๊ธ‰ ๋ช…๋ น์–ด (๋‹ค๋ฅธ Issue/PR์—์„œ ์ œ์–ด)</summary>',
1123
1123
  '',
1124
1124
  '```',
1125
- `@suh-lab server build ${branchName}`,
1126
- `@suh-lab server destroy ${branchName}`,
1127
- `@suh-lab server status ${branchName}`,
1125
+ `/wizard server build ${branchName}`,
1126
+ `/wizard server destroy ${branchName}`,
1127
+ `/wizard server status ${branchName}`,
1128
1128
  '```',
1129
1129
  '</details>',
1130
1130
  '',
@@ -1187,7 +1187,7 @@ jobs:
1187
1187
  '',
1188
1188
  '### ๐Ÿ’ก ๋‹ค์Œ ๋‹จ๊ณ„',
1189
1189
  '1. ์œ„ ๋งํฌ์—์„œ ๋นŒ๋“œ/๋ฐฐํฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”',
1190
- '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `@suh-lab server build`',
1190
+ '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `/wizard server build`',
1191
1191
  '',
1192
1192
  '---',
1193
1193
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Issue Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -1218,7 +1218,7 @@ jobs:
1218
1218
  if: |
1219
1219
  (github.event_name == 'pull_request' && github.event.action == 'closed') ||
1220
1220
  (github.event_name == 'issues' && github.event.action == 'closed') ||
1221
- (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@suh-lab') && contains(github.event.comment.body, 'server destroy'))
1221
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '/wizard') && contains(github.event.comment.body, 'server destroy'))
1222
1222
  runs-on: ubuntu-latest
1223
1223
  steps:
1224
1224
  - name: PR/Issue ๋ฒˆํ˜ธ ๊ฐ€์ ธ์˜ค๊ธฐ
@@ -1301,7 +1301,7 @@ jobs:
1301
1301
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${projectName}-pr-${number}\` |`,
1302
1302
  '| **์ƒํƒœ** | ์‚ญ์ œ๋จ |',
1303
1303
  '',
1304
- '๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: `@suh-lab server build`',
1304
+ '๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: `/wizard server build`',
1305
1305
  '',
1306
1306
  '---',
1307
1307
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ PR/Issue Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -1400,8 +1400,8 @@ jobs:
1400
1400
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
1401
1401
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
1402
1402
  '|--------|------|',
1403
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1404
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1403
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1404
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1405
1405
  '',
1406
1406
  '---',
1407
1407
  `*๐Ÿค– ์ด ๋Œ“๊ธ€์€ ${contextType} Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*`
@@ -1415,7 +1415,7 @@ jobs:
1415
1415
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${projectName}-pr-${number}\` |`,
1416
1416
  '| **์ƒํƒœ** | ๐Ÿ”ด Not Found |',
1417
1417
  '',
1418
- '๋ฐฐํฌํ•˜๋ ค๋ฉด: `@suh-lab server build`',
1418
+ '๋ฐฐํฌํ•˜๋ ค๋ฉด: `/wizard server build`',
1419
1419
  '',
1420
1420
  '---',
1421
1421
  `*๐Ÿค– ์ด ๋Œ“๊ธ€์€ ${contextType} Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*`
@@ -1849,17 +1849,17 @@ jobs:
1849
1849
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
1850
1850
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
1851
1851
  '|--------|------|',
1852
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1853
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1854
- '| `@suh-lab server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
1852
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1853
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1854
+ '| `/wizard server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
1855
1855
  '',
1856
1856
  '<details>',
1857
1857
  '<summary>๐Ÿ”ง ๊ณ ๊ธ‰ ๋ช…๋ น์–ด (๋‹ค๋ฅธ Issue/PR์—์„œ ์ œ์–ด)</summary>',
1858
1858
  '',
1859
1859
  '```',
1860
- `@suh-lab server build ${branchName}`,
1861
- `@suh-lab server destroy ${branchName}`,
1862
- `@suh-lab server status ${branchName}`,
1860
+ `/wizard server build ${branchName}`,
1861
+ `/wizard server destroy ${branchName}`,
1862
+ `/wizard server status ${branchName}`,
1863
1863
  '```',
1864
1864
  '</details>',
1865
1865
  '',
@@ -1920,7 +1920,7 @@ jobs:
1920
1920
  '',
1921
1921
  '### ๐Ÿ’ก ๋‹ค์Œ ๋‹จ๊ณ„',
1922
1922
  '1. ์œ„ ๋งํฌ์—์„œ ๋นŒ๋“œ/๋ฐฐํฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”',
1923
- `2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: \`@suh-lab server build ${branchName}\``,
1923
+ `2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: \`/wizard server build ${branchName}\``,
1924
1924
  '',
1925
1925
  '---',
1926
1926
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Custom Branch Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -2050,7 +2050,7 @@ jobs:
2050
2050
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${containerName}\` |`,
2051
2051
  '| **์ƒํƒœ** | ์‚ญ์ œ๋จ |',
2052
2052
  '',
2053
- `๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: \`@suh-lab server build ${branchName}\``,
2053
+ `๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: \`/wizard server build ${branchName}\``,
2054
2054
  '',
2055
2055
  '---',
2056
2056
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Custom Branch Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -2161,8 +2161,8 @@ jobs:
2161
2161
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
2162
2162
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
2163
2163
  '|--------|------|',
2164
- `| \`@suh-lab server build ${branchName}\` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |`,
2165
- `| \`@suh-lab server destroy ${branchName}\` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |`,
2164
+ `| \`/wizard server build ${branchName}\` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |`,
2165
+ `| \`/wizard server destroy ${branchName}\` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |`,
2166
2166
  '',
2167
2167
  '---',
2168
2168
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Custom Branch Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -2177,7 +2177,7 @@ jobs:
2177
2177
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${containerName}\` |`,
2178
2178
  '| **์ƒํƒœ** | ๐Ÿ”ด Not Found |',
2179
2179
  '',
2180
- `๋ฐฐํฌํ•˜๋ ค๋ฉด: \`@suh-lab server build ${branchName}\``,
2180
+ `๋ฐฐํฌํ•˜๋ ค๋ฉด: \`/wizard server build ${branchName}\``,
2181
2181
  '',
2182
2182
  '---',
2183
2183
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Custom Branch Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -15,9 +15,9 @@
15
15
  # ===================================================================
16
16
  #
17
17
  # ๐Ÿš€ ์‚ฌ์šฉ๋ฒ•:
18
- # @suh-lab server build - PR/Issue ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ
19
- # @suh-lab server destroy - Preview ํ™˜๊ฒฝ ์‚ญ์ œ
20
- # @suh-lab server status - ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ
18
+ # /wizard server build - PR/Issue ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ
19
+ # /wizard server destroy - Preview ํ™˜๊ฒฝ ์‚ญ์ œ
20
+ # /wizard server status - ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ
21
21
  #
22
22
  # ๐Ÿ“Š ๋ฆฌ์†Œ์Šค ๋„ค์ด๋ฐ ๊ทœ์น™:
23
23
  # - ์ปจํ…Œ์ด๋„ˆ: {PROJECT_NAME}-pr-{PR๋ฒˆํ˜ธ}
@@ -65,7 +65,7 @@ env:
65
65
 
66
66
  # Issue Helper ๋Œ“๊ธ€ ๋งˆ์ปค (ํ”„๋กœ์ ํŠธ๋ณ„ ์ˆ˜์ • ํ•„์š”)
67
67
  # Issue ๋Œ“๊ธ€์—์„œ ๋ธŒ๋žœ์น˜๋ช…์„ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ
68
- ISSUE_HELPER_MARKER: 'Guide by SUH-LAB'
68
+ ISSUE_HELPER_MARKER: '<!-- project-auto-wizard issue helper -->'
69
69
 
70
70
  # Health Check ์„ค์ • (ํ”„๋กœ์ ํŠธ๋ณ„ ์ˆ˜์ • ํ•„์š”)
71
71
  # - HEALTH_CHECK_PATH: HTTP Health Check ๊ฒฝ๋กœ (๋นˆ๊ฐ’์ด๋ฉด HTTP ์ฒดํฌ ๊ฑด๋„ˆ๋œ€)
@@ -115,7 +115,7 @@ jobs:
115
115
  is_custom_branch: ${{ steps.parse.outputs.is_custom_branch }}
116
116
  steps:
117
117
  - name: ๋Œ“๊ธ€์— ๐Ÿ‘€ ๋ฆฌ์•ก์…˜ ์ถ”๊ฐ€
118
- if: contains(github.event.comment.body, '@suh-lab') && contains(github.event.comment.body, 'server')
118
+ if: contains(github.event.comment.body, '/wizard') && contains(github.event.comment.body, 'server')
119
119
  uses: actions/github-script@v9
120
120
  with:
121
121
  github-token: ${{ secrets.GITHUB_TOKEN }}
@@ -143,8 +143,8 @@ jobs:
143
143
  fi
144
144
 
145
145
  # ๋ช…๋ น์–ด ํŒŒ์‹ฑ (๋ธŒ๋žœ์น˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ง€์›)
146
- # ํ˜•์‹: @suh-lab server <command> [๋ธŒ๋žœ์น˜๋ช…]
147
- if [[ "$COMMENT" =~ @suh-lab[[:space:]]+server[[:space:]]+build([[:space:]]+([^[:space:]]+))? ]]; then
146
+ # ํ˜•์‹: /wizard server <command> [๋ธŒ๋žœ์น˜๋ช…]
147
+ if [[ "$COMMENT" =~ /wizard[[:space:]]+server[[:space:]]+build([[:space:]]+([^[:space:]]+))? ]]; then
148
148
  echo "command=build" >> $GITHUB_OUTPUT
149
149
  echo "is_valid=true" >> $GITHUB_OUTPUT
150
150
  if [[ -n "${BASH_REMATCH[2]}" ]]; then
@@ -155,7 +155,7 @@ jobs:
155
155
  echo "is_custom_branch=false" >> $GITHUB_OUTPUT
156
156
  echo "โœ… ๋ช…๋ น์–ด ๊ฐ์ง€: build"
157
157
  fi
158
- elif [[ "$COMMENT" =~ @suh-lab[[:space:]]+server[[:space:]]+destroy([[:space:]]+([^[:space:]]+))? ]]; then
158
+ elif [[ "$COMMENT" =~ /wizard[[:space:]]+server[[:space:]]+destroy([[:space:]]+([^[:space:]]+))? ]]; then
159
159
  echo "command=destroy" >> $GITHUB_OUTPUT
160
160
  echo "is_valid=true" >> $GITHUB_OUTPUT
161
161
  if [[ -n "${BASH_REMATCH[2]}" ]]; then
@@ -166,7 +166,7 @@ jobs:
166
166
  echo "is_custom_branch=false" >> $GITHUB_OUTPUT
167
167
  echo "โœ… ๋ช…๋ น์–ด ๊ฐ์ง€: destroy"
168
168
  fi
169
- elif [[ "$COMMENT" =~ @suh-lab[[:space:]]+server[[:space:]]+status([[:space:]]+([^[:space:]]+))? ]]; then
169
+ elif [[ "$COMMENT" =~ /wizard[[:space:]]+server[[:space:]]+status([[:space:]]+([^[:space:]]+))? ]]; then
170
170
  echo "command=status" >> $GITHUB_OUTPUT
171
171
  echo "is_valid=true" >> $GITHUB_OUTPUT
172
172
  if [[ -n "${BASH_REMATCH[2]}" ]]; then
@@ -179,7 +179,7 @@ jobs:
179
179
  fi
180
180
  else
181
181
  echo "is_valid=false" >> $GITHUB_OUTPUT
182
- echo "โ„น๏ธ @suh-lab server ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹˜"
182
+ echo "โ„น๏ธ /wizard server ๋ช…๋ น์–ด๊ฐ€ ์•„๋‹˜"
183
183
  fi
184
184
 
185
185
  # -----------------------------------------------------------------
@@ -292,13 +292,13 @@ jobs:
292
292
  # env:
293
293
  # VERTEX_SA_KEY: ${{ secrets.VERTEX_SA_KEY }}
294
294
  # run: |
295
- # echo "$VERTEX_SA_KEY" | sed 's/\\n/\n/g' > ./Suh-Web/src/main/resources/vertex-ai-key.json
295
+ # echo "$VERTEX_SA_KEY" | sed 's/\\n/\n/g' > ./<๋ชจ๋“ˆ๋ช…>/src/main/resources/vertex-ai-key.json
296
296
 
297
297
  # - name: "[์„ ํƒ] Firebase Admin SDK ์ƒ์„ฑ"
298
298
  # env:
299
299
  # FIREBASE_KEY_JSON: ${{ secrets.FIREBASE_KEY_JSON }}
300
300
  # run: |
301
- # echo "$FIREBASE_KEY_JSON" | sed 's/\\n/\n/g' > ./Suh-Web/src/main/resources/firebase-admin-sdk.json
301
+ # echo "$FIREBASE_KEY_JSON" | sed 's/\\n/\n/g' > ./<๋ชจ๋“ˆ๋ช…>/src/main/resources/firebase-admin-sdk.json
302
302
 
303
303
  # =================================================================
304
304
  # โš ๏ธ [์˜์—ญ 2 ๋] ํ”„๋กœ์ ํŠธ๋ณ„ Secret ํŒŒ์ผ ์ƒ์„ฑ ๋
@@ -606,17 +606,17 @@ jobs:
606
606
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
607
607
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
608
608
  '|--------|------|',
609
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
610
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
611
- '| `@suh-lab server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
609
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
610
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
611
+ '| `/wizard server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
612
612
  '',
613
613
  '<details>',
614
614
  '<summary>๐Ÿ”ง ๊ณ ๊ธ‰ ๋ช…๋ น์–ด (๋‹ค๋ฅธ Issue/PR์—์„œ ์ œ์–ด)</summary>',
615
615
  '',
616
616
  '```',
617
- `@suh-lab server build ${branchName}`,
618
- `@suh-lab server destroy ${branchName}`,
619
- `@suh-lab server status ${branchName}`,
617
+ `/wizard server build ${branchName}`,
618
+ `/wizard server destroy ${branchName}`,
619
+ `/wizard server status ${branchName}`,
620
620
  '```',
621
621
  '</details>',
622
622
  '',
@@ -693,7 +693,7 @@ jobs:
693
693
  '',
694
694
  '### ๐Ÿ’ก ๋‹ค์Œ ๋‹จ๊ณ„',
695
695
  '1. ์œ„ ๋งํฌ์—์„œ ๋นŒ๋“œ/๋ฐฐํฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”',
696
- '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `@suh-lab server build`',
696
+ '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `/wizard server build`',
697
697
  '',
698
698
  '---',
699
699
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ PR Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -1278,17 +1278,17 @@ jobs:
1278
1278
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
1279
1279
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
1280
1280
  '|--------|------|',
1281
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1282
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1283
- '| `@suh-lab server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
1281
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1282
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1283
+ '| `/wizard server status` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |',
1284
1284
  '',
1285
1285
  '<details>',
1286
1286
  '<summary>๐Ÿ”ง ๊ณ ๊ธ‰ ๋ช…๋ น์–ด (๋‹ค๋ฅธ Issue/PR์—์„œ ์ œ์–ด)</summary>',
1287
1287
  '',
1288
1288
  '```',
1289
- `@suh-lab server build ${branchName}`,
1290
- `@suh-lab server destroy ${branchName}`,
1291
- `@suh-lab server status ${branchName}`,
1289
+ `/wizard server build ${branchName}`,
1290
+ `/wizard server destroy ${branchName}`,
1291
+ `/wizard server status ${branchName}`,
1292
1292
  '```',
1293
1293
  '</details>',
1294
1294
  '',
@@ -1362,7 +1362,7 @@ jobs:
1362
1362
  '',
1363
1363
  '### ๐Ÿ’ก ๋‹ค์Œ ๋‹จ๊ณ„',
1364
1364
  '1. ์œ„ ๋งํฌ์—์„œ ๋นŒ๋“œ/๋ฐฐํฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”',
1365
- '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `@suh-lab server build`',
1365
+ '2. ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•œ ํ›„ ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”: `/wizard server build`',
1366
1366
  '',
1367
1367
  '---',
1368
1368
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Issue Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -1393,7 +1393,7 @@ jobs:
1393
1393
  if: |
1394
1394
  (github.event_name == 'pull_request' && github.event.action == 'closed') ||
1395
1395
  (github.event_name == 'issues' && github.event.action == 'closed') ||
1396
- (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@suh-lab') && contains(github.event.comment.body, 'server destroy'))
1396
+ (github.event_name == 'issue_comment' && contains(github.event.comment.body, '/wizard') && contains(github.event.comment.body, 'server destroy'))
1397
1397
  runs-on: ubuntu-latest
1398
1398
  steps:
1399
1399
  - name: PR/Issue ๋ฒˆํ˜ธ ๊ฐ€์ ธ์˜ค๊ธฐ
@@ -1474,7 +1474,7 @@ jobs:
1474
1474
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${projectName}-pr-${number}\` |`,
1475
1475
  '| **์ƒํƒœ** | ์‚ญ์ œ๋จ |',
1476
1476
  '',
1477
- '๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: `@suh-lab server build`',
1477
+ '๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: `/wizard server build`',
1478
1478
  '',
1479
1479
  '---',
1480
1480
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ PR/Issue Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -1573,8 +1573,8 @@ jobs:
1573
1573
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
1574
1574
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
1575
1575
  '|--------|------|',
1576
- '| `@suh-lab server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1577
- '| `@suh-lab server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1576
+ '| `/wizard server build` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |',
1577
+ '| `/wizard server destroy` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |',
1578
1578
  '',
1579
1579
  '---',
1580
1580
  `*๐Ÿค– ์ด ๋Œ“๊ธ€์€ ${contextType} Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*`
@@ -1588,7 +1588,7 @@ jobs:
1588
1588
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${projectName}-pr-${number}\` |`,
1589
1589
  '| **์ƒํƒœ** | ๐Ÿ”ด Not Found |',
1590
1590
  '',
1591
- '๋ฐฐํฌํ•˜๋ ค๋ฉด: `@suh-lab server build`',
1591
+ '๋ฐฐํฌํ•˜๋ ค๋ฉด: `/wizard server build`',
1592
1592
  '',
1593
1593
  '---',
1594
1594
  `*๐Ÿค– ์ด ๋Œ“๊ธ€์€ ${contextType} Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*`
@@ -1605,7 +1605,7 @@ jobs:
1605
1605
  # ============================================================
1606
1606
  # Custom Branch Preview Jobs
1607
1607
  # ํŠน์ • ๋ธŒ๋žœ์น˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋นŒ๋“œ/์‚ญ์ œ/์ƒํƒœ ํ™•์ธํ•˜๋Š” ๊ธฐ๋Šฅ
1608
- # ๋ช…๋ น์–ด: @suh-lab server build <๋ธŒ๋žœ์น˜๋ช…>
1608
+ # ๋ช…๋ น์–ด: /wizard server build <๋ธŒ๋žœ์น˜๋ช…>
1609
1609
  # ============================================================
1610
1610
 
1611
1611
  build-preview-custom-branch:
@@ -1984,9 +1984,9 @@ jobs:
1984
1984
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
1985
1985
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
1986
1986
  '|--------|------|',
1987
- `| \`@suh-lab server build ${branchName}\` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |`,
1988
- `| \`@suh-lab server destroy ${branchName}\` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |`,
1989
- `| \`@suh-lab server status ${branchName}\` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |`,
1987
+ `| \`/wizard server build ${branchName}\` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |`,
1988
+ `| \`/wizard server destroy ${branchName}\` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |`,
1989
+ `| \`/wizard server status ${branchName}\` | ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ |`,
1990
1990
  '',
1991
1991
  '---',
1992
1992
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -2154,7 +2154,7 @@ jobs:
2154
2154
  `| **๋ธŒ๋žœ์น˜** | \`${branchName}\` |`,
2155
2155
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${containerName}\` |`,
2156
2156
  '',
2157
- `๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: \`@suh-lab server build ${branchName}\``,
2157
+ `๋‹ค์‹œ ๋ฐฐํฌํ•˜๋ ค๋ฉด: \`/wizard server build ${branchName}\``,
2158
2158
  '',
2159
2159
  '---',
2160
2160
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -2247,8 +2247,8 @@ jobs:
2247
2247
  '### ๐Ÿ“‹ ๋ช…๋ น์–ด',
2248
2248
  '| ๋ช…๋ น์–ด | ์„ค๋ช… |',
2249
2249
  '|--------|------|',
2250
- `| \`@suh-lab server build ${branchName}\` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |`,
2251
- `| \`@suh-lab server destroy ${branchName}\` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |`,
2250
+ `| \`/wizard server build ${branchName}\` | ์ตœ์‹  ์ปค๋ฐ‹์œผ๋กœ ์žฌ๋ฐฐํฌ |`,
2251
+ `| \`/wizard server destroy ${branchName}\` | Preview ํ™˜๊ฒฝ ์‚ญ์ œ |`,
2252
2252
  '',
2253
2253
  '---',
2254
2254
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
@@ -2263,7 +2263,7 @@ jobs:
2263
2263
  `| **์ปจํ…Œ์ด๋„ˆ** | \`${containerName}\` |`,
2264
2264
  '| **์ƒํƒœ** | ๐Ÿ”ด Not Found |',
2265
2265
  '',
2266
- `๋ฐฐํฌํ•˜๋ ค๋ฉด: \`@suh-lab server build ${branchName}\``,
2266
+ `๋ฐฐํฌํ•˜๋ ค๋ฉด: \`/wizard server build ${branchName}\``,
2267
2267
  '',
2268
2268
  '---',
2269
2269
  '*๐Ÿค– ์ด ๋Œ“๊ธ€์€ Preview ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ž๋™ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.*'
package/src/cli/args.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // CLI ์ธ์ž ํŒŒ์‹ฑ (.sh top-level while-case ๋“ฑ๊ฐ€) โ€” template_integrator.sh 842~920.
2
2
  import { VALID_TYPES, VALID_MODES } from "../context.js";
3
- import { DEPLOY_STYLES, isDeployStyle } from "../core/deploy-style.js";
3
+ import { DEPLOY_STYLES, isDeployStyle, NO_DEPLOY_STYLE } from "../core/deploy-style.js";
4
4
 
5
5
  // argv(process.argv.slice(2)) โ†’ ํŒŒ์‹ฑ ๊ฒฐ๊ณผ. ์˜ค๋ฅ˜ ์‹œ throw(ํ˜ธ์ถœ๋ถ€์—์„œ exit 1).
6
6
  export function parseArgs(argv) {
@@ -80,7 +80,7 @@ export function parseArgs(argv) {
80
80
  case "--deploy-style": {
81
81
  const v = args.shift();
82
82
  if (!isDeployStyle(v)) {
83
- throw new CliError(`--deploy-style ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค: ${v ?? "(์—†์Œ)"} (${DEPLOY_STYLES.map((s) => s.value).join(" | ")})`);
83
+ throw new CliError(`--deploy-style ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค: ${v ?? "(์—†์Œ)"} (${[...DEPLOY_STYLES.map((s) => s.value), NO_DEPLOY_STYLE].join(" | ")})`);
84
84
  }
85
85
  result.deployStyle = v; break;
86
86
  }
package/src/cli/help.js CHANGED
@@ -16,7 +16,7 @@ export const HELP_TEXT = `project-auto-wizard โ€” One command DevOps: GitHub-nat
16
16
  --paths "t=p,..." ํƒ€์ž…๋ณ„ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ (๋ชจ๋…ธ๋ ˆํฌ). ์˜ˆ: flutter=app,react=client
17
17
  --main-branch B ๋ฆด๋ฆฌ์Šค ๋ธŒ๋žœ์น˜ (๊ธฐ๋ณธ: ๊ฐ์ง€๋œ default branch)
18
18
  --develop-branch B ๊ฐœ๋ฐœ ๋ธŒ๋žœ์น˜ (๊ธฐ๋ณธ: develop). ๋ฆด๋ฆฌ์Šค ๋ธŒ๋žœ์น˜์™€ ๊ฐ™์œผ๋ฉด trunk-based ๋ชจ๋“œ
19
- --deploy-style STYLE ์„œ๋ฒ„ ๋ฐฐํฌ ๋ฐฉ์‹: simple | nginx | traefik (๊ธฐ๋ณธ: simple)
19
+ --deploy-style STYLE ์„œ๋ฒ„ ๋ฐฐํฌ ๋ฐฉ์‹: simple | nginx | traefik | none (๊ธฐ๋ณธ: simple)
20
20
  --nexus / --no-nexus ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ publish ์›Œํฌํ”Œ๋กœ์šฐ ํฌํ•จ/์ œ์™ธ (Nexus + GitHub Packages)
21
21
  --secret-backup / --no-secret-backup Secret ๋ฐฑ์—… ์›Œํฌํ”Œ๋กœ์šฐ ํฌํ•จ/์ œ์™ธ
22
22
  --semver-auto / --no-semver-auto ์ปค๋ฐ‹ ํƒ€์ž… ๊ธฐ๋ฐ˜ ์ž๋™ major/minor/patch ์Šน๊ฒฉ (๊ธฐ๋ณธ: ์‚ฌ์šฉํ•จ)
@@ -3,7 +3,7 @@
3
3
  // ๋Œ€ํ™”ํ˜• 3์ง€์„ (๊ธฐ์กด ํŒŒ์ผ ์ถฉ๋Œ)์€ copyWorkflowsInteractive(async)๊ฐ€ ๊ฒฐ์ • Map์„ ๋งŒ๋“ค์–ด
4
4
  // ๋™๊ธฐ ์—”์ง„(copyWorkflows)์— hooks.decisions๋กœ ์ „๋‹ฌํ•œ๋‹ค โ€” ๊ธฐ์กด ์‹œ๊ทธ๋‹ˆ์ฒ˜ยทforce ๋™์ž‘ ๋ฌด๋ณ€๊ฒฝ.
5
5
  import { join, basename } from "node:path";
6
- import { deployFilter, isDeployWorkflow, activateDeployTrigger, DEFAULT_DEPLOY_STYLE } from "../deploy-style.js";
6
+ import { deployFilter, isDeployWorkflow, activateDeployTrigger, DEFAULT_DEPLOY_STYLE, NO_DEPLOY_STYLE } from "../deploy-style.js";
7
7
  import { existsSync, readFileSync, writeFileSync, renameSync } from "node:fs";
8
8
  import { PATHS, PAYLOAD } from "../paths.js";
9
9
  import { exists, writeText, listYamlFiles } from "../fsutil.js";
@@ -296,9 +296,13 @@ export function surveyWorkflows(context, payloadRoot, targetRoot = ".") {
296
296
  for (const type of types) {
297
297
  const envOpts = { type, projectPath: paths.get(type) || ".", repoName, resolvers };
298
298
  const typeDir = join(projectTypesDir, type);
299
- if (exists(typeDir)) collect(typeDir, envOpts, type);
299
+ if (exists(typeDir)) {
300
+ collect(typeDir, envOpts, type, () => false, deployStyle === NO_DEPLOY_STYLE ? keepDeploy : null);
301
+ }
300
302
  const serverDeployDir = join(typeDir, "server-deploy");
301
- if (exists(serverDeployDir) && !includeNexus) collect(serverDeployDir, envOpts, type, () => false, keepDeploy);
303
+ if (exists(serverDeployDir) && !includeNexus && deployStyle !== NO_DEPLOY_STYLE) {
304
+ collect(serverDeployDir, envOpts, type, () => false, keepDeploy);
305
+ }
302
306
  }
303
307
  return { conflicts, removed };
304
308
  }
@@ -333,17 +337,20 @@ function copyWorkflowsForType(type, projectTypesDir, workflowsDir, ctx, counters
333
337
  // ์น˜ํ™˜์„ ๋‹ค์‹œ ๊ฑธ๋ฉด ์‚ฌ์šฉ์ž ์ˆ˜์ •๋ณธ์„ ๋ฎ์–ด์“ฐ๊ฒŒ ๋œ๋‹ค.
334
338
  const untouched = [];
335
339
 
336
- // ํƒ€์ž…๋ณ„ ์›Œํฌํ”Œ๋กœ์šฐ (์งํ•˜์œ„)
340
+ // ํƒ€์ž…๋ณ„ ์›Œํฌํ”Œ๋กœ์šฐ (์งํ•˜์œ„). go/python์ฒ˜๋Ÿผ CD ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ server-deploy ์—†์ด ํƒ€์ž… ๋ฃจํŠธ์—
341
+ // ๋ฐ”๋กœ ์žˆ๋Š” ํƒ€์ž…๋„ ์žˆ๋‹ค โ€” "๋ฐฐํฌ ์•ˆ ํ•จ"์ผ ๋•Œ๋Š” ํƒ€์ž… ๋ฃจํŠธ์—์„œ๋„ CD ํŒŒ์ผ(SIMPLE-CICD ๋“ฑ)์„
342
+ // ๊ฑธ๋Ÿฌ์•ผ ํ•œ๋‹ค. simple/nginx/traefik์€ ์˜ค๋Š˜๊ณผ ๋™์ผํ•˜๊ฒŒ ํ•„ํ„ฐ ์—†์ด ์ „๋ถ€ ๋ณต์‚ฌํ•œ๋‹ค.
337
343
  if (exists(typeDir)) {
338
- const c = processDir(typeDir, workflowsDir, envOpts, dirCtx, counters);
344
+ const typeRootFilter = deployStyle === NO_DEPLOY_STYLE ? keepDeploy : undefined;
345
+ const c = processDir(typeDir, workflowsDir, envOpts, dirCtx, counters, typeRootFilter);
339
346
  untouched.push(...c.unchanged, ...c.localOnly);
340
347
  }
341
348
 
342
349
  // server-deploy
343
350
  const serverDeployDir = join(typeDir, "server-deploy");
344
351
  if (exists(serverDeployDir)) {
345
- if (includeNexus) {
346
- // Nexus ํ”„๋กœ์ ํŠธ โ†’ ํด๋”์งธ ์ œ์™ธ (๋ณต์‚ฌ ์•ˆ ํ•จ)
352
+ if (includeNexus || deployStyle === NO_DEPLOY_STYLE) {
353
+ // Nexus ํ”„๋กœ์ ํŠธ ๋˜๋Š” "๋ฐฐํฌ ์•ˆ ํ•จ" โ†’ ํด๋”์งธ ์ œ์™ธ (๋ณต์‚ฌ ์•ˆ ํ•จ)
347
354
  } else {
348
355
  const c = processDir(serverDeployDir, workflowsDir, envOpts, dirCtx, counters, keepDeploy);
349
356
  untouched.push(...c.unchanged, ...c.localOnly);
@@ -363,9 +370,11 @@ function copyWorkflowsForType(type, projectTypesDir, workflowsDir, ctx, counters
363
370
  // env ์น˜ํ™˜ โ€” ์ด ํƒ€์ž…์˜ ์›๋ณธ ๋””๋ ‰ํ† ๋ฆฌ๋“ค์—์„œ ๋ณต์‚ฌ๋ผ ์กด์žฌํ•˜๊ณ , ์†๋Œ€์ง€ ์•Š๊ธฐ๋กœ ํ•œ ๊ฒƒ์ด ์•„๋‹Œ ํŒŒ์ผ๋งŒ
364
371
  for (const srcDir of [typeDir, serverDeployDir, nexusDir]) {
365
372
  if (!exists(srcDir)) continue;
373
+ if (srcDir === serverDeployDir && (includeNexus || deployStyle === NO_DEPLOY_STYLE)) continue; // ํด๋”์งธ ์ œ์™ธ
366
374
  for (const filename of listYamlFiles(srcDir)) {
367
375
  const target = join(workflowsDir, filename);
368
376
  if (srcDir === serverDeployDir && !keepDeploy(filename)) continue; // ์•ˆ ๊ณ ๋ฅธ ๋ฐฐํฌ ๋ฐฉ์‹
377
+ if (srcDir === typeDir && deployStyle === NO_DEPLOY_STYLE && !keepDeploy(filename)) continue; // ํƒ€์ž… ๋ฃจํŠธ CD๋„ ๋ฐฐ์ œ
369
378
  if (!existsSync(target)) continue; // ๊ฑด๋„ˆ๋›ด ํŒŒ์ผ ์ œ์™ธ
370
379
  if (untouched.includes(filename)) continue; // unchanged/localOnly ์ œ์™ธ
371
380
  configureEnv(target, { ...envOpts, collectAsks }); // env ๊ณ„ํš values/useDefaults ํฌํ•จ
@@ -417,10 +426,13 @@ export function planWorkflows(context, payloadRoot, targetRoot = ".") {
417
426
  for (const type of types) {
418
427
  const envOpts = { type, projectPath: paths.get(type) || ".", repoName, resolvers };
419
428
  const typeDir = join(projectTypesDir, type);
420
- if (exists(typeDir)) merge(classify(typeDir, workflowsDir, envOpts, srcText, baseline), type);
429
+ if (exists(typeDir)) {
430
+ const typeRootFilter = deployStyle === NO_DEPLOY_STYLE ? deployFilter(deployStyle) : null;
431
+ merge(classify(typeDir, workflowsDir, envOpts, srcText, baseline, typeRootFilter), type);
432
+ }
421
433
 
422
434
  const serverDeployDir = join(typeDir, "server-deploy");
423
- if (exists(serverDeployDir) && !includeNexus) {
435
+ if (exists(serverDeployDir) && !includeNexus && deployStyle !== NO_DEPLOY_STYLE) {
424
436
  merge(classify(serverDeployDir, workflowsDir, envOpts, srcText, baseline, deployFilter(deployStyle)), type);
425
437
  }
426
438
 
@@ -14,7 +14,13 @@ export const DEPLOY_STYLES = [
14
14
 
15
15
  export const DEFAULT_DEPLOY_STYLE = "simple";
16
16
 
17
- export const isDeployStyle = (v) => DEPLOY_STYLES.some((s) => s.value === v);
17
+ // ์„œ๋ฒ„ ๋ฐฐํฌ ์ž์ฒด๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ(ํ”„๋ก ํŠธ์—”๋“œ ์ „์šฉ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ)๋ฅผ ์œ„ํ•œ ๊ฐ’.
18
+ // DEPLOY_STYLES์—๋Š” ๋„ฃ์ง€ ์•Š๋Š”๋‹ค โ€” isDeployWorkflow/suffixOf๊ฐ€ ์ด ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋Š”๋ฐ, ๋นˆ ์ ‘๋ฏธ์‚ฌ๋ฅผ
19
+ // ๋Œ๋ ค์ฃผ๋ฉด endsWith("")๊ฐ€ ํ•ญ์ƒ ์ฐธ์ด๋ผ ๋ชจ๋“  ํŒŒ์ผ์ด CD๋กœ ์˜คํŒ๋˜์–ด cleanupOtherDeployWorkflows๊ฐ€
20
+ // ์„ค์น˜๋œ ์›Œํฌํ”Œ๋กœ์šฐ ์ „์ฒด๋ฅผ ์ง€์šฐ๋Š” ํšŒ๊ท€๊ฐ€ ์ƒ๊ธด๋‹ค (์ด์Šˆ #126).
21
+ export const NO_DEPLOY_STYLE = "none";
22
+
23
+ export const isDeployStyle = (v) => v === NO_DEPLOY_STYLE || DEPLOY_STYLES.some((s) => s.value === v);
18
24
 
19
25
  // ์ด ํŒŒ์ผ์ด CD ๋ณธ์ฒด์ธ๊ฐ€ (= ํƒ1 ๋Œ€์ƒ์ธ๊ฐ€). PR ํ”„๋ฆฌ๋ทฐ๋Š” ๋ฐฐํฌ ๋ฐฉ์‹๊ณผ ์ง๊ตํ•˜๋Š” ์ถ•์ด๋ผ ์ œ์™ธํ•œ๋‹ค.
20
26
  export const isDeployWorkflow = (filename) => DEPLOY_STYLES.some((s) => filename.endsWith(s.suffix));
@@ -25,7 +31,9 @@ const suffixOf = (style) =>
25
31
  (DEPLOY_STYLES.find((s) => s.value === style) ?? DEPLOY_STYLES.find((s) => s.value === DEFAULT_DEPLOY_STYLE)).suffix;
26
32
 
27
33
  // ํŒŒ์ผ ํ•„ํ„ฐ โ€” ๊ณ ๋ฅธ ๋ฐฉ์‹์˜ CD๋งŒ ํ†ต๊ณผ. CD๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ(PR ํ”„๋ฆฌ๋ทฐยทcommon ๋“ฑ)์€ ํ•ญ์ƒ ํ†ต๊ณผ.
34
+ // "none"์€ CD๋ฅผ ํ•˜๋‚˜๋„ ์„ค์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ ‘๋ฏธ์‚ฌ ๋งค์นญ ์—†์ด CD ํŒŒ์ผ ์ „๋ถ€๋ฅผ ๊ฑฐ๋ฅธ๋‹ค.
28
35
  export function deployFilter(style) {
36
+ if (style === NO_DEPLOY_STYLE) return (filename) => !isDeployWorkflow(filename);
29
37
  const suffix = suffixOf(style);
30
38
  return (filename) => !isDeployWorkflow(filename) || filename.endsWith(suffix);
31
39
  }
@@ -6,8 +6,8 @@ import { join } from "node:path";
6
6
  import { existsSync, readFileSync } from "node:fs";
7
7
 
8
8
  // ์น˜ํ™˜ ๋Œ€์ƒ์ด ์•„๋‹Œ ํ† ํฐ โ€” ์›Œํฌํ”Œ๋กœ์šฐ ์Šคํฌ๋ฆฝํŠธ ์•ˆ์˜ heredoc ๊ตฌ๋ถ„์ž๋‹ค. ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ฌธ๋ฒ•์ด๋ฏ€๋กœ
9
- // ๋ฏธ์น˜ํ™˜ ๊ฒ€์‚ฌ์—์„œ ์ œ์™ธํ•œ๋‹ค. (์˜ˆ: cat <<'__SUH_FILE_CONTENT_EOF__')
10
- const SENTINEL_RE = /^__SUH_[A-Z0-9_]*__$/;
9
+ // ๋ฏธ์น˜ํ™˜ ๊ฒ€์‚ฌ์—์„œ ์ œ์™ธํ•œ๋‹ค. (์˜ˆ: cat <<'__WIZARD_FILE_CONTENT_EOF__')
10
+ const SENTINEL_RE = /^__WIZARD_[A-Z0-9_]*__$/;
11
11
  const PLACEHOLDER_RE = /__[A-Z][A-Z0-9_]*__/g;
12
12
 
13
13
  // ์ฃผ์„์œผ๋กœ ์ฃฝ์–ด ์žˆ๋Š” ์ค„ โ€” ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฒ€์‚ฌ ๋Œ€์ƒ์ด ์•„๋‹ˆ๋‹ค.
@@ -10,7 +10,7 @@ import { PAYLOAD } from "../core/paths.js";
10
10
  import { exists, listYamlFiles } from "../core/fsutil.js";
11
11
  import { parseWizardLine, resolveToken, replaceProjectTokens } from "../core/wizard-env.js";
12
12
  import { loadWizardPrompts, wfField, workflowDisplayName } from "../core/wizard-labels.js";
13
- import { deployFilter } from "../core/deploy-style.js";
13
+ import { deployFilter, NO_DEPLOY_STYLE } from "../core/deploy-style.js";
14
14
  import * as engine from "./readline-engine.js";
15
15
 
16
16
  const CANCEL = engine.CANCEL;
@@ -58,9 +58,19 @@ export function collectAsks(payloadRoot, types = [], opts = {}) {
58
58
  for (const type of types) {
59
59
  const typeDir = join(baseDir, type);
60
60
  if (!exists(typeDir)) continue;
61
- // ๋ณต์‚ฌ ์—”์ง„๊ณผ ๋™์ผํ•œ ํด๋” ๊ตฌ์„ฑ: ํƒ€์ž… ์งํ•˜์œ„ + (nexus ์•„๋‹ˆ๋ฉด) server-deploy + (nexus๋ฉด) nexus
62
- units.push([type, typeDir, null]);
63
- units.push([type, join(typeDir, includeNexus ? "nexus" : "server-deploy"), includeNexus ? null : keepDeploy]);
61
+ // ๋ณต์‚ฌ ์—”์ง„๊ณผ ๋™์ผํ•œ ํด๋” ๊ตฌ์„ฑ: ํƒ€์ž… ์งํ•˜์œ„ + (nexus๋ฉด) nexus + (๊ทธ ์™ธ์—”, "๋ฐฐํฌ ์•ˆ ํ•จ"์ด
62
+ // ์•„๋‹ ๋•Œ๋งŒ) server-deploy. server-deploy๊ฐ€ ์žˆ๋Š” ํƒ€์ž…์€ "none"์ผ ๋•Œ ๊ทธ ํด๋”(PR ํ”„๋ฆฌ๋ทฐ
63
+ // ํฌํ•จ) ์ž์ฒด๋ฅผ ์Šค์บ”์—์„œ ๋บ€๋‹ค.
64
+ // go/python์ฒ˜๋Ÿผ CD๊ฐ€ server-deploy ์—†์ด ํƒ€์ž… ๋ฃจํŠธ์— ๋ฐ”๋กœ ์žˆ๋Š” ํƒ€์ž…์€, "๋ฐฐํฌ ์•ˆ ํ•จ"์ผ ๋•Œ
65
+ // ํƒ€์ž… ๋ฃจํŠธ ์Šค์บ”์—๋„ keepDeploy๋ฅผ ๊ฑธ์–ด์•ผ CD ์ „์šฉ ask ํ‚ค(์˜ˆ: DEPLOY_PORT)๊ฐ€ ๊ฑธ๋Ÿฌ์ง„๋‹ค.
66
+ // PR ํ”„๋ฆฌ๋ทฐ ์ž์ฒด์˜ ask ํ‚ค(SSH_AUTH_METHOD ๋“ฑ)๋Š” ์ด ํ•„ํ„ฐ๋กœ๋Š” ๊ฑธ๋Ÿฌ์ง€์ง€ ์•Š๋Š”๋‹ค โ€” PR ํ”„๋ฆฌ๋ทฐ๋Š”
67
+ // ๋ฐฐํฌ ๋ฐฉ์‹๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ํ•ญ์ƒ ์„ค์น˜๋˜๋Š” ๋ณ„๋„ ์ถ•์ด๋ผ ์˜๋„๋œ ์ž”์—ฌ ๋ฒ”์œ„๋‹ค.
68
+ units.push([type, typeDir, deployStyle === NO_DEPLOY_STYLE ? keepDeploy : null]);
69
+ if (includeNexus) {
70
+ units.push([type, join(typeDir, "nexus"), null]);
71
+ } else if (deployStyle !== NO_DEPLOY_STYLE) {
72
+ units.push([type, join(typeDir, "server-deploy"), keepDeploy]);
73
+ }
64
74
  }
65
75
  if (includeSecretBackup) units.push(["common", join(baseDir, "common", "secret-backup"), null]);
66
76