project-auto-wizard 0.9.1 β 0.11.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 +83 -4
- package/package.json +1 -1
- package/payload/config/breaking-changes.json +24 -1
- package/payload/flutter-app/android/fastlane/Fastfile.playstore +86 -0
- package/payload/flutter-app/ios/ExportOptions.plist +31 -0
- package/payload/flutter-app/ios/fastlane/Fastfile +117 -0
- package/payload/scripts/__pycache__/changelog_manager.cpython-314.pyc +0 -0
- package/payload/scripts/__pycache__/issue_helper.cpython-314.pyc +0 -0
- package/payload/scripts/__pycache__/version_manager.cpython-314.pyc +0 -0
- package/payload/scripts/changelog_manager.py +2 -2
- package/payload/scripts/version_manager.py +2 -2
- package/payload/version.yml.template +1 -0
- package/payload/workflows/common/secret-backup/PROJECT-COMMON-SECRET-FILE-UPLOAD.yaml +12 -12
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +48 -20
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +44 -19
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +28 -36
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +33 -46
- package/payload/workflows/flutter/{PROJECT-FLUTTER-SUH-LAB-APP-BUILD-TRIGGER.yaml β PROJECT-FLUTTER-APP-BUILD-TRIGGER.yaml} +38 -38
- package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +123 -32
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +57 -42
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +61 -40
- package/payload/workflows/go/PROJECT-GO-CI.yaml +47 -0
- package/payload/workflows/go/PROJECT-GO-PR-PREVIEW.yaml +40 -40
- package/payload/workflows/next/PROJECT-NEXT-CI.yaml +47 -0
- package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +47 -0
- package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +40 -40
- package/payload/workflows/react/PROJECT-REACT-CI.yaml +47 -0
- package/payload/workflows/spring/nexus/PROJECT-SPRING-GITHUB-PACKAGES-PUBLISH.yml +1 -0
- package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-CI.yml +47 -0
- package/payload/workflows/spring/nexus/PROJECT-SPRING-NEXUS-PUBLISH.yml +1 -0
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +39 -39
- package/src/cli/args.js +37 -0
- package/src/cli/help.js +4 -0
- package/src/commands/doctor.js +55 -2
- package/src/commands/dry-run.js +10 -0
- package/src/commands/full.js +28 -3
- package/src/commands/interactive-flutter.js +95 -0
- package/src/commands/interactive.js +51 -5
- package/src/commands/status.js +20 -2
- package/src/context.js +6 -0
- package/src/core/breaking.js +7 -3
- package/src/core/copy/flutter-app.js +42 -0
- package/src/core/copy/workflows.js +21 -9
- package/src/core/detect-fs.js +9 -1
- package/src/core/flutter-options.js +118 -0
- package/src/core/installed-stores.js +12 -0
- package/src/core/verify.js +2 -2
- package/src/core/version-yml.js +40 -5
- package/src/core/wizard-env.js +26 -4
- package/src/index.js +32 -1
- package/src/ui/env-plan.js +8 -5
- package/src/ui/prompts.js +88 -3
- package/src/ui/status-cards.js +13 -1
- package/src/ui/summary.js +24 -5
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
# ===================================================================
|
|
20
20
|
#
|
|
21
21
|
# π μ¬μ©λ²:
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
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: '
|
|
67
|
+
ISSUE_HELPER_MARKER: '<!-- project-auto-wizard issue helper -->'
|
|
68
68
|
|
|
69
69
|
# Health Check μ€μ (νλ‘μ νΈλ³ μμ νμ)
|
|
70
70
|
# - 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, '
|
|
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
|
-
# νμ:
|
|
147
|
-
if [[ "$COMMENT" =~
|
|
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" =~
|
|
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" =~
|
|
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 "βΉοΈ
|
|
182
|
+
echo "βΉοΈ /wizard server λͺ
λ Ήμ΄κ° μλ"
|
|
183
183
|
fi
|
|
184
184
|
|
|
185
185
|
# -----------------------------------------------------------------
|
|
@@ -519,17 +519,17 @@ jobs:
|
|
|
519
519
|
'### π λͺ
λ Ήμ΄',
|
|
520
520
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
521
521
|
'|--------|------|',
|
|
522
|
-
'|
|
|
523
|
-
'|
|
|
524
|
-
'|
|
|
522
|
+
'| `/wizard server build` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |',
|
|
523
|
+
'| `/wizard server destroy` | Preview νκ²½ μμ |',
|
|
524
|
+
'| `/wizard server status` | νμ¬ μν νμΈ |',
|
|
525
525
|
'',
|
|
526
526
|
'<details>',
|
|
527
527
|
'<summary>π§ κ³ κΈ λͺ
λ Ήμ΄ (λ€λ₯Έ Issue/PRμμ μ μ΄)</summary>',
|
|
528
528
|
'',
|
|
529
529
|
'```',
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
530
|
+
`/wizard server build ${branchName}`,
|
|
531
|
+
`/wizard server destroy ${branchName}`,
|
|
532
|
+
`/wizard server status ${branchName}`,
|
|
533
533
|
'```',
|
|
534
534
|
'</details>',
|
|
535
535
|
'',
|
|
@@ -594,7 +594,7 @@ jobs:
|
|
|
594
594
|
'',
|
|
595
595
|
'### π‘ λ€μ λ¨κ³',
|
|
596
596
|
'1. μ λ§ν¬μμ λΉλ/λ°°ν¬ λ‘κ·Έλ₯Ό νμΈνμΈμ',
|
|
597
|
-
'2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ:
|
|
597
|
+
'2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ: `/wizard server build`',
|
|
598
598
|
'',
|
|
599
599
|
'---',
|
|
600
600
|
'*π€ μ΄ λκΈμ PR Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -1115,17 +1115,17 @@ jobs:
|
|
|
1115
1115
|
'### π λͺ
λ Ήμ΄',
|
|
1116
1116
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
1117
1117
|
'|--------|------|',
|
|
1118
|
-
'|
|
|
1119
|
-
'|
|
|
1120
|
-
'|
|
|
1118
|
+
'| `/wizard server build` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |',
|
|
1119
|
+
'| `/wizard server destroy` | Preview νκ²½ μμ |',
|
|
1120
|
+
'| `/wizard server status` | νμ¬ μν νμΈ |',
|
|
1121
1121
|
'',
|
|
1122
1122
|
'<details>',
|
|
1123
1123
|
'<summary>π§ κ³ κΈ λͺ
λ Ήμ΄ (λ€λ₯Έ Issue/PRμμ μ μ΄)</summary>',
|
|
1124
1124
|
'',
|
|
1125
1125
|
'```',
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1126
|
+
`/wizard server build ${branchName}`,
|
|
1127
|
+
`/wizard server destroy ${branchName}`,
|
|
1128
|
+
`/wizard server status ${branchName}`,
|
|
1129
1129
|
'```',
|
|
1130
1130
|
'</details>',
|
|
1131
1131
|
'',
|
|
@@ -1188,7 +1188,7 @@ jobs:
|
|
|
1188
1188
|
'',
|
|
1189
1189
|
'### π‘ λ€μ λ¨κ³',
|
|
1190
1190
|
'1. μ λ§ν¬μμ λΉλ/λ°°ν¬ λ‘κ·Έλ₯Ό νμΈνμΈμ',
|
|
1191
|
-
'2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ:
|
|
1191
|
+
'2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ: `/wizard server build`',
|
|
1192
1192
|
'',
|
|
1193
1193
|
'---',
|
|
1194
1194
|
'*π€ μ΄ λκΈμ Issue Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -1219,7 +1219,7 @@ jobs:
|
|
|
1219
1219
|
if: |
|
|
1220
1220
|
(github.event_name == 'pull_request' && github.event.action == 'closed') ||
|
|
1221
1221
|
(github.event_name == 'issues' && github.event.action == 'closed') ||
|
|
1222
|
-
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '
|
|
1222
|
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '/wizard') && contains(github.event.comment.body, 'server destroy'))
|
|
1223
1223
|
runs-on: ubuntu-latest
|
|
1224
1224
|
steps:
|
|
1225
1225
|
- name: PR/Issue λ²νΈ κ°μ Έμ€κΈ°
|
|
@@ -1302,7 +1302,7 @@ jobs:
|
|
|
1302
1302
|
`| **컨ν
μ΄λ** | \`${projectName}-pr-${number}\` |`,
|
|
1303
1303
|
'| **μν** | μμ λ¨ |',
|
|
1304
1304
|
'',
|
|
1305
|
-
'λ€μ λ°°ν¬νλ €λ©΄:
|
|
1305
|
+
'λ€μ λ°°ν¬νλ €λ©΄: `/wizard server build`',
|
|
1306
1306
|
'',
|
|
1307
1307
|
'---',
|
|
1308
1308
|
'*π€ μ΄ λκΈμ PR/Issue Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -1401,8 +1401,8 @@ jobs:
|
|
|
1401
1401
|
'### π λͺ
λ Ήμ΄',
|
|
1402
1402
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
1403
1403
|
'|--------|------|',
|
|
1404
|
-
'|
|
|
1405
|
-
'|
|
|
1404
|
+
'| `/wizard server build` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |',
|
|
1405
|
+
'| `/wizard server destroy` | Preview νκ²½ μμ |',
|
|
1406
1406
|
'',
|
|
1407
1407
|
'---',
|
|
1408
1408
|
`*π€ μ΄ λκΈμ ${contextType} Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*`
|
|
@@ -1416,7 +1416,7 @@ jobs:
|
|
|
1416
1416
|
`| **컨ν
μ΄λ** | \`${projectName}-pr-${number}\` |`,
|
|
1417
1417
|
'| **μν** | π΄ Not Found |',
|
|
1418
1418
|
'',
|
|
1419
|
-
'λ°°ν¬νλ €λ©΄:
|
|
1419
|
+
'λ°°ν¬νλ €λ©΄: `/wizard server build`',
|
|
1420
1420
|
'',
|
|
1421
1421
|
'---',
|
|
1422
1422
|
`*π€ μ΄ λκΈμ ${contextType} Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*`
|
|
@@ -1850,17 +1850,17 @@ jobs:
|
|
|
1850
1850
|
'### π λͺ
λ Ήμ΄',
|
|
1851
1851
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
1852
1852
|
'|--------|------|',
|
|
1853
|
-
'|
|
|
1854
|
-
'|
|
|
1855
|
-
'|
|
|
1853
|
+
'| `/wizard server build` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |',
|
|
1854
|
+
'| `/wizard server destroy` | Preview νκ²½ μμ |',
|
|
1855
|
+
'| `/wizard server status` | νμ¬ μν νμΈ |',
|
|
1856
1856
|
'',
|
|
1857
1857
|
'<details>',
|
|
1858
1858
|
'<summary>π§ κ³ κΈ λͺ
λ Ήμ΄ (λ€λ₯Έ Issue/PRμμ μ μ΄)</summary>',
|
|
1859
1859
|
'',
|
|
1860
1860
|
'```',
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1861
|
+
`/wizard server build ${branchName}`,
|
|
1862
|
+
`/wizard server destroy ${branchName}`,
|
|
1863
|
+
`/wizard server status ${branchName}`,
|
|
1864
1864
|
'```',
|
|
1865
1865
|
'</details>',
|
|
1866
1866
|
'',
|
|
@@ -1921,7 +1921,7 @@ jobs:
|
|
|
1921
1921
|
'',
|
|
1922
1922
|
'### π‘ λ€μ λ¨κ³',
|
|
1923
1923
|
'1. μ λ§ν¬μμ λΉλ/λ°°ν¬ λ‘κ·Έλ₯Ό νμΈνμΈμ',
|
|
1924
|
-
`2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ:
|
|
1924
|
+
`2. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ: \`/wizard server build ${branchName}\``,
|
|
1925
1925
|
'',
|
|
1926
1926
|
'---',
|
|
1927
1927
|
'*π€ μ΄ λκΈμ Custom Branch Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -2051,7 +2051,7 @@ jobs:
|
|
|
2051
2051
|
`| **컨ν
μ΄λ** | \`${containerName}\` |`,
|
|
2052
2052
|
'| **μν** | μμ λ¨ |',
|
|
2053
2053
|
'',
|
|
2054
|
-
`λ€μ λ°°ν¬νλ €λ©΄:
|
|
2054
|
+
`λ€μ λ°°ν¬νλ €λ©΄: \`/wizard server build ${branchName}\``,
|
|
2055
2055
|
'',
|
|
2056
2056
|
'---',
|
|
2057
2057
|
'*π€ μ΄ λκΈμ Custom Branch Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -2162,8 +2162,8 @@ jobs:
|
|
|
2162
2162
|
'### π λͺ
λ Ήμ΄',
|
|
2163
2163
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
2164
2164
|
'|--------|------|',
|
|
2165
|
-
`|
|
|
2166
|
-
`|
|
|
2165
|
+
`| \`/wizard server build ${branchName}\` | μ΅μ 컀λ°μΌλ‘ μ¬λ°°ν¬ |`,
|
|
2166
|
+
`| \`/wizard server destroy ${branchName}\` | Preview νκ²½ μμ |`,
|
|
2167
2167
|
'',
|
|
2168
2168
|
'---',
|
|
2169
2169
|
'*π€ μ΄ λκΈμ Custom Branch Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -2178,7 +2178,7 @@ jobs:
|
|
|
2178
2178
|
`| **컨ν
μ΄λ** | \`${containerName}\` |`,
|
|
2179
2179
|
'| **μν** | π΄ Not Found |',
|
|
2180
2180
|
'',
|
|
2181
|
-
`λ°°ν¬νλ €λ©΄:
|
|
2181
|
+
`λ°°ν¬νλ €λ©΄: \`/wizard server build ${branchName}\``,
|
|
2182
2182
|
'',
|
|
2183
2183
|
'---',
|
|
2184
2184
|
'*π€ μ΄ λκΈμ Custom Branch Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -37,6 +37,8 @@ env:
|
|
|
37
37
|
PROJECT_NAME: "__PROJECT_NAME__" # @wizard ask:@repo
|
|
38
38
|
NODE_VERSION: "20.15.0"
|
|
39
39
|
ENV_FILE: ".env"
|
|
40
|
+
# λͺ¨λ
Έλ ν¬μμ μ΄ νλ‘μ νΈκ° μλ νμ κ²½λ‘ ('.'μ΄λ©΄ νμ κ²μ¦)
|
|
41
|
+
PROJECT_PATH: "." # @wizard auto:project-path
|
|
40
42
|
|
|
41
43
|
permissions:
|
|
42
44
|
contents: read
|
|
@@ -44,9 +46,35 @@ permissions:
|
|
|
44
46
|
issues: write
|
|
45
47
|
|
|
46
48
|
jobs:
|
|
49
|
+
# ===================================================================
|
|
50
|
+
# λ³κ²½ κ°μ§ (λͺ¨λ
Έλ ν¬μμ μ΄ νλ‘μ νΈ κ²½λ‘κ° λ°λμλμ§ νλ³)
|
|
51
|
+
# ===================================================================
|
|
52
|
+
changes:
|
|
53
|
+
name: λ³κ²½ κ°μ§
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
permissions:
|
|
56
|
+
contents: read
|
|
57
|
+
pull-requests: read
|
|
58
|
+
outputs:
|
|
59
|
+
project: ${{ steps.filter.outputs.project }}
|
|
60
|
+
steps:
|
|
61
|
+
- name: Checkout repository
|
|
62
|
+
uses: actions/checkout@v7
|
|
63
|
+
|
|
64
|
+
- name: νλ‘μ νΈ κ²½λ‘ λ³κ²½ μ¬λΆ νλ³
|
|
65
|
+
id: filter
|
|
66
|
+
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
67
|
+
uses: dorny/paths-filter@v4
|
|
68
|
+
with:
|
|
69
|
+
filters: |
|
|
70
|
+
project:
|
|
71
|
+
- '${{ env.PROJECT_PATH == '.' && '**' || format('{0}/**', env.PROJECT_PATH) }}'
|
|
72
|
+
|
|
47
73
|
build:
|
|
48
74
|
name: Next.js μ ν리μΌμ΄μ
λΉλ
|
|
49
75
|
runs-on: ubuntu-latest
|
|
76
|
+
needs: changes
|
|
77
|
+
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.project == 'true' }}
|
|
50
78
|
|
|
51
79
|
steps:
|
|
52
80
|
# 1. μμ€μ½λ 체ν¬μμ
|
|
@@ -184,3 +212,22 @@ jobs:
|
|
|
184
212
|
echo " π μκ°: $(date '+%Y-%m-%d %H:%M:%S UTC')"
|
|
185
213
|
echo ""
|
|
186
214
|
echo "βββββββββββββββββββββββββββββββββββββββββββββββββββββ"
|
|
215
|
+
|
|
216
|
+
# ===================================================================
|
|
217
|
+
# CI Gate (required checkλ‘ λ±λ‘ν λ¨μΌ job)
|
|
218
|
+
# ===================================================================
|
|
219
|
+
ci-gate:
|
|
220
|
+
name: CI Gate
|
|
221
|
+
if: ${{ always() }}
|
|
222
|
+
needs: [changes, build]
|
|
223
|
+
runs-on: ubuntu-latest
|
|
224
|
+
steps:
|
|
225
|
+
- name: κ²°κ³Ό μ§κ³
|
|
226
|
+
env:
|
|
227
|
+
RESULTS: ${{ toJSON(needs.*.result) }}
|
|
228
|
+
run: |
|
|
229
|
+
echo "needs κ²°κ³Ό: $RESULTS"
|
|
230
|
+
if echo "$RESULTS" | grep -Eq '"(failure|cancelled)"'; then
|
|
231
|
+
echo "μ€ν¨νκ±°λ μ·¨μλ jobμ΄ μμ΅λλ€."
|
|
232
|
+
exit 1
|
|
233
|
+
fi
|
|
@@ -29,14 +29,42 @@ on:
|
|
|
29
29
|
env:
|
|
30
30
|
# νλ‘μ νΈ κ³ μ μλ³μ (컨ν
μ΄λλͺ
, μ΄λ―Έμ§λͺ
, λλ©μΈμ μ¬μ©)
|
|
31
31
|
PROJECT_NAME: "__PROJECT_NAME__" # @wizard ask:@repo
|
|
32
|
+
# λͺ¨λ
Έλ ν¬μμ μ΄ νλ‘μ νΈκ° μλ νμ κ²½λ‘ ('.'μ΄λ©΄ νμ κ²μ¦)
|
|
33
|
+
PROJECT_PATH: "." # @wizard auto:project-path
|
|
32
34
|
|
|
33
35
|
jobs:
|
|
36
|
+
# ===================================================================
|
|
37
|
+
# λ³κ²½ κ°μ§ (λͺ¨λ
Έλ ν¬μμ μ΄ νλ‘μ νΈ κ²½λ‘κ° λ°λμλμ§ νλ³)
|
|
38
|
+
# ===================================================================
|
|
39
|
+
changes:
|
|
40
|
+
name: λ³κ²½ κ°μ§
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
permissions:
|
|
43
|
+
contents: read
|
|
44
|
+
pull-requests: read
|
|
45
|
+
outputs:
|
|
46
|
+
project: ${{ steps.filter.outputs.project }}
|
|
47
|
+
steps:
|
|
48
|
+
- name: Checkout repository
|
|
49
|
+
uses: actions/checkout@v7
|
|
50
|
+
|
|
51
|
+
- name: νλ‘μ νΈ κ²½λ‘ λ³κ²½ μ¬λΆ νλ³
|
|
52
|
+
id: filter
|
|
53
|
+
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
54
|
+
uses: dorny/paths-filter@v4
|
|
55
|
+
with:
|
|
56
|
+
filters: |
|
|
57
|
+
project:
|
|
58
|
+
- '${{ env.PROJECT_PATH == '.' && '**' || format('{0}/**', env.PROJECT_PATH) }}'
|
|
59
|
+
|
|
34
60
|
# ===================================================================
|
|
35
61
|
# λΉλ κ²μ¦ μμ
|
|
36
62
|
# ===================================================================
|
|
37
63
|
build-check:
|
|
38
64
|
name: Python FastAPI λΉλ κ²μ¦
|
|
39
65
|
runs-on: ubuntu-latest
|
|
66
|
+
needs: changes
|
|
67
|
+
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.project == 'true' }}
|
|
40
68
|
|
|
41
69
|
steps:
|
|
42
70
|
# 1. μμ€μ½λ 체ν¬μμ
|
|
@@ -77,3 +105,22 @@ jobs:
|
|
|
77
105
|
echo " πΏ λΈλμΉ: ${{ github.ref_name }}"
|
|
78
106
|
echo " π 컀λ°: ${{ github.sha }}"
|
|
79
107
|
echo " β° κ²μ¦ μκ°: $(date '+%Y-%m-%d %H:%M:%S')"
|
|
108
|
+
|
|
109
|
+
# ===================================================================
|
|
110
|
+
# CI Gate (required checkλ‘ λ±λ‘ν λ¨μΌ job)
|
|
111
|
+
# ===================================================================
|
|
112
|
+
ci-gate:
|
|
113
|
+
name: CI Gate
|
|
114
|
+
if: ${{ always() }}
|
|
115
|
+
needs: [changes, build-check]
|
|
116
|
+
runs-on: ubuntu-latest
|
|
117
|
+
steps:
|
|
118
|
+
- name: κ²°κ³Ό μ§κ³
|
|
119
|
+
env:
|
|
120
|
+
RESULTS: ${{ toJSON(needs.*.result) }}
|
|
121
|
+
run: |
|
|
122
|
+
echo "needs κ²°κ³Ό: $RESULTS"
|
|
123
|
+
if echo "$RESULTS" | grep -Eq '"(failure|cancelled)"'; then
|
|
124
|
+
echo "μ€ν¨νκ±°λ μ·¨μλ jobμ΄ μμ΅λλ€."
|
|
125
|
+
exit 1
|
|
126
|
+
fi
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
# ===================================================================
|
|
20
20
|
#
|
|
21
21
|
# π μ¬μ©λ²:
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
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: '
|
|
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, '
|
|
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
|
-
# νμ:
|
|
146
|
-
if [[ "$COMMENT" =~
|
|
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" =~
|
|
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" =~
|
|
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 "βΉοΈ
|
|
181
|
+
echo "βΉοΈ /wizard server λͺ
λ Ήμ΄κ° μλ"
|
|
182
182
|
fi
|
|
183
183
|
|
|
184
184
|
# -----------------------------------------------------------------
|
|
@@ -518,17 +518,17 @@ jobs:
|
|
|
518
518
|
'### π λͺ
λ Ήμ΄',
|
|
519
519
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
520
520
|
'|--------|------|',
|
|
521
|
-
'|
|
|
522
|
-
'|
|
|
523
|
-
'|
|
|
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
|
-
|
|
530
|
-
|
|
531
|
-
|
|
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. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ:
|
|
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
|
-
'|
|
|
1118
|
-
'|
|
|
1119
|
-
'|
|
|
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
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
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. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ:
|
|
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, '
|
|
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
|
-
'λ€μ λ°°ν¬νλ €λ©΄:
|
|
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
|
-
'|
|
|
1404
|
-
'|
|
|
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
|
-
'λ°°ν¬νλ €λ©΄:
|
|
1418
|
+
'λ°°ν¬νλ €λ©΄: `/wizard server build`',
|
|
1419
1419
|
'',
|
|
1420
1420
|
'---',
|
|
1421
1421
|
`*π€ μ΄ λκΈμ ${contextType} Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*`
|
|
@@ -1849,17 +1849,17 @@ jobs:
|
|
|
1849
1849
|
'### π λͺ
λ Ήμ΄',
|
|
1850
1850
|
'| λͺ
λ Ήμ΄ | μ€λͺ
|',
|
|
1851
1851
|
'|--------|------|',
|
|
1852
|
-
'|
|
|
1853
|
-
'|
|
|
1854
|
-
'|
|
|
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
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
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. λ¬Έμ λ₯Ό μμ ν ν λ€μ μλνμΈμ:
|
|
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
|
-
`λ€μ λ°°ν¬νλ €λ©΄:
|
|
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
|
-
`|
|
|
2165
|
-
`|
|
|
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
|
-
`λ°°ν¬νλ €λ©΄:
|
|
2180
|
+
`λ°°ν¬νλ €λ©΄: \`/wizard server build ${branchName}\``,
|
|
2181
2181
|
'',
|
|
2182
2182
|
'---',
|
|
2183
2183
|
'*π€ μ΄ λκΈμ Custom Branch Preview μμ€ν
μ μν΄ μλ μμ±λμμ΅λλ€.*'
|
|
@@ -36,6 +36,8 @@ env:
|
|
|
36
36
|
PROJECT_NAME: "__PROJECT_NAME__" # @wizard ask:@repo
|
|
37
37
|
NODE_VERSION: "20.15.0"
|
|
38
38
|
ENV_FILE: ".env"
|
|
39
|
+
# λͺ¨λ
Έλ ν¬μμ μ΄ νλ‘μ νΈκ° μλ νμ κ²½λ‘ ('.'μ΄λ©΄ νμ κ²μ¦)
|
|
40
|
+
PROJECT_PATH: "." # @wizard auto:project-path
|
|
39
41
|
|
|
40
42
|
permissions:
|
|
41
43
|
contents: read
|
|
@@ -43,9 +45,35 @@ permissions:
|
|
|
43
45
|
issues: write
|
|
44
46
|
|
|
45
47
|
jobs:
|
|
48
|
+
# ===================================================================
|
|
49
|
+
# λ³κ²½ κ°μ§ (λͺ¨λ
Έλ ν¬μμ μ΄ νλ‘μ νΈ κ²½λ‘κ° λ°λμλμ§ νλ³)
|
|
50
|
+
# ===================================================================
|
|
51
|
+
changes:
|
|
52
|
+
name: λ³κ²½ κ°μ§
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
permissions:
|
|
55
|
+
contents: read
|
|
56
|
+
pull-requests: read
|
|
57
|
+
outputs:
|
|
58
|
+
project: ${{ steps.filter.outputs.project }}
|
|
59
|
+
steps:
|
|
60
|
+
- name: Checkout repository
|
|
61
|
+
uses: actions/checkout@v7
|
|
62
|
+
|
|
63
|
+
- name: νλ‘μ νΈ κ²½λ‘ λ³κ²½ μ¬λΆ νλ³
|
|
64
|
+
id: filter
|
|
65
|
+
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
66
|
+
uses: dorny/paths-filter@v4
|
|
67
|
+
with:
|
|
68
|
+
filters: |
|
|
69
|
+
project:
|
|
70
|
+
- '${{ env.PROJECT_PATH == '.' && '**' || format('{0}/**', env.PROJECT_PATH) }}'
|
|
71
|
+
|
|
46
72
|
build:
|
|
47
73
|
name: React/Next.js μ ν리μΌμ΄μ
λΉλ
|
|
48
74
|
runs-on: ubuntu-latest
|
|
75
|
+
needs: changes
|
|
76
|
+
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.project == 'true' }}
|
|
49
77
|
|
|
50
78
|
steps:
|
|
51
79
|
# 1. μμ€μ½λ 체ν¬μμ
|
|
@@ -193,3 +221,22 @@ jobs:
|
|
|
193
221
|
echo "β λΉλ μ€ μ€λ₯κ° λ°μνμ΅λλ€."
|
|
194
222
|
echo "π‘ Actions νμμ 'build-log' μν°ν©νΈλ₯Ό λ€μ΄λ‘λνμ¬ μ 체 λ‘κ·Έλ₯Ό νμΈνμΈμ."
|
|
195
223
|
fi
|
|
224
|
+
|
|
225
|
+
# ===================================================================
|
|
226
|
+
# CI Gate (required checkλ‘ λ±λ‘ν λ¨μΌ job)
|
|
227
|
+
# ===================================================================
|
|
228
|
+
ci-gate:
|
|
229
|
+
name: CI Gate
|
|
230
|
+
if: ${{ always() }}
|
|
231
|
+
needs: [changes, build]
|
|
232
|
+
runs-on: ubuntu-latest
|
|
233
|
+
steps:
|
|
234
|
+
- name: κ²°κ³Ό μ§κ³
|
|
235
|
+
env:
|
|
236
|
+
RESULTS: ${{ toJSON(needs.*.result) }}
|
|
237
|
+
run: |
|
|
238
|
+
echo "needs κ²°κ³Ό: $RESULTS"
|
|
239
|
+
if echo "$RESULTS" | grep -Eq '"(failure|cancelled)"'; then
|
|
240
|
+
echo "μ€ν¨νκ±°λ μ·¨μλ jobμ΄ μμ΅λλ€."
|
|
241
|
+
exit 1
|
|
242
|
+
fi
|