배포: 날짜·일련번호 기반 프런트엔드 버전 계약 적용 #15

Merged
kjh2064 merged 1 commits from fix/deploy-build-frontend-artifact into main 2026-08-06 16:28:38 +09:00
2 changed files with 15 additions and 2 deletions
+8 -1
View File
@@ -35,9 +35,16 @@ jobs:
- name: Build frontend into Host static assets
run: |
pnpm install --frozen-lockfile
VITE_APP_VERSION="${GITHUB_SHA::7}" pnpm build
VERSION_DATE="$(TZ=Asia/Seoul date +%Y.%m.%d)"
RELEASE_COUNT="$(git ls-remote --tags origin "refs/tags/v${VERSION_DATE}.*" | wc -l | tr -d ' ')"
VERSION_SEQUENCE="$((RELEASE_COUNT + 1))"
APP_VERSION="${VERSION_DATE}.${VERSION_SEQUENCE}.${GITHUB_SHA::10}"
echo "VITE_APP_VERSION=${APP_VERSION}" >> "$GITHUB_ENV"
echo "release_version=${APP_VERSION}"
VITE_APP_VERSION="${APP_VERSION}" pnpm build
grep -R -q 'app-version' dist
grep -R -q 'UI contract 4.0' dist
grep -R -q "${APP_VERSION}" dist
find ../src/KArtSell.Host/wwwroot -mindepth 1 -delete
cp -R dist/. ../src/KArtSell.Host/wwwroot/
working-directory: frontend
@@ -8,7 +8,13 @@
## Decision
배포 workflow는 Host publish 전에 `pnpm install --frozen-lockfile``VITE_APP_VERSION=${GITHUB_SHA::7} pnpm build`를 실행한다. 생성된 `frontend/dist`를 Host `wwwroot`에 복사하고, `app-version``UI contract 4.0` marker가 없으면 배포를 중단한다.
배포 workflow는 Host publish 전에 다음 규칙으로 버전을 계산하고 frontend를 재생성한다.
```text
YYYY.MM.DD.<당일 release 순번>.<commit SHA 10자리>
```
당일 순번은 `vYYYY.MM.DD.*` release tag 개수에 1을 더해 계산한다. 예: `2026.08.06.1.acaa731b3f`. 생성된 `frontend/dist`를 Host `wwwroot`에 복사하고, `app-version`, `UI contract 4.0`, 계산된 전체 버전 marker가 없으면 배포를 중단한다.
## Evidence / Unknown