Skip to content

Commit eb9dc91

Browse files
authored
Merge pull request #245 from YAPP-Github/release/1.1.3
[RELEASE] v1.1.3
2 parents ccc2e38 + f1fd6b6 commit eb9dc91

File tree

225 files changed

+7863
-4939
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

225 files changed

+7863
-4939
lines changed

.codecov.yml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
coverage:
2+
status:
3+
project:
4+
default:
5+
target: 60%
6+
threshold: 2%
7+
8+
comment:
9+
layout: "reach, diff, flags, files"
10+
behavior: default
11+
require_changes: true
12+
13+
parsers:
14+
gcov:
15+
branch_detection:
16+
conditional: true
17+
loop: true
18+
method: true
19+
macro: true
20+
21+
ignore:
22+
- "**/di/**"
23+
- "**/BuildConfig.*"
24+
- "**/generated/**"

.coderabbit.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
2+
language: "ko-KR"
3+
early_access: false
4+
reviews:
5+
profile: "chill"
6+
request_changes_workflow: true
7+
high_level_summary: true
8+
poem: false
9+
review_status: true
10+
collapse_walkthrough: false
11+
abort_on_close: true
12+
auto_review:
13+
enabled: true
14+
drafts: false
15+
finishing_touches:
16+
unit_tests:
17+
enabled: true
18+
chat:
19+
auto_reply: true

.github/workflows/android_cd.yml

Lines changed: 31 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,22 @@ name: Orbit CD
33
on:
44
push:
55
branches:
6-
- main
6+
- 'release/**'
77
pull_request:
88
branches:
9-
- main
9+
- 'release/**'
1010

1111
jobs:
1212
cd:
1313
name: Continuous Deployment
1414
runs-on: ubuntu-latest
1515

1616
steps:
17-
# 1. Code Checkout
17+
# 1. Checkout
1818
- name: Checkout code
1919
uses: actions/checkout@v4
2020

21-
# 2. Gradle Cache
21+
# 2. Cache Gradle
2222
- name: Cache Gradle dependencies
2323
uses: actions/cache@v4
2424
with:
@@ -29,139 +29,82 @@ jobs:
2929
restore-keys: |
3030
${{ runner.os }}-gradle-
3131
32-
# 3. JDK 17
32+
# 3. Set up JDK 17
3333
- name: Set up JDK 17
3434
uses: actions/setup-java@v4
3535
with:
3636
java-version: 17
3737
distribution: 'corretto'
3838
cache: gradle
3939

40-
# 4. Grant Execute Permission
40+
# 4. Change gradlew permissions
4141
- name: Change gradlew permissions
4242
run: chmod +x gradlew
4343

44-
# 5. Install Firebase CLI
45-
- name: Install Firebase CLI
46-
run: curl -sL https://firebase.tools | bash
47-
48-
# 6. Decode google-services.json for debug
49-
- name: Decode google-services.json (debug)
50-
env:
51-
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET_DEBUG }}
52-
run: |
53-
mkdir -p app/src/dev
54-
echo $FIREBASE_SECRET | base64 --decode > app/src/dev/google-services.json
55-
56-
# 7. Decode google-services.json for release
44+
# 5. Decode google-services.json (release)
5745
- name: Decode google-services.json (release)
5846
env:
59-
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET_RELEASE }}
47+
FIREBASE_SECRET: ${{ secrets.FIREBASE_SECRET_RELEASE }}
6048
run: echo $FIREBASE_SECRET | base64 --decode > app/google-services.json
6149

62-
# 8. Add Local Properties
50+
# 6. Add Local Properties
6351
- name: Add Local Properties
6452
env:
6553
BASE_URL: ${{ secrets.BASE_URL }}
6654
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
67-
ADMOB_APP_ID_DEBUG: ${{ secrets.ADMOB_APP_ID_DEBUG }}
6855
ADMOB_APP_ID_RELEASE: ${{ secrets.ADMOB_APP_ID_RELEASE }}
69-
ADMOB_AD_UNIT_ID_DEBUG: ${{ secrets.ADMOB_AD_UNIT_ID_DEBUG }}
7056
ADMOB_AD_UNIT_ID_RELEASE: ${{ secrets.ADMOB_AD_UNIT_ID_RELEASE }}
7157
run: |
72-
echo -e "baseUrl=$BASE_URL" > local.properties
73-
echo -e "amplitudeApiKey=$AMPLITUDE_API_KEY" >> local.properties
74-
echo -e "admobAppIdDebug=$ADMOB_APP_ID_DEBUG" >> local.properties
75-
echo -e "admobAppIdRelease=$ADMOB_APP_ID_RELEASE" >> local.properties
76-
echo -e "admobAdUnitIdDebug=$ADMOB_AD_UNIT_ID_DEBUG" >> local.properties
77-
echo -e "admobAdUnitIdRelease=$ADMOB_AD_UNIT_ID_RELEASE" >> local.properties
78-
79-
# 9. Debug Local Properties Check
80-
- name: Debug Local Properties
81-
run: cat local.properties
82-
83-
# 10. Ktlint
84-
- name: Run Ktlint Check
85-
run: ./gradlew ktlintCheck --stacktrace
86-
87-
# 11. Debug APK Build
88-
- name: Build Debug APK
89-
run: ./gradlew assembleDebug --stacktrace
90-
91-
# 12. Release AAB Build
92-
- name: Build Release AAB
93-
run: ./gradlew bundleRelease --stacktrace
58+
echo "baseUrl=$BASE_URL" > local.properties
59+
echo "amplitudeApiKey=$AMPLITUDE_API_KEY" >> local.properties
60+
echo "admobAppIdRelease=$ADMOB_APP_ID_RELEASE" >> local.properties
61+
echo "admobAdUnitIdRelease=$ADMOB_AD_UNIT_ID_RELEASE" >> local.properties
9462
95-
# 13. Release APK Build
63+
# 7. Build Release APK
9664
- name: Build Release APK
9765
run: ./gradlew assembleRelease --stacktrace
9866

