5.3 KiB
5.3 KiB
release 서명 정보 입력 구성 Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: release build variant가 git에 비밀값을 남기지 않고 서명 정보를 입력받아 실행될 수 있게 한다.
Architecture: app/build.gradle이 local.properties의 release signing 값을 읽고 signingConfigs.release에 연결한다. release 관련 task 실행 시 필수 값이 누락되면 Gradle 구성은 유지하되 실행 직전에 명확한 오류를 낸다.
Tech Stack: Android Gradle Plugin 8.13.0, Groovy Gradle DSL, local.properties, .gitignore
File Structure
- Modify:
app/build.gradle-local.properties로더, release signing config, release task 검증을 추가한다. - Modify:
.gitignore- 키스토어 확장자 ignore 규칙을 활성화한다. - Create:
docs/20260627_release_서명_정보_입력_구성/prd.md- 요구사항을 기록한다. - Create/Modify:
docs/20260627_release_서명_정보_입력_구성/plan-task.md- 구현 계획과 검증 기록을 누적한다.
Phase 1: 문서 준비
-
Task 1.1: PRD 문서 작성
- 파일:
docs/20260627_release_서명_정보_입력_구성/prd.md - 검증 기준: release signing 입력 위치, 비밀값 미커밋, 키스토어 ignore 요구사항이 명시되어야 한다.
- 검증 기록: 2026-06-27 문서 생성 시 요구사항을 PRD에 반영했다.
- 파일:
-
Task 1.2: 구현 계획 작성
- 파일:
docs/20260627_release_서명_정보_입력_구성/plan-task.md - 검증 기준: 변경 파일, phase, task, 검증 명령이 명시되어야 한다.
- 검증 기록: 2026-06-27 구현 전 변경 파일과 검증 기준을 계획 문서에 기록했다.
- 파일:
Phase 2: release signing 입력 연결
-
Task 2.1: local.properties 기반 signing config 추가
- 파일:
app/build.gradle - 구현 내용:
local.properties를Properties로 읽는다.RELEASE_STORE_FILE,RELEASE_STORE_PASSWORD,RELEASE_KEY_ALIAS,RELEASE_KEY_PASSWORD를 release signing config에 연결한다.buildTypes.release에signingConfig signingConfigs.release를 지정한다.
- 검증 기준:
app/build.gradle에 실제 비밀번호나 alias 값이 하드코딩되지 않아야 한다../gradlew tasks --all이 성공해야 한다.
- 검증 기록: 2026-06-27
app/build.gradle에local.properties기반 release signing config를 추가하고 실제 비밀번호/alias 값은 하드코딩하지 않았다../gradlew tasks --all실행 결과 BUILD SUCCESSFUL을 확인했다.
- 파일:
-
Task 2.2: release task 누락 값 검증 추가
- 파일:
app/build.gradle - 구현 내용:
- release 관련 task 실행 시 필수 property 누락 목록을 포함한
GradleException을 발생시킨다. - debug 관련 task는 release signing 값이 없어도 실행 가능해야 한다.
- release 관련 task 실행 시 필수 property 누락 목록을 포함한
- 검증 기준:
./gradlew :app:assembleRelease실행 시 실제 서명 값이 없으면 누락 property명을 안내해야 한다../gradlew tasks --all은 release signing 값 없이도 성공해야 한다.
- 검증 기록: 2026-06-27
./gradlew :app:assembleRelease실행 시RELEASE_STORE_FILE,RELEASE_STORE_PASSWORD,RELEASE_KEY_ALIAS,RELEASE_KEY_PASSWORD누락 안내와 함께 의도된 실패를 확인했다../gradlew :app:compileDebugKotlin은 BUILD SUCCESSFUL로 완료되어 debug 경로가 release signing 값 없이 동작함을 확인했다.
- 파일:
Phase 3: git 비밀값 보호
- Task 3.1: 키스토어 ignore 규칙 활성화
- 파일:
.gitignore - 구현 내용:
*.jks,*.keystore,*.p12,*.pem,*.key를 ignore한다.- 기존
local.propertiesignore 규칙은 유지한다.
- 검증 기준:
.gitignore에 키스토어 확장자가 주석이 아닌 ignore 규칙으로 존재해야 한다.
- 검증 기록: 2026-06-27
.gitignore에서*.jks,*.keystore,*.p12,*.pem,*.key가 주석이 아닌 ignore 규칙으로 존재함을 확인했다. 기존local.propertiesignore 규칙도 유지했다.
- 파일:
Phase 4: 검증
- Task 4.1: Gradle 설정 검증
- 파일:
docs/20260627_release_서명_정보_입력_구성/plan-task.md - 실행 명령:
./gradlew tasks --all./gradlew :app:assembleRelease./gradlew :app:compileDebugKotlin
- 기대 결과:
tasks --all은 성공한다.- 실제 release signing 값이 없는 환경에서는
assembleRelease가 누락 property명을 포함한 오류로 실패한다. - debug Kotlin 컴파일은 release signing 값 없이 성공한다.
- 검증 기록: 2026-06-27
./gradlew tasks --all은 BUILD SUCCESSFUL,./gradlew :app:assembleRelease는 release signing property 4개 누락 안내로 의도된 실패,./gradlew :app:compileDebugKotlin은 BUILD SUCCESSFUL을 확인했다.
- 파일:
Verification Log
- 2026-06-27: 구현 전
app/build.gradle에signingConfigs가 없고.gitignore에local.properties가 ignore되어 있음을 확인했다. - 2026-06-27: 최초
./gradlew tasks --all검증에서 Gradleplugins {}블록 앞 실행문 배치 오류를 확인했다.local.properties로딩 코드를plugins {}뒤로 이동한 뒤 동일 명령이 BUILD SUCCESSFUL로 완료됐다.