Files
ShiftRing/.agent/workflows/push.md

71 lines
3.0 KiB
Markdown

---
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`)는 프라이빗입니다. 배포 시 중요한 키 파일이 배포 저장소에 포함되지 않도록 주의하십시오.*