Files
networkSetup/docs/plan/03-package-and-upload.md
T

5.5 KiB

버전별 패키지 관리와 업로드

패키지는 등록 후 변경하지 않고 배포 정책만 변경한다. 같은 릴리스를 개발자 테스트부터 일반 배포까지 사용하며, 수정이 필요하면 새 릴리스를 만든다.

버전 및 관리 정보

정보 목적
productId 제품 식별. 기존 업데이트 제품 코드 E901과의 관계 정의
productVersion 사용자 표시와 업그레이드 판정에 사용할 제품 버전
engineVersion IntelliCAD 등 엔진 버전. 현재 대상은 14.1
releaseId / buildId 고유 릴리스·빌드 식별자와 소스 커밋 연결
platform / architecture Windows 및 x64 등 대상 플랫폼
artifacts 파일 종류, 저장 경로, 크기, 최종 SHA-256, 서명 검증 결과
patchTargets 패치별 허용 기준 릴리스·제품 식별자·패치 이력·목표 릴리스
fallbackArtifactId 패치 적용 불가 또는 복구 후 사용할 동일 목표 버전의 전체 설치 파일
compatibility 지원 OS, 필수 런타임, 최소 업데이터 버전, 허용 업그레이드 경로
recovery 복구 가능한 릴리스와 데이터 호환 조건

예시 저장 경로는 다음과 같다. 값은 운영 체계를 설명하기 위한 예시다.

/packages/egbim/1.13.2/build-001/windows-x64/FullSetup.exe
/packages/egbim/1.13.2/build-001/windows-x64/EG-BIM.msi
/patches/egbim/release-001/to-release-002/windows-x64/Patch.msp
/manifests/egbim/release-001.json

같은 URL의 바이너리를 교체하지 않는다. 패키지는 장기 캐시가 가능하고, 현재 그룹별 대상 버전을 반환하는 응답은 사용자 간 공유 캐시로 섞이지 않도록 한다.

위 FullSetup.exe는 단일 파일 출력이 가능한 경우의 예시다. 대용량 패키지는 MSI·분할 CAB·런타임을 각각 아티팩트로 등록하고 의존 관계와 전체 설치 실행 경로를 함께 저장한다. fallbackArtifactId도 필요한 모든 파일을 참조하는 설치 레이아웃/매니페스트로 연결해야 한다. 생성 프로그램의 데이터와 출력 계약은 Rust + Tauri 설계를 따른다.

업로드와 공개 절차

단계 처리 실패 시 결과
빌드 버전 반영, 난독화, 파일 서명, 패키징, 패키지 서명 업로드 중단
임시 업로드 필요하면 분할·재개 지원, 공개 저장 경로와 격리 전송 재시도
서버 검증 최종 해시·크기·서명·필수 파일·중복 릴리스 확인 공개 불가
설치 검증 신규 설치·지원 기준별 패치·전체 설치 전환·실행 확인 승인 불가
릴리스 등록 검증한 아티팩트와 메타데이터를 고정 그룹 공개 전 상태 유지
그룹 공개 승인된 그룹의 대상 릴리스를 원자적으로 변경 기존 정책 유지

권장 상태는 Uploaded → Verified → Ready이며 검증 실패는 Rejected로 관리한다. 그룹 배포 상태는 패키지 상태와 별도로 둔다. Ready는 모든 사용자에게 공개됐다는 뜻이 아니다.

CI 업로드를 기본으로 하되 관리자 수동 업로드도 같은 검증을 거친다. 업로드 권한과 일반 사용자 배포 승인 권한을 분리하고, 누가 어떤 릴리스를 어느 그룹에 공개했는지 기록한다. 동시에 두 배포가 변경될 때는 정책 버전 비교로 충돌을 검출한다.

서버 역할

구성 역할
패키지 저장소 서명된 파일과 불변 메타데이터 보관
배포 API 인증, 장치·그룹 판정, 대상 버전 및 다운로드 권한 반환
관리 DB 릴리스, 그룹, 배포 정책, 승인 이력
결과 수집 다운로드·설치·실행 상태와 오류 집계

인터넷 배포는 오브젝트 저장소와 CDN, 사내망 배포는 내부 HTTPS 서버를 후보로 둔다. 특정 클라우드 사업자는 아직 정하지 않았다. 비공개 테스트 패키지는 실제 다운로드 경로에도 접근 통제를 적용한다.

버전별 패치는 최초 필수 범위에 포함한다. 릴리스마다 전체 설치 파일을 유지하고, 지원하는 기준 버전에는 변경분 패치를 함께 제공한다. 서버는 그룹의 목표 릴리스를 먼저 결정한 뒤 설치 상태에 맞는 패치 또는 전체 설치 파일을 선택한다. 적용 범위와 복구 정책은 버전별 패치를 따른다.

무결성과 보존

해시는 전송 중 변조·손상을 검출하지만 서버의 메타데이터와 해시가 함께 바뀌는 공격까지 막지는 못한다. 패키지의 Authenticode 서명과 배포 메타데이터 서명을 별도로 검토한다. 메타데이터에는 버전·만료·허용된 업그레이드 경로와 키 교체 정책이 필요하다. TUF 메타데이터 설계

현재 배포 대상, 복구 대상, 진행 중인 설치가 참조하는 패키지는 삭제하지 않는다. Store에 등록한 URL도 해당 버전의 배포 수명 동안 유지한다. 보존 기간은 사용자 접속 주기와 저장 비용을 확인한 뒤 확정한다.

패치 생성·검증에 필요한 기준 및 목표 MSI, 서명 완료 원본 파일, WiX 설치 정의와 빌드 정보도 해당 기준 버전의 지원 기간 동안 보관한다. 후속 패치가 의존하는 이전 패치·원본을 삭제하지 않는다. 패키지 등록 정보에는 지원하는 각 기준에서 목표 상태로 도달하는 검증 결과를 연결한다.