Skip to content

Conversation

@oungsi2000
Copy link
Contributor

@oungsi2000 oungsi2000 commented Nov 26, 2025

#️⃣ 이슈 번호

#2


🛠️ 작업 내용

  1. Android Wiki 이전 완료. 추가적으로 수정하고 싶으신 부분이 있다면 수정 부탁드립니다.
  2. Github Secret 이전 완료
  3. Android CI 재작성
  4. Android-Release-Drafter 스크립트 작성

🙇🏻 중점 리뷰 요청

1. coderabbiy.yaml, common workflow 삭제

coderabbit, common 스크립트의 경우 Organization에서 공통으로 관리하는게 좋다고 생각했습니다.
목요일 회의 때 건의해보겠습니다.

2. CI 스크립트 변경

불필요한 ./gradlew clean을 제거, 명시적으로 유닛 테스트만 실행하도록 변경
CI 환경에서는 Android Runtime을 시뮬레이션 하기가 어렵다고 판단했습니다.

3. CD 스크립트 논의,

현재는 main에 push 시, app bundle을 Github Artifact로 업로드하는 방식을 사용하고 있습니다. (업로드한 파일을 직접 PlayStore에 배포)
스크립트를 작성하면서 생각이 바뀌었습니다.
해당 아티팩트를 사용을 지양하는것이 어떤가 생각합니다.
android, ios 둘 다 별도의 아티팩트를 사용해야 하니 복잡성이 증가하는 것 같습니다.
추후 MultiPlatform 전환 시, Fastlane과 같은 도구를 이용해 배포 방법을 통일하는 것이 더 유지보수가 용이할 것 같습니다.

4. Release Draft

main에 머지 시, develop 브랜치에 자동 merge 하도록 스크립트를 작성했습니다.
--no-ff 사용 시 , develop -> main 머지 시에 불필요한 커밋이 생깁니다.
rebase 사용 시, main 커밋 뒤에 지금까지 작업한 develop을 병합하여 불필요한 충돌이 발생할 여지가 있습니다.

Release Drafter는 기존의 파일을 재사용하였습니다.
버전의 경우 versionName에서 추출한 값을 사용하도록 재구성하였습니다.

5. 실제 CI 적용

현재는 CI를 적용 시, 무조건 실패할 것입니다.
이유는 대부분의 파일에 ktlint가 적용되지 않았고, 분실물 Compose 마이그레이션의 테스트 코드를 수정하지 않았기 때문입니다.
CI 테스트 결과, 약 50개의 파일의 변경사항이 확인되어 이 부분은 추후 다같이 적용해야 할 것 같습니다.

참고

https://github.com/oungsi2000/repo-move-test


📸 이미지 첨부 (Optional)

`main` 브랜치에 코드가 푸시될 때, 자동으로 릴리스 빌드, 릴리스 노트 초안 작성, `develop` 브랜치로의 변경 사항 병합을 수행하는 `android-release-drafter.yml` 워크플로우를 추가했습니다.

- **Deploy**: 릴리스 AAB(Android App Bundle)를 빌드하고 아티팩트로 업로드합니다.
- **Release-Drafter**: `release-drafter`를 사용하여 릴리스 노트를 업데이트합니다.
- **Reflect-Changes-Into-Develop**: `main` 브랜치의 변경 사항을 `develop` 브랜치로 자동으로 병합합니다.

test: NewsViewModel 테스트 코드 수정

- `loadAllLostItems` 테스트에서 초기 상태(`LostUiState.InitialLoading`)를 명시적으로 전달하도록 수정했습니다.
- 분실물 아이템 클릭 이벤트 테스트를 제거했습니다.
- `lostUiState`를 검증할 때 `getOrAwaitValue()`를 사용하지 않도록 변경했습니다.

feat: ktlint app 수준에서 적용
- **테스트 코드 개선**
  - 불필요한 테스트 파일(`ExampleInstrumentedTest.kt`)을 삭제하고, `.gitkeep` 파일을 추가했습니다.
  - 테스트 코드 전반의 네이밍을 수정하고, given-when-then 주석과 코드 사이에 공백을 추가하여 가독성을 높였습니다.
  - 다양한 ViewModel 테스트에서 불필요한 `ViewModelScope` 및 기타 import 문을 제거했습니다.
  - 일부 ViewModel 생성자에서 더 이상 사용되지 않는 `ViewModelProvider.Factory` 관련 코드를 정리했습니다.

- **기타 리팩토링**
  - 사용되지 않는 import 문과 코드를 정리했습니다.
  - 코드 포맷팅을 통해 전반적인 코드 스타일을 통일했습니다.

chore: coderabbit 세팅

`.coderabbit.yaml` 파일에서 백엔드 및 프론트엔드 관련 경로(`backend/**`, `frontend/**`)에 대한 리뷰 지침을 제거했습니다.
이제 모든 경로(`/**`)에 대해 기존 안드로이드 리뷰 지침이 공통으로 적용됩니다.

feat: Android CI 워크플로우 개선

- **PR 대상 브랜치 변경:**
  - 기존 `main`, `develop` 브랜치에 더해 `android-prod`, `android-dev` 브랜치를 PR 대상으로 추가했습니다.

- **`working-directory` 제거:**
  - 워크플로우 전역에 설정되어 있던 `working-directory: android`를 제거하여, 각 스텝이 프로젝트 루트에서 실행되도록 수정했습니다.

- **캐시 키 경로 수정:**
  - Gradle 캐시 키 생성 시, `android/` 접두사가 붙은 경로를 루트 기준의 상대 경로(`**/...`)로 변경했습니다.

- **`clean` 작업 제거:**
  - 불필요한 `./gradlew clean` 단계를 제거했습니다.