99-
# 14. AAB Artifact Upload
100-
- name: Upload Release AAB
101-
uses: actions/upload-artifact@v4
102-
with:
103-
name: release-aab
104-
path: app/build/outputs/bundle/release/app-release.aab
105-
106-
# 15. APK Artifact Upload
67+
# 8. Upload Release APK
10768
- name: Upload Release APK
10869
uses: actions/upload-artifact@v4
10970
with:
11071
name: release-apk
11172
path: app/build/outputs/apk/release/app-release.apk
11273

113-
# 16. Set up Firebase Service Account Credentials
114-
- name: Set up Firebase Service Account Credentials
74+
# 9. Set up Firebase Credentials
75+
- name: Set up Firebase Credentials
11576
env:
11677
GOOGLE_APPLICATION_CREDENTIALS_JSON: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS_JSON }}
11778
run: |
11879
echo "$GOOGLE_APPLICATION_CREDENTIALS_JSON" | base64 --decode > $HOME/firebase-credentials.json
119-
echo "🔥 Firebase Credentials JSON 생성 완료!"
120-
ls -l $HOME/firebase-credentials.json
121-
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
122-
echo "GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS"
123-
124-
# 17. Firebase CLI 인증 확인
125-
- name: Check Firebase CLI Authentication
126-
run: |
127-
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
80+
echo "GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json" >> $GITHUB_ENV
12881
129-
echo "📌 GOOGLE_APPLICATION_CREDENTIALS 설정 값:"
130-
echo $GOOGLE_APPLICATION_CREDENTIALS
131-
ls -l $GOOGLE_APPLICATION_CREDENTIALS
132-
133-
echo "📌 현재 Firebase 프로젝트 목록 확인:"
134-
firebase projects:list || (echo "❌ Firebase 인증 실패!"; exit 1)
82+
# 10. Install Firebase CLI
83+
- name: Install Firebase CLI
84+
run: curl -sL https://firebase.tools | bash
13585

136-
# 18. Firebase App Distribution Upload
86+
# 11. Upload to Firebase App Distribution
13787
- name: Upload APK to Firebase App Distribution
13888
env:
139-
GOOGLE_APPLICATION_CREDENTIALS: $HOME/firebase-credentials.json
89+
GOOGLE_APPLICATION_CREDENTIALS: ${{ env.GOOGLE_APPLICATION_CREDENTIALS }}
14090
FIREBASE_APP_ID: ${{ secrets.FIREBASE_APP_ID }}
14191
run: |
142-
echo "🔥 FIREBASE_APP_ID 확인: $FIREBASE_APP_ID"
143-
144-
# 만약 FIREBASE_APP_ID가 없으면 에러 출력 후 종료
14592
if [ -z "$FIREBASE_APP_ID" ]; then
146-
echo "❌ ERROR: FIREBASE_APP_ID가 설정되지 않았습니다. GitHub Secrets에서 확인하세요."
93+
echo "❌ ERROR: FIREBASE_APP_ID is missing!"
14794
exit 1
14895
fi
14996
150-
# GOOGLE_APPLICATION_CREDENTIALS를 다시 설정
151-
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/firebase-credentials.json
152-
echo "GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS"
153-
15497
firebase appdistribution:distribute app/build/outputs/apk/release/app-release.apk \
155-
--app "$FIREBASE_APP_ID" \
156-
--release-notes "🚀 새로운 데모 버전이 배포되었습니다!" \
157-
--groups "orbit-tester-group"
98+
--app "$FIREBASE_APP_ID" \
99+
--release-notes "🚀 release 브랜치에서 새 빌드가 업로드되었습니다!" \
100+
--groups "orbit-tester-group"
158101
159-
# 19. Notify Discord
102+
# 12. Notify Discord
160103
- name: Notify Discord
161104
env:
162105
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
163106
run: |
164107
curl -H "Content-Type: application/json" \
165-
-X POST \
166-
-d '{"content": "🚀 새로운 데모 버전이 Firebase App Distribution에 업로드되었습니다!\nAPK 다운로드: https://appdistribution.firebase.google.com"}' \
167-
$DISCORD_WEBHOOK_URL
108+
-X POST \
109+
-d '{"content": "🚀 Firebase App Distribution에 새 APK가 업로드되었습니다!\n🔗 다운로드 링크: https://appdistribution.firebase.google.com"}' \
110+
$DISCORD_WEBHOOK_URL

