Skip to content

Conversation

@kangyuri1114
Copy link
Member

@kangyuri1114 kangyuri1114 commented Jan 16, 2026

Summary

서명된 release apk를 추출하도록 CI 코드 수정

Describe your changes

기존 anroid.yml CI 코드로 firebase app distribution를 통해 메일로 release, debug apk 배포 시 설치가 안되는 문제가 있었습니다.

  • Debug가 실패한 이유 : 기존에 설치된 debug app이 있어서 삭제 후 설치하니 됨

  • Release가 실패한 이유 : 서명되지 않은 apk 파일이었어서

이 이유로 확인되어 release apk 발행 시 github secrets에 있는 keystore 파일 정보를 활용해 서명된 apk 파일이 추출될 수 있게 수정

Issue

  • Resolves #

To reviewers

바뀐 부분

  1. base url (dev, prod)이 깃헙 secret에는 이전 값이 등록되어있어 업데이트
  2. 추출된 debug용 apk 파일이 정상 설치는 되지만 kakao login이 안됨을 확인 -> firebase와 마찬가지로 package명에 .debug가 붙어 패키지명 불일치로 추정
  3. debug apk 파일 추출 로직 임시로 주석처리
  4. release에서 발생했던 naver key 로 인한 네이버 맵 401 오류 해결 및 네이버 ID 확인 로직 추가

바뀐 점 : debug apk 파일 추출 삭제, release apk 정상 메일 전송 및 정상 실행 확인

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @kangyuri1114, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 CI 환경에서 빌드된 release APK가 서명되지 않아 Firebase App Distribution을 통한 설치에 실패하는 문제를 해결합니다. app/build.gradle.kts 파일에 새로운 서명 구성(ciRelease)을 추가하고, 환경 변수를 통해 키스토어 정보를 받아 release 빌드에 적용함으로써, CI에서 생성되는 모든 release APK가 올바르게 서명되도록 보장합니다.

Highlights

  • 서명된 Release APK 추출: CI 코드를 수정하여 서명된 release APK를 추출하도록 변경했습니다. 이는 Firebase App Distribution을 통해 배포된 APK의 설치 문제를 해결하기 위함입니다.
  • CI 환경 서명 설정 추가: CI 환경에서 사용할 새로운 서명 설정(ciRelease)을 app/build.gradle.kts에 추가했습니다. 이 설정은 GitHub Secrets에 저장된 키스토어 파일 정보를 환경 변수를 통해 활용합니다.
  • Release 빌드 타입에 서명 적용: Release 빌드 타입이 KEYSTORE_FILE 환경 변수가 존재할 경우, 새로 정의된 ciRelease 서명 설정을 사용하도록 변경하여 CI에서 빌드된 release APK가 올바르게 서명되도록 했습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/android.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The pull request introduces a new ciRelease signing configuration in app/build.gradle.kts that dynamically retrieves keystore details from environment variables (KEYSTORE_FILE, KEYSTORE_PASSWORD, KEY_ALIAS, KEY_PASSWORD). The release build type is then updated to conditionally use this ciRelease signing configuration when the KEYSTORE_FILE environment variable is set, facilitating signing in CI environments. There are no review comments provided for these changes.

@github-actions
Copy link

✅ CI 완료

@github-actions
Copy link

✅ CI 완료

@github-actions
Copy link

✅ CI 완료

@github-actions
Copy link

✅ CI 완료

@github-actions
Copy link

✅ CI 완료

@kangyuri1114 kangyuri1114 self-assigned this Jan 16, 2026
Copy link
Member

@PeraSite PeraSite left a comment

Choose a reason for hiding this comment

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

잘되네요!!! 💯💯

Copy link
Member

@HI-JIN2 HI-JIN2 left a comment

Choose a reason for hiding this comment

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

App Tester 동작 확인했습니다! 아주 잘됩니다!! 고생 많으셨어요.

그런데 제훈님한테 .debug apk 설치를 분리해달라고 했던거는, 한 휴대폰에서 릴리즈 모드 앱과 디버그 앱을 동시에 설치하기 위함이었어요. 그런데 지금은 서명된 release만 만드는걸로 보여서 이 부분은 함께 얘기해봐야할 것 같습니다! @PeraSite

제 생각에는 Firebase App Distribution 통해서 만드는 CICD는 배포전 debug용 apk를 만들어서 팀내 자체 QA를 하는 목적이 크다고 생각합니다. 이 과정에서 테스트용 DB입력이 이루어지고요.

  1. 한 휴대폰에서 릴리즈/디버그 둘다 존재해야함
  2. 디버그용 DB 입력이 있음

두가지를 고려했을때 하나의 Firebase App = 하나의 패키지명(applicationId)을 기준으로 동작해서 하나만 만들 수 있다면 둘중 디버그 모드를 하는게 차라리 맞는 것 같고

릴리즈 모드도 필요하다면 Firebase App을 각각 등록하는게 맞다는 생각이 듭니다.

그리고 혹시 해당 크래시가 CICD 관련 문제였을까요?
Image

@kangyuri1114
Copy link
Member Author

@HI-JIN2
우선 해당 크래쉬는 발생 시각(1.13 오전 11시), 기기(모델:Galaxy S25 FE)로 봤을 때는 CICD 문제는 아닌 것 같아요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants