docs(release): release 서명 요구사항을 기록한다
This commit is contained in:
59
docs/20260627_release_서명_정보_입력_구성/prd.md
Normal file
59
docs/20260627_release_서명_정보_입력_구성/prd.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# PRD: release 서명 정보 입력 구성
|
||||
|
||||
## 1. Overview
|
||||
`release` build variant를 실행할 수 있도록 Android release signing 입력 위치를 마련한다.
|
||||
|
||||
## 2. Problem
|
||||
- 현재 `app/build.gradle`에는 release signing 설정이 없어 Android Studio에서 `release` build variant 실행에 필요한 서명 정보를 연결할 수 없다.
|
||||
- `build.gradle`에 key password, key store password, key alias를 직접 쓰면 저장소에 비밀값이 포함될 위험이 있다.
|
||||
- git에 키스토어 파일이나 서명 비밀값이 포함되지 않아야 한다.
|
||||
|
||||
## 3. Goals
|
||||
- `local.properties`에 release 서명 정보를 입력할 수 있다.
|
||||
- `app/build.gradle`에는 실제 key password, key store password, key alias 값이 남지 않는다.
|
||||
- git ignore 규칙으로 키스토어 파일이 실수로 커밋되지 않도록 한다.
|
||||
- release 빌드/실행 시 서명 정보가 누락되면 어떤 값을 입력해야 하는지 알 수 있는 오류를 제공한다.
|
||||
|
||||
## 4. Non-Goals
|
||||
- 실제 키스토어 파일이나 실제 비밀번호 값을 생성하거나 저장하지 않는다.
|
||||
- 기존 `debug` build variant 설정은 변경하지 않는다.
|
||||
- `BuildConfig`에 존재하는 기존 값 정리는 이번 범위에 포함하지 않는다.
|
||||
|
||||
## 5. Target Users
|
||||
- Android Studio에서 `release` build variant로 앱을 실행하거나 release APK/AAB를 생성해야 하는 개발자.
|
||||
|
||||
## 6. User Stories
|
||||
- 개발자는 `local.properties`에 `RELEASE_STORE_FILE`, `RELEASE_STORE_PASSWORD`, `RELEASE_KEY_ALIAS`, `RELEASE_KEY_PASSWORD`를 입력하고 release variant를 실행하고 싶다.
|
||||
- 개발자는 서명 비밀값이 `build.gradle`이나 git에 포함되지 않기를 원한다.
|
||||
|
||||
## 7. Core Features
|
||||
|
||||
### Feature A: release signing properties
|
||||
`app/build.gradle`에서 `local.properties`를 읽어 release signing config에 연결한다.
|
||||
|
||||
#### Requirements
|
||||
- `RELEASE_STORE_FILE`은 키스토어 파일 경로로 사용한다.
|
||||
- `RELEASE_STORE_PASSWORD`는 key store password로 사용한다.
|
||||
- `RELEASE_KEY_ALIAS`는 key alias로 사용한다.
|
||||
- `RELEASE_KEY_PASSWORD`는 key password로 사용한다.
|
||||
- 위 값은 `build.gradle`에 하드코딩하지 않는다.
|
||||
- release 관련 Gradle task 실행 시 누락된 키가 있으면 명확한 오류를 발생시킨다.
|
||||
|
||||
#### Edge Cases
|
||||
- `local.properties`가 없거나 일부 값이 비어 있으면 debug 빌드 설정에는 영향을 주지 않는다.
|
||||
- release 관련 task 실행 시 누락된 값 목록을 안내한다.
|
||||
|
||||
### Feature B: git 비밀값 보호
|
||||
키스토어 확장자를 `.gitignore`에서 실제 ignore 대상으로 활성화한다.
|
||||
|
||||
#### Requirements
|
||||
- `*.jks`, `*.keystore`, `*.p12`, `*.pem`, `*.key`를 ignore한다.
|
||||
- `local.properties`는 기존처럼 ignore 상태를 유지한다.
|
||||
|
||||
## 8. Technical Constraints
|
||||
- Android Gradle Groovy DSL인 `app/build.gradle`을 사용한다.
|
||||
- 저장소 루트에서 Gradle 명령을 실행한다.
|
||||
- 변경은 `app/build.gradle`, `.gitignore`, 작업 문서로 제한한다.
|
||||
|
||||
## 9. Open Questions
|
||||
- 없음. 키스토어 파일 경로까지 `local.properties`에 입력하는 설계로 진행한다.
|
||||
Reference in New Issue
Block a user