앱 버전과 배포
deploy가 만드는 버전, release와 적용 범위, 재동의가 필요한 변경, 되돌리기, 빌드 단계와 오류
deploy는 버전을 만들고 release는 그 버전을 현재 버전으로 정합니다. 설치된 상점은 현재 버전을 실행합니다.
버전은 만든 뒤 바뀌지 않습니다.
npx sayren app deploy -m "최소 금액 설정 추가" # 버전 4 (빌드 성공)
npx sayren app status # 현재 버전 3, 설치 12
npx sayren app release 4 # 현재 버전 4
npx sayren app release 3 # 되돌리기빌드
deploy는 먼저 로컬에서 번들을 만들어 검사하고(아래 「로컬」), 올라간 뒤 sayren이 서버 단계를 돕니다. 터미널에 단계별 결과가 흐르고 실패하면
단계·오류 코드·로그 꼬리를 보여 줍니다.
| 단계 | 어디서 | 하는 일 | 실패 코드 |
|---|---|---|---|
| 번들 | 로컬 | src/server.ts를 한 파일(ESM)로 묶습니다. 의존성은 앱 폴더의 node_modules에서 읽습니다(npm install 먼저) | BUILD_FAILED |
| 검사 | 로컬 | 매니페스트 검증, 이벤트↔권한, 이벤트 함수 존재, 번들 안 비밀 값 형식, 크기 | MANIFEST_INVALID · HANDLER_MISSING · SECRET_IN_SOURCE · ARTIFACT_TOO_LARGE |
DEPENDENCIES | 서버 | package.json·pnpm-lock.yaml 검사. 보안 취약점·레지스트리 밖 의존성 거절 | DEPENDENCY_REJECTED |
VERIFY | 서버 | 매니페스트 검증(로컬과 같은 규칙) | MANIFEST_INVALID |
BUNDLE | 서버 | 번들 크기·비밀 값 형식·화면 파일 수 | ARTIFACT_TOO_LARGE · SECRET_IN_SOURCE |
UPLOAD | 서버 | 실행 환경에 올리기 | UPLOAD_FAILED |
| 한도 | 값 |
|---|---|
| 서버 번들 | 3MB(gzip) |
| 화면 정적 파일 | 합계 25MB, 2,000개 |
| 올리기 본문 | 8MB |
번들에 액세스 토큰·PG 키·개인 키·앱 배포 키 모양의 문자열이 들어가면 SECRET_IN_SOURCE로 막습니다. 비밀 값은 sayren app secret put으로 넣습니다.
타입 검사는 sayren이 하지 않습니다 — 앱 폴더에서 npx tsc --noEmit을 직접 돌리십시오(init이 tsconfig.json을 만듭니다).
빌드가 끝난 버전은 status와 developer.sayren.app › {앱} › 버전에서 봅니다. 실패한 버전은 release할 수 없습니다.
release와 적용
release는 설치된 모든 상점에 곧바로 적용됩니다. 예외는 권한·외부 호스트·이벤트·화면이 넓어진 버전입니다.
| 변경 | 적용 |
|---|---|
| 코드만 바뀜, 설정 필드 추가·변경, 권한·호스트·이벤트가 줄어듦 | 모든 설치에 곧바로 |
권한 추가(r → rw 포함), 외부 호스트 추가, 이벤트 추가, 앱 화면 추가 | 새 설치는 새 버전. 기존 설치는 옛 버전을 계속 실행하고 셀러에게 「권한 업데이트 필요」가 보입니다. 셀러가 재동의하면 새 버전으로 옮겨 가고 APP.SCOPES_UPDATED가 옵니다 |
재동의를 기다리는 설치는 옛 버전의 권한·이벤트로 동작하므로, 새 버전의 코드가 옛 버전에서도 돌아야 한다고 가정하지 마십시오 — 그 설치는 옛 코드를 실행합니다. 개발자 화면에서 설치별 실행 버전과 재동의 대기 수를 봅니다.
status의 설치 수는 상점 수이고, 같은 상점이 제거 뒤 다시 설치하면 새 설치입니다.
되돌리기
이전 번호를 release하면 됩니다. 넓어짐 판정은 각 설치가 지금 실행하는 버전과 비교하므로, 줄어드는 방향의 되돌리기는 곧바로 적용됩니다.
오래된 버전은 실행 파일이 정리돼 있을 수 있고 그때는 release에 몇십 초가 걸립니다(산출물에서 다시 올립니다).
배포 범위
지금 앱은 개발자 조직 구성원이 소유자·관리자인 상점과 개발 상점에만 설치됩니다. 동의 화면에는 「Sayren이 확인하지 않은 앱」 경고가 보입니다. 설치 링크로 다른 상점에 배포하는 것과 공개 앱 목록은 아직 없습니다.
앱 정지와 폐기
- sayren 운영이 앱을 정지하면 모든 설치에서 실행이 멈추고 관리 API 호출이
401로 거부됩니다. 설치는 남아 있어 해제되면 다시 동작합니다. 사유는 개발자 화면에 보입니다. - 특정 버전이 폐기되면 그 버전을 실행하던 설치는 직전 버전으로 돌아갑니다.
- 24시간 동안 모든 호출이 실패하는 앱은 자동으로 정지됩니다. 원인을 고쳐 새 버전을 release하면 해제를 요청할 수 있습니다.