릴리스
이 저장소에서 빌드되는 모든 아티팩트는 GitHub Releases 페이지에 해당 항목이 있습니다. 해당 페이지는 무엇이 언제 배포되었고 무엇이 변경되었는지를 알려 주는 공식적인 정보원입니다.
릴리스를 찾을 수 있는 위치
섹션 제목: “릴리스를 찾을 수 있는 위치”웹 앱, API, 네이티브 앱을 포함한 모든 릴리스는 github.com/jonot-io/jonot/releases에 나열됩니다.
태그 규칙
섹션 제목: “태그 규칙”네이티브 앱 — 릴리스를 진행하는 엔지니어가 수동으로 푸시하는 시맨틱 버전 태그입니다:
apps/host(데스크톱):host-v<semver>— 예:host-v1.2.3apps/native-kiosk:android-kiosk-v<semver>— 예:android-kiosk-v1.4.0apps/native-desk:android-desk-v<semver>— 예:android-desk-v1.4.0
웹 앱과 API — 프로덕션 배포가 성공할 때마다 자동으로 생성되는 타임스탬프 기반 롤링 마커입니다:
apps/api(Worker):api-r<YYYYMMDD-HHMM>-<sha7>— 예:api-r20260523-1542-abc1234- 웹 SPA(9개 앱):
web-<app>-r<YYYYMMDD-HHMM>-<sha7>— 예:web-admin-r20260523-1542-abc1234
네이티브 앱(host, android-kiosk, android-desk)
섹션 제목: “네이티브 앱(host, android-kiosk, android-desk)”네이티브 아티팩트의 릴리스는 해당 아티팩트의 접두사와 일치하는 태그를 푸시하면 트리거됩니다. CI 워크플로가 빌드, 서명, 해당 스토어로의 게시를 수행한 뒤 바이너리가 첨부된 GitHub Release를 생성합니다.
릴리스를 만들려면:
git tag host-v1.0.0git push origin host-v1.0.0host를 상황에 맞게 android-kiosk 또는 android-desk로 바꾸고, 버전을
앱의 versionName / libs.versions.toml 항목과 일치하도록 올립니다.
네이티브 앱의 각 GitHub Release에는 다음이 포함됩니다:
- android-kiosk / android-desk — 서명된 AAB, ProGuard 매핑, Play 스토어
변경 내역(
whatsnew-en-US.txt). - host —
.deb,.rpm,SHA256SUMS,SHA256SUMS.asc(GPG 서명).
웹 SPA와 API
섹션 제목: “웹 SPA와 API”main으로의 푸시는 개발 환경에 자동으로 배포됩니다. 프로덕션은
가변 릴리스 태그를 원하는 커밋으로 강제 이동시킨 뒤 푸시하여 승격합니다:
# 전체 배포(9개 SPA 전부 + API):git tag -f release <sha> && git push -f origin release
# API만 배포:git tag -f release-api <sha> && git push -f origin release-api
# 단일 SPA 배포(예: admin):git tag -f release-admin <sha> && git push -f origin release-adminumbrella release 태그는 한 번의 푸시로 9개 SPA와 API를 모두 배포하며,
한 번에 3개 이상의 태그를 푸시하면 CI가 억제되는 GitHub 제한을 우회합니다.
인식되지 않는 태그 이름은 조용히 배포되지 않고 확인 단계에서 실패합니다.
web-<app>-r… 또는 api-r… 릴리스 마커는 프로덕션 배포가 성공할 때마다
생성되며 --prerelease로 태그되어 네이티브 시맨틱 버전의 “Latest release”
배지를 밀어내지 않습니다. 이 마커들은 게이트가 아니라 무엇이 배포되었는지에
대한 공식 변경 기록입니다.
API 릴리스에는 해당 커밋 시점에 존재하는 모든 D1 마이그레이션 파일을 나열한
migrations.txt 자산도 첨부되어, “마이그레이션 N이 배포되었나요?”라는 질문에
Releases UI에서 바로 답할 수 있습니다.
릴리스 노트
섹션 제목: “릴리스 노트”릴리스 노트는 이전 릴리스 태그와 현재 태그 사이에 병합된 풀 리퀘스트 제목을
바탕으로 GitHub이 자동으로 생성합니다. PR 제목에 있는 Conventional Commit
접두사(feat:, fix:, perf: 등)는 노트 본문에서 변경 사항을 시각적으로
그룹화합니다.