Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: set release docs #2

Draft
wants to merge 7 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,9 @@


### 코드 스타일 컨벤션 (Android, Kotlin)


### TF별 배포 플로우
#### [Soomsil 배포 플로우](./release-flow-docs./Soomsil)
#### [YDS 배포 플로우](./release-flow-docs./YDS)
#### [Handy 배포 플로우](./release-flow-docs./Handy)
88 changes: 88 additions & 0 deletions release-flow-docs/dokka-release-docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
### 현재 Handy Docs Link

[Handy](https://yourssu.github.io/Handy-Android/docs/0.x/)

---

### Dokka 배포 방법
Handy에서 Dokka를 통한 코드 문서화 진행 과정 시의 기록입니다. 참고해주세요.

1. **gradle 세팅**

```yaml
jetbrains-dokka = { id = "org.jetbrains.dokka", version = "1.9.20" }

plugins {
alias(libs.plugins.jetbrains.dokka)
}
```

2. **yml 파일 생성**

```yaml
- .github
- workflow
-release.yml
```

3. **yml 코드 작성 Workflow file (release.yml)**

```yaml
# workflow 파일명입니다.
name: release

# 워크플로우가 언제 실행될지 시점
on:
push:
branches:
- main # main branch에 merge 또는 push될 때 실행

jobs:
release:
# 실행 환경
runs-on: ubuntu-latest

# steps: 작업 수행 단계입니다.

steps:

# echo
- run: echo "Starting Release"


# 현재 사용 중인 Java 버전은 11 그러나
# Android Gradle Plugin(com.android.application 버전 8.5.0)은 Java 17 이상을 필요

name: set up JDK 17
- uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "temurin" #JDK 배포판(distribution)을 temurin로

# gradlew은 파일의 루트 디렉토리에 위치해야 함
# checkout을 하지 않으면 gradlew을 찾지 못할 수 있음
name: checkout
- uses: actions/checkout@v4 # v4 사용

# 파일 실행 권한 부여
name: permissions
- run: chmod +x gradlew

# Dokka를 사용하여 HTML 파일을 생성
name: Build Documentation
- run: ./gradlew dokkaHtml

# 생성된 HTML 파일을 gh-pages 브랜치에 배포
name: Deploy Documentation to GitHub Pages
- uses: JamesIves/github-pages-deploy-action@v4

with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages # 배포 브랜치
folder: compose/build/dokka/html # 배포하고자 하는 모듈의 html주소
target-folder: docs/0.x/ # 배포될 파일이 저장될 위치
```

4. **배포**

[참고자료](https://velog.io/@cmsong111/Dokka%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-%EC%BD%94%EB%93%9C-%EB%AC%B8%EC%84%9C%ED%99%94-with-%EB%B0%B0%ED%8F%AC)
142 changes: 142 additions & 0 deletions release-flow-docs/release-docs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
## Android 팀 배포 플로우



### 개요

Android 팀의 배포 프로세스를 효율적으로 관리하고 모든 팀원이 일관되게 작업할 수 있도록, 배포 플로우를 정리한 문서입니다.

### 1. 브랜치 전략

- `main` branch: 안정된 코드를 유지하며, 최종 배포를 위한 branch



- `develop` branch: 개발 중인 기능을 통합하는 branch



- `feature` branch: 각 기능별로 분리된 branch
- 명명 규칙 : github convention 참고 //TODO 파일 위치 링킹



### 2. 버전 관리

`Semantic Versioning` (SemVer) 규칙 사용

`MAJOR`: 주요 변경 사항, 이전 버전과 호환되지 않는 큰 변경이 있을 때 증가 (예: API 변경, 큰 디자인 개편)

`MINOR`: 새로운 기능이 추가되었지만, 이전 버전과 호환이 유지될 때 증가

`PATCH`: 버그 수정이나 사소한 변경 등, 호환성을 해치지 않는 수정 사항에 대해 증가

```
1.0.0 → 첫 번째 정식 출시 버전.

1.1.0 → 새로운 기능이 추가되었을 때.

1.1.1 → 버그가 수정되었을 때.
```


`versionCode`라는 정수 값을 사용하여 각 버전을 고유하게 식별한다.

이는 Play Store에서 업데이트를 관리하는 데 사용되며, 항상 증가해야 한다.

```
versionCode=1 (초기 릴리스)

versionCode=2 (첫 번째 업데이트)
```
version.properties 또는 build.gradle 파일에서 관리된다.

```
versionCode 2
versionName "1.1.0"
```


자세한 설명은 [공식문서](https://developer.android.com/studio/publish/versioning?hl=ko#versioningsettings)를 참고해주세요.



### 3. 배포 준비

#### 일반적인 배포 플로우
```mermaid
---
title: 일반적인 배포 플로우
---
gitGraph
commit
commit
branch develop
commit
branch featureA
checkout featureA
commit
commit
checkout develop
merge featureA
commit
branch deploy
commit tag: "for QA"
checkout develop
branch release/1.3.5
commit tag: "add 1.3.5.txt"
checkout main
merge release/1.3.5 tag: "run deploy workflow"
```

1. Develop 브랜치에서 Release 브랜치 생성

2. 릴리스 관련 설정 업데이트 (버전 이름, 버전 코드 등)

3. Release 브랜치에서 서명된 APK 생성 및 빌드 확인

4. 스토어 등록 정보 수정

5. versionName 및 version properties 파일에서 버전 정보 수정

6. 스토어 업로드 및 Github Actions 실행

6.1. `스토어 업로드 및 Github Actions 실행`은 수동으로도 가능하며, 자동으로 관리를 원한다면 [Soomsil 배포 플로우](./release-flow-docs./Soomsil) 확인

7. 스토어 등록 후 Main 브랜치에 병합

8. Main 브랜치에서 태그 생성 및 푸시

9. GitHub Release 태그 생성 및 관리



#### GitHub Release 태그 생성 시 과정



1. **Tag version**: v버전명 형식으로 작성 (예: v1.2.3)



2. **Target**: 릴리스할 브랜치나 커밋 선택 (보통 main)



3. **Release title**: 릴리스 이름 작성 (예: Release v1.2.3)



4. **Description**: 변경 사항 및 릴리스 노트 추가







### 4. 배포 후 모니터링



배포 후 Google Play Console 및 Crashlytics를 통해 에러 모니터링할 수 있습니다.