- **단위 테스트 분기 처리:**
  - PR의 베이스 브랜치에 따라 다른 테스트 명령어를 실행하도록 수정했습니다.
    - `develop` 브랜치 대상 PR: `testDebugUnitTest` 실행
    - `main` 브랜치 대상 PR: `testReleaseUnitTest` 실행

- **테스트 결과 경로 수정:**
  - `publish-unit-test-result-action`에서 사용하는 테스트 결과 XML 파일의 경로를 `android/app/build/...`에서 `app/build/...`로 수정했습니다.

chore: Slack 알림 관련 워크플로우 파일 제거

- PR 생성 및 리뷰 준비 시점에 리뷰 요청을 보내는 `common-slack-notify-opened.yml` 워크플로우를 삭제했습니다.
- 재리뷰 요청 시 알림을 보내는 `common-slack-notify-rerequested.yml` 워크플로우를 삭제했습니다.
- 리뷰 완료(approved, changes_requested) 시점에 알림을 보내는 `common-slack-notify-submitted.yml` 워크플로우를 삭제했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

fix(.github): Release Drafter 워크플로우 오타 수정 및 파일 삭제

- `.github/workflows/release-drafter.yml`: 사용하지 않는 `release-drafter.yml` 워크플로우 파일을 삭제했습니다.
- `.github/workflows/android-release-drafter.yml`: Git 사용자 이메일 설정에서 누락된 따옴표를 추가하여 구문 오류를 수정했습니다.

feat: 수동 배포를 위한 `workflow_dispatch` 추가

Android 릴리스 워크플로우(`android-release-drafter.yml`)에 `workflow_dispatch` 이벤트를 추가하여 GitHub Actions UI에서 수동으로 배포를 실행할 수 있도록 변경했습니다.

- **수동 실행 옵션 추가:**
  - `track`: 배포할 Play Store 트랙 (internal, alpha, beta, production)
  - `status`: 업로드할 아티팩트의 릴리스 상태 (draft, inProgress, completed, halted)
  - `release_notes_path`: 릴리스 노트 파일 경로 (선택)
  - `release_name`: 릴리스 이름 재정의 (선택)

- **Google Play 업로드 단계 추가:**
  - `r0adkll/upload-google-play` 액션을 사용하여 빌드된 AAB 파일을 Google Play Store에 업로드하는 단계를 추가했습니다.
  - 수동 실행 시 입력된 `track`과 `status`를 사용하고, 기본값으로는 `production`과 `draft`를 사용하도록 설정했습니다.
@coderabbitai
Copy link

coderabbitai bot commented Nov 26, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch cicd/2

Tip

📝 Customizable high-level summaries are now available in beta!

You can now customize how CodeRabbit generates the high-level summary in your pull requests — including its content, structure, tone, and formatting.

  • Provide your own instructions using the high_level_summary_instructions setting.
  • Format the summary however you like (bullet lists, tables, multi-section layouts, contributor stats, etc.).
  • Use high_level_summary_in_walkthrough to move the summary from the description to the walkthrough section.

Example instruction:

"Divide the high-level summary into five sections:

  1. 📝 Description — Summarize the main change in 50–60 words, explaining what was done.
  2. 📓 References — List relevant issues, discussions, documentation, or related PRs.
  3. 📦 Dependencies & Requirements — Mention any new/updated dependencies, environment variable changes, or configuration updates.
  4. 📊 Contributor Summary — Include a Markdown table showing contributions:
    | Contributor | Lines Added | Lines Removed | Files Changed |
  5. ✔️ Additional Notes — Add any extra reviewer context.
    Keep each section concise (under 200 words) and use bullet or numbered lists for clarity."

Note: This feature is currently in beta for Pro-tier users, and pricing will be announced later.


Comment @coderabbitai help to get the list of available commands and usage tips.

@oungsi2000 oungsi2000 changed the title feat: Android CD 워크플로우 추가 [CI/CD] Android Ci, CD 워크플로우 작성 Nov 26, 2025
Copy link
Contributor

@parkjiminnnn parkjiminnnn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생했어요 밀러!!


on:
pull_request:
# 'main' 또는 'android' 브랜치로 PR이 병합될 때 트리거
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

android가 아니라 dev 브랜치 말씀하시는거겠죠?!

Pull Request의 생명주기에 맞춰 Slack으로 알림을 보내는 세 가지 워크플로우를 추가했습니다. GitHub 사용자 이름을 Slack ID에 매핑하여 개인에게 멘션을 보냅니다.

- **`common-slack-notify-opened.yml` (최초 리뷰 요청)**
  - PR이 `opened` 되거나 `ready_for_review` 상태가 될 때 실행됩니다.
  - 지정된 리뷰어들에게 리뷰 요청 알림을 보냅니다.

- **`common-slack-notify-rerequested.yml` (재리뷰 요청)**
  - PR에 리뷰어가 다시 요청될 때(`review_requested`) 실행됩니다.
  - 해당 리뷰어에게 재리뷰 요청 알림을 보냅니다.
  - 이전에 리뷰 기록이 없는 최초 요청의 경우에는 알림을 보내지 않습니다.

- **`common-slack-notify-submitted.yml` (리뷰 완료)**
  - 리뷰가 `submitted` 될 때 실행됩니다.
  - PR 작성자에게 리뷰가 완료되었음을 알립니다.
  - 리뷰 상태가 `approved`(✅) 또는 `changes_requested`(🔴)일 때만 알림을 보내고, 단순 코멘트(`commented`)는 제외합니다.
@oungsi2000 oungsi2000 merged commit 633bcc8 into develop Nov 28, 2025
5 of 6 checks passed
@oungsi2000 oungsi2000 deleted the cicd/2 branch November 28, 2025 07:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants