--- description: 릴리즈 빌드 및 배포 자동화 가이드 (GitHub CLI 기반) --- # 🚀 릴리즈 빌드 및 배포 워크플로우 이 가이드는 교대링(Shiftring) 프로젝트의 최신 버전을 빌드하고, APK를 배포 저장소(`dakjaba-releases`)에 업로드하며, 버전을 갱신하는 절차를 설명합니다. ## // turbo-all ## 1. 전제 조건 - **GitHub CLI (gh)**가 설치되어 있고 로그인되어 있어야 함 (`gh auth status`) - `release.jks`와 `keystore.properties`가 루트 폴더에 존재해야 함 ## 2. 배포 단계 ### 단계 1: 프로젝트 버전 확인 및 갱신 - `app/build.gradle.kts`의 `versionCode`와 `versionName`을 확인 및 갱신합니다. - `version.json`의 정보를 동일하게 맞춥니다. - `CHANGELOG.md`에 변경 사항을 기록합니다. - `README.md`의 다운로드 링크 및 버전을 갱신합니다. ### 단계 2: 릴리즈 빌드 수행 ```powershell ./gradlew.bat assembleRelease ``` - 빌드 결과물은 `app/build/outputs/apk/release/app-release.apk`에 생성됩니다. ### 단계 3: APK 서명 확인 (선택 사항) - 생성된 APK가 정상적으로 서명되었는지 확인합니다. ### 단계 4: 배포 저장소 업데이트 및 릴리즈 생성 // turbo ```powershell # 1. APK 파일 복사 (배포용 이름으로 변경) copy-item "app/build/outputs/apk/release/app-release.apk" "app.apk" -Force # 2. 버전 정보 설정 (현재 버전에 맞춰 수정) $VERSION = "v1.0.4" # 3. GitHub Release 생성 (dakjaba-releases 저장소) # tip: 이미 존재하는 태그라면 삭제 후 생성하거나 gh release edit 사용 gh release create $VERSION "app.apk" --title "Shiftring $VERSION" --notes-file "CHANGELOG.md" -R "sanjeok77-tech/dakjaba-releases" # 4. 배포 저장소(dakjaba-releases)의 version.json 및 최신 APK 갱신 (인앱 업데이트용) gh repo clone sanjeok77-tech/dakjaba-releases ..\dakjaba-releases-temp copy-item "version.json" "..\dakjaba-releases-temp\version.json" -Force copy-item "app.apk" "..\dakjaba-releases-temp\app.apk" -Force # 5. README.md 자동 업데이트 (v1.1.1 패턴 기반 교체 예시 - 실제 버전변수로 대체 필요) # tip: sed나 powershell replace를 사용하여 README의 vX.X.X 및 다운로드 링크를 갱신합니다. (Get-Content README.md) -replace 'v\d+\.\d+\.\d+', "$VERSION" | Set-Content README.md (Get-Content ..\dakjaba-releases-temp\README.md) -replace 'v\d+\.\d+\.\d+', "$VERSION" | Set-Content ..\dakjaba-releases-temp\README.md pushd ..\dakjaba-releases-temp git add . git commit -m "update: $VERSION" git push origin main popd Remove-Item -Recurse -Force ..\dakjaba-releases-temp ``` ### 단계 5: 소스 코드 커밋 및 푸시 ```powershell git add . git commit -m "chore: release $VERSION" git push origin main ``` --- *주의: 배포 저장소(`dakjaba-releases`)는 퍼블릭이며, 코드 저장소(`dakjaba`)는 프라이빗입니다. 배포 시 중요한 키 파일이 배포 저장소에 포함되지 않도록 주의하십시오.*