.github/workflows/android_ci.yml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
name: Orbit CI
22

33
on:
4-
pull_request:
5-
branches: [develop]
6-
paths:
7-
- 'app/**'
8-
- 'build.gradle'
9-
- '**/*.kt'
4+
pull_request:
5+
branches: [develop]
6+
paths:
7+
- '**/*.kt'
8+
- 'build.gradle'
9+
- 'app/**'
1010

1111
jobs:
1212
build:
@@ -80,3 +80,16 @@ jobs:
8080
# Run Lint and Build
8181
- name: Run lint and build
8282
run: ./gradlew ktlintCheck assembleDebug
83+
84+
# Run Unit Test and Generate Coverage
85+
- name: Run unit tests and generate coverage
86+
run: ./gradlew generateTestCoverageReport
87+
88+
# Upload Coverage to Codecov
89+
- name: Upload coverage to Codecov
90+
uses: codecov/codecov-action@v4
91+
with:
92+
token: ${{ secrets.CODECOV_TOKEN }}
93+
files: data/build/reports/jacoco/testDebugUnitTestCoverage/testDebugUnitTestCoverage.xml
94+
name: codecov-report
95+
fail_ci_if_error: true

app/build.gradle.kts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ plugins {
88

99
android {
1010
namespace = "com.yapp.orbit"
11+
compileSdk = 35
1112

1213
defaultConfig {
13-
versionCode = 5
14-
versionName = "1.0.3"
15-
targetSdk = 34
14+
versionCode = 6
15+
versionName = "1.1.3"
16+
targetSdk = 35
1617
}
1718

1819
buildTypes {
@@ -29,22 +30,30 @@ android {
2930

3031
dependencies {
3132
implementation(projects.core.common)
33+
implementation(projects.core.analytics)
3234
implementation(projects.core.buildconfig)
3335
implementation(projects.core.network)
3436
implementation(projects.core.designsystem)
3537
implementation(projects.core.datastore)
3638
implementation(projects.core.alarm)
3739
implementation(projects.core.media)
40+
implementation(projects.core.ui)
3841
implementation(projects.data)
3942
implementation(projects.domain)
43+
implementation(projects.feature.splash)
4044
implementation(projects.feature.onboarding)
4145
implementation(projects.feature.home)
4246
implementation(projects.feature.alarmInteraction)
4347
implementation(projects.feature.fortune)
4448
implementation(projects.feature.mission)
4549
implementation(projects.feature.setting)
46-
implementation(projects.feature.navigator)
50+
implementation(projects.feature.webview)
51+
implementation(platform(libs.firebase.bom))
52+
implementation(libs.compose.material)
4753
implementation(libs.firebase.analytics)
4854
implementation(libs.firebase.crashlytics)
4955
implementation(libs.play.services.ads)
56+
implementation(libs.kotlin.reflect)
57+
implementation(libs.hilt.worker)
58+
implementation(libs.androidx.work.runtime)
5059
}

app/src/main/AndroidManifest.xml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
1212
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1313
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
14+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
1415

1516
<application
1617
android:name=".OrbitApplication"
@@ -22,15 +23,16 @@
2223
android:roundIcon="@mipmap/ic_launcher_round"
2324
android:supportsRtl="true"
2425
android:theme="@style/Theme.Orbit"
26+
android:enableOnBackInvokedCallback="true"
2527
android:usesCleartextTraffic="true"
26-
tools:targetApi="31">
28+
tools:targetApi="33">
2729

2830
<meta-data
2931
android:name="com.google.android.gms.ads.APPLICATION_ID"
3032
android:value="@string/admob_app_id" />
3133

3234
<activity
33-
android:name="com.yapp.navigator.MainActivity"
35+
android:name="com.yapp.orbit.MainActivity"
3436
android:windowSoftInputMode="adjustResize"
3537
android:exported="true"
3638
android:label="@string/app_name"
@@ -45,9 +47,7 @@
4547
<action android:name="android.intent.action.VIEW" />
4648
<category android:name="android.intent.category.DEFAULT" />
4749
<category android:name="android.intent.category.BROWSABLE" />
48-
<data
49-
android:scheme="orbitapp"
50-
android:host="mission"/>
50+
<data android:scheme="orbitapp" />
5151
</intent-filter>
5252
</activity>
5353

@@ -79,5 +79,15 @@
7979
<service
8080
android:name="com.yapp.alarm.services.AlarmService"
8181
android:foregroundServiceType="mediaPlayback" />
82+
83+
<provider
84+
android:name="androidx.startup.InitializationProvider"
85+
android:authorities="${applicationId}.androidx-startup"
86+
android:exported="false"
87+
tools:node="merge">
88+
<meta-data
89+
android:name="androidx.work.WorkManagerInitializer"
90+
tools:node="remove" />
91+
</provider>
8292
</application>
8393
</manifest>

0 commit comments

Comments
 (0)