Files
ShiftRing/GITEA_RELEASE_GUIDE.md
sanjeok77 6fb83848f5 docs: Gitea 릴리즈 작업 가이드 추가
- 릴리즈 생성 절차 문서화
- API 엔드포인트 및 예시 명령어 정리
- 버전 업데이트 체크리스트 포함
- 인증 정보 및 주의사항 기록

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-28 18:37:32 +09:00

4.3 KiB

Gitea 릴리즈 작업 가이드

ShiftRing 프로젝트 Gitea 릴리즈 자동화 문서 저장소: https://git.webpluss.net/sanjeok77/ShiftRing


🔐 인증 정보

Personal Access Token (PAT)

  • 위치: .env.local 파일
  • 형식: e3b515eaa0a6683c921ca3bf718e281ed30a6075
  • 사용자: sanjeok77

인증 헤더

-u "sanjeok77:TOKEN"

📋 릴리즈 생성 절차

1. 버전 업데이트 (3곳)

1.1 app/build.gradle.kts - 앱 날부 버전

defaultConfig {
    versionCode = 1125        // ← 이전: 1124
    versionName = "1.2.5"     // ← 이전: "1.2.4"
}

1.2 version.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)

엔드포인트

POST https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases

요청 예시

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"
  }'

응답 예시

{
  "id": 30,
  "tag_name": "v1.2.5",
  "upload_url": "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/30/assets"
}

3. APK 빌드

릴리즈 빌드

./gradlew :app:assembleRelease

출력 경로

app/build/outputs/apk/release/app-release.apk

서명 설정 (keystore.properties)

storePassword=비밀번호
keyAlias=별칭
keyPassword=비밀번호
storeFile=../release.jks

4. APK 업로드 (API)

엔드포인트

POST https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/{release_id}/assets

요청 예시

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"

응답 예시

{
  "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 업데이트

{
  "apkUrl": "https://git.webpluss.net/attachments/{UUID}"
}

주의: releases/download/v1.2.5/app.apk 형식이 아닌 attachments/{UUID} 형식 사용


🔧 유틸리티 명령어

릴리즈 조회

curl -s -u "sanjeok77:TOKEN" \
  "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases" | jq '.[].tag_name'

특정 릴리즈 조회

curl -s -u "sanjeok77:TOKEN" \
  "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/30"

첨부파일 삭제

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 버그 수정 릴리즈

🔗 참고 링크