# Gitea 릴리즈 작업 가이드 > ShiftRing 프로젝트 Gitea 릴리즈 자동화 문서 > 저장소: https://git.webpluss.net/sanjeok77/ShiftRing --- ## 🔐 인증 정보 **Personal Access Token (PAT)** - 위치: `.env.local` 파일 - 형식: `e3b515eaa0a6683c921ca3bf718e281ed30a6075` - 사용자: `sanjeok77` **인증 헤더** ```bash -u "sanjeok77:TOKEN" ``` --- ## 📋 릴리즈 생성 절차 ### 1. 버전 업데이트 (3곳) #### 1.1 `app/build.gradle.kts` - 앱 날부 버전 ```kotlin defaultConfig { versionCode = 1125 // ← 이전: 1124 versionName = "1.2.5" // ← 이전: "1.2.4" } ``` #### 1.2 `version.json` - 서버 버전 정보 ```json { "versionCode": 1125, "versionName": "1.2.5", "apkUrl": "https://git.webpluss.net/attachments/{UUID}", "changelog": "v1.2.5: 변경사항 요약", "forceUpdate": false } ``` #### 1.3 Git 태그 및 릴리즈 - 태그: `v1.2.5` - 브랜치: `dev` (개발) → `main` (배포) --- ### 2. 릴리즈 생성 (API) **엔드포인트** ```bash POST https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases ``` **요청 예시** ```bash curl -X POST \ -H "Content-Type: application/json" \ -u "sanjeok77:TOKEN" \ "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases" \ -d '{ "tag_name": "v1.2.5", "name": "v1.2.5 - 릴리즈 제목", "body": "## 변경사항\n\n- 기능1\n- 기능2", "prerelease": false, "target_commitish": "dev" }' ``` **응답 예시** ```json { "id": 30, "tag_name": "v1.2.5", "upload_url": "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/30/assets" } ``` --- ### 3. APK 빌드 **릴리즈 빌드** ```bash ./gradlew :app:assembleRelease ``` **출력 경로** ``` app/build/outputs/apk/release/app-release.apk ``` **서명 설정** (`keystore.properties`) ```properties storePassword=비밀번호 keyAlias=별칭 keyPassword=비밀번호 storeFile=../release.jks ``` --- ### 4. APK 업로드 (API) **엔드포인트** ```bash POST https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/{release_id}/assets ``` **요청 예시** ```bash curl -X POST \ -u "sanjeok77:TOKEN" \ -H "Content-Type: multipart/form-data" \ -F "attachment=@app/build/outputs/apk/release/app-release.apk" \ "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/30/assets?name=app.apk" ``` **응답 예시** ```json { "id": 37, "name": "app.apk", "size": 5236988, "browser_download_url": "https://git.webpluss.net/attachments/b8f53c11-743f-416c-87ae-bd478c781abf" } ``` --- ### 5. version.json 업데이트 **APK URL 업데이트** ```json { "apkUrl": "https://git.webpluss.net/attachments/{UUID}" } ``` **주의**: `releases/download/v1.2.5/app.apk` 형식이 아닌 `attachments/{UUID}` 형식 사용 --- ## 🔧 유틸리티 명령어 ### 릴리즈 조회 ```bash curl -s -u "sanjeok77:TOKEN" \ "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases" | jq '.[].tag_name' ``` ### 특정 릴리즈 조회 ```bash curl -s -u "sanjeok77:TOKEN" \ "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/30" ``` ### 첨부파일 삭제 ```bash curl -s -u "sanjeok77:TOKEN" \ -X DELETE \ "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/30/assets/{asset_id}" ``` --- ## ⚠️ 주의사항 1. **버전 일치**: `build.gradle.kts`, `version.json`, Git 태그 3곳 모두 동일 버전 사용 2. **APK 파일명**: 반드시 `app.apk`로 업로드 (클리어 이름 지정) 3. **UUID**: 업로드 후 반환된 UUID를 `version.json`에 반영 4. **브랜치**: - 개발: `dev` 브랜치에 커밋 - 배포: `main` 브랜치에 cherry-pick --- ## 📁 관련 파일 | 파일 | 설명 | |------|------| | `app/build.gradle.kts` | 앱 날부 버전 설정 | | `version.json` | 서버 버전 정보 | | `keystore.properties` | 서명 키 설정 | | `release.jks` | 서명 키스토어 | | `.env.local` | API 토큰 저장 | --- ## 📝 변경 이력 | 날짜 | 버전 | 작업 | |------|------|------| | 2026-02-28 | v1.2.5 | 알람 시스템 단순화 릴리즈 | | 2026-02-28 | v1.2.4 | 버그 수정 릴리즈 | --- ## 🔗 참고 링크 - 릴리즈 페이지: https://git.webpluss.net/sanjeok77/ShiftRing/releases - API 문서: https://git.webpluss.net/api/swagger - Swagger UI: https://git.webpluss.net/api/swagger#/repository/repoCreateRelease