From f4f5599117111cb340c1802a85e327d7f9364bdc Mon Sep 17 00:00:00 2001 From: sanjeok77-tech Date: Sun, 22 Feb 2026 13:33:01 +0900 Subject: [PATCH] =?UTF-8?q?Release=20v1.1.9=20-=20APK=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EA=B0=80=EC=9D=B4=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .agent/workflows/GIT_PUSH_GUIDE.md | 143 ----------------------------- .agent/workflows/push.md | 70 -------------- RELEASE_UPLOAD_GUIDE.md | 55 +++++++++++ agent.md | 31 ++----- 4 files changed, 65 insertions(+), 234 deletions(-) delete mode 100644 .agent/workflows/GIT_PUSH_GUIDE.md delete mode 100644 .agent/workflows/push.md create mode 100644 RELEASE_UPLOAD_GUIDE.md diff --git a/.agent/workflows/GIT_PUSH_GUIDE.md b/.agent/workflows/GIT_PUSH_GUIDE.md deleted file mode 100644 index c678cd3..0000000 --- a/.agent/workflows/GIT_PUSH_GUIDE.md +++ /dev/null @@ -1,143 +0,0 @@ -# Git 푸시 성공 가이드 - -## 빠른 실행 - -```bash -# 1. gh CLI 인증 확인 -./gh.exe auth status - -# 2. 인증이 안 되어 있으면 로그인 -./gh.exe auth login --web - -# 3. Git에 gh 인증 설정 -./gh.exe auth setup-git - -# 4. 푸시 -git push shiftring main -``` - ---- - -## 상세 절차 - -### 1. GitHub CLI 인증 - -```bash -# 인증 상태 확인 -./gh.exe auth status -``` - -**인증이 안 된 경우:** -```bash -./gh.exe auth login --web -``` -- One-time code가 표시됨 (예: C7EF-30B3) -- https://github.com/login/device 접속 -- 코드 입력 후 인증 완료 - -### 2. Git에 gh 인증 연동 - -```bash -./gh.exe auth setup-git -``` - -### 3. 푸시 실행 - -```bash -# shiftring remote 사용 (agent.md에 정의됨) -git push shiftring main - -# 또는 origin 사용 -git push origin main -``` - ---- - -## 저장소 정보 - -| Remote | URL | 용도 | -|--------|-----|------| -| origin | https://github.com/sanjeok77-tech/ShiftRing.git | 코드 저장소 | -| shiftring | https://github.com/sanjeok77-tech/ShiftRing.git | 코드 저장소 (동일) | - ---- - -## 문제 해결 - -### "Cannot prompt because user interactivity has been disabled" - -**원인**: 환경 변수로 인해 인터랙티브 프롬프트가 비활성화됨 - -**해결**: -```bash -# gh CLI로 인증 설정 -./gh.exe auth setup-git - -# 그 다음 푸시 -git push shiftring main -``` - -### "Host key verification failed" (SSH) - -**원인**: SSH 키가 설정되지 않음 - -**해결**: HTTPS 사용 -```bash -git remote set-url origin https://github.com/sanjeok77-tech/ShiftRing.git -``` - ---- - -## 릴리즈 푸시 (dakjaba-releases) - -```bash -# 1. 버전 파일 업데이트 -# version.json, CHANGELOG.md, README.md 수정 - -# 2. APK 복사 -cp app/build/outputs/apk/release/app-release.apk app.apk - -# 3. GitHub Release 생성 -./gh.exe release create v1.1.4 "app.apk" \ - --title "Shiftring v1.1.4" \ - --notes "릴리즈 노트" \ - -R "sanjeok77-tech/dakjaba-releases" - -# 4. dakjaba-releases 저장소 업데이트 -./gh.exe repo clone sanjeok77-tech/dakjaba-releases ../dakjaba-releases-temp -cp version.json ../dakjaba-releases-temp/ -cp app.apk ../dakjaba-releases-temp/ -cd ../dakjaba-releases-temp -git add . && git commit -m "update: vX.X.X" && git push origin main -cd .. -rm -rf dakjaba-releases-temp - -# 5. 소스 코드 커밋 및 푸시 -cd /c/Users/work/Desktop/1.0.0 -git add . && git commit -m "chore: release vX.X.X" -git push shiftring main -``` - ---- - -## 성공 사례 (2026-02-21) - -```bash -$ ./gh.exe auth status -github.com - ✓ Logged in to github.com account sanjeok77-tech (keyring) - - Active account: true - - Git operations protocol: https - - Token: gho_************************************ - -$ ./gh.exe auth setup-git -git: authorization completed - -$ git push shiftring main -To https://github.com/sanjeok77-tech/ShiftRing.git - a848cd8..c72db7f main -> main -``` - ---- - -**최종 수정**: 2026-02-21 diff --git a/.agent/workflows/push.md b/.agent/workflows/push.md deleted file mode 100644 index 1c950ce..0000000 --- a/.agent/workflows/push.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -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`)는 프라이빗입니다. 배포 시 중요한 키 파일이 배포 저장소에 포함되지 않도록 주의하십시오.* diff --git a/RELEASE_UPLOAD_GUIDE.md b/RELEASE_UPLOAD_GUIDE.md new file mode 100644 index 0000000..1fafc1d --- /dev/null +++ b/RELEASE_UPLOAD_GUIDE.md @@ -0,0 +1,55 @@ +# Gitea Release에 APK 업로드 방법 + +## 환경 +- Git 호스팅: git.webpluss.net (Gitea) +- 저장소: sanjeok77/ShiftRing +- 태그: v1.1.9 +- APK 경로: C:\Users\work\Desktop\1.0.0\app.apk + +## 1. Release ID 확인 + +```bash +# Release 목록 조회 +curl -s "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases" +``` + +응답에서 Release ID 확인 (예: `id: 5`) + +## 2. APK 업로드 + +```bash +# Personal Access Token 사용 +curl -s -u "username:TOKEN" \ + -X POST "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/5/assets" \ + -F "attachment=@C:/Users/work/Desktop/1.0.0/app.apk" \ + -F "name=app.apk" +``` + +## 3. 릴리즈 설명 수정 (한글 깨짐 방지) + +```bash +# --data-binary 사용하고 stdin으로 JSON 전달 +curl -s -u "sanjeok77:TOKEN" \ + -X PATCH "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/5" \ + -H "Content-Type: application/json; charset=utf-8" \ + --data-binary @- << 'EOF' +{"body":"## v1.1.9 - 수정 내용\n\n- 수정사항 1\n- 수정사항 2\n\nNo description provided"} +EOF +``` + +### 한글 깨짐 방지 팁 +- `-H "Content-Type: application/json; charset=utf-8"` 추가 +- `--data-binary @-` 사용 (stdin에서 읽기) +- `<< 'EOF'` 로 HEREDOC 사용 (변수展開 방지) + +## 4. 확인 + +```bash +# 릴리즈 정보 조회 +curl -s "https://git.webpluss.net/api/v1/repos/sanjeok77/ShiftRing/releases/5" +``` + +## 참고 +- GitLab이 아닌 **Gitea** 이므로 API 경로가 다름 +- GitLab: `/api/v4/projects/:id/releases` +- Gitea: `/api/v1/repos/:owner/:repo/releases/:id` diff --git a/agent.md b/agent.md index 4baeb18..cbf227b 100644 --- a/agent.md +++ b/agent.md @@ -46,42 +46,31 @@ ``` ### 3.3 릴리즈 순서 + +> **참고**: Gitea Release APK 업로드 방법은 [RELEASE_UPLOAD_GUIDE.md](./RELEASE_UPLOAD_GUIDE.md) 문서를 참조하세요. + 1. **버전 업데이트**: `build.gradle.kts`에서 `versionCode`와 `versionName`을 올린다. - - 예: `versionCode = 101`, `versionName = "1.0.1"` + - 예: `versionCode = 1120`, `versionName = "1.2.0"` 2. **빌드**: 릴리즈 빌드 수행 ```bash ./gradlew assembleRelease ``` -3. **릴리즈 생성**: GitLab 웹 인터페이스 또는 CLI 사용 - ```bash - # 1) ShiftRing 리포지토리에 푸시 - git push shiftring main - - # 2) 기존 릴리즈 삭제 (필요시) - gh release delete v1.0.1 --repo sanjeok77/ShiftRing -y - - # 3) 신규 릴리즈 생성 - gh release create v1.0.1 \ - --repo sanjeok77/ShiftRing \ - --title "v1.0.1 - 릴리즈 제목" \ - --notes "릴리즈 노트 내용" \ - app/build/outputs/apk/release/app-release.apk - ``` +3. **릴리즈 생성**: Gitea API 또는 웹 인터페이스 사용 + - 자세한 방법은 [RELEASE_UPLOAD_GUIDE.md](./RELEASE_UPLOAD_GUIDE.md) 참조 4. **version.json 업데이트**: ShiftRing 리포지토리 루트에 `version.json` 파일 생성/수정 ```json { - "versionCode": 101, - "versionName": "1.0.1", - "apkUrl": "https://git.webpluss.net/sanjeok77/ShiftRing/releases/download/v1.0.0/app.apk", + "versionCode": 1120, + "versionName": "1.2.0", + "apkUrl": "https://git.webpluss.net/sanjeok77/ShiftRing/releases/download/v1.2.0/app.apk", "changelog": "수정사항 요약" } ``` 5. **소스 코드 커밋**: 코드 저장소에 변경 사항 푸시 ```bash git add -A - git commit -m "Release v1.0.1" + git commit -m "Release v1.2.0" git push origin main - git push shiftring main ``` ### 3.4 저장소 정보 (단일 저장소 전략)