Skip to content

Commit

Permalink
Merge pull request #256 from Team-HMH/feature/ci-cd-firebase
Browse files Browse the repository at this point in the history
[feat/ci_cd_firebase]: Firebase ํ…Œ์ŠคํŠธ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ workflow ์ถ”๊ฐ€
  • Loading branch information
kez-lab authored Dec 31, 2024
2 parents 8ad4ca6 + 1af17ba commit fc5f5c3
Show file tree
Hide file tree
Showing 7 changed files with 107 additions and 7 deletions.
20 changes: 18 additions & 2 deletions .github/workflows/develop_PR_builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,29 @@ jobs:
- name: Add Local Properties
env:
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
HMH_BASE_URL: ${{ secrets.HMH_BASE_URL }}
HMH_DEV_BASE_URL: ${{ secrets.HMH_DEV_BASE_URL }}
HMH_PROD_BASE_URL: ${{ secrets.HMH_PROD_BASE_URL }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
run: |
echo kakaoApiKey=$KAKAO_API_KEY >> ./local.properties
echo hmhBaseUrl=$HMH_BASE_URL >> ./local.properties
echo amplitudeApiKey=$AMPLITUDE_API_KEY >> ./local.properties
echo keyAlias=$KEY_ALIAS >> ./local.properties
echo keyPassword=$KEY_PASSWORD >> ./local.properties
echo storePassword=$STORE_PASSWORD >> ./local.properties
echo hmhDevBaseUrl=$HMH_DEV_BASE_URL >> ./local.properties
echo hmhProdBaseUrl=$HMH_PROD_BASE_URL >> ./local.properties
- name: Access Firebase Service
run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json

- name: Run Tests
run: ./gradlew test

- name: Verify Lint
run: ./gradlew lint

- name: Build debug APK
run: ./gradlew assembleDebug --stacktrace
74 changes: 74 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Release Firebase Distribution Workflow

on:
push:
branches:
- release/**

jobs:
build-and-release:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Setup JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'

- name: Decode keystore
run: echo "${{ secrets.RELEASE_KEYSTORE_BASE64 }}" | base64 --decode > keystore/release.keystore.jks

- name: Grant execute permission for gradlew
run: chmod +x ./gradlew

- name: Add Local Properties
env:
KAKAO_API_KEY: ${{ secrets.KAKAO_API_KEY }}
HMH_DEV_BASE_URL: ${{ secrets.HMH_DEV_BASE_URL }}
HMH_PROD_BASE_URL: ${{ secrets.HMH_PROD_BASE_URL }}
AMPLITUDE_API_KEY: ${{ secrets.AMPLITUDE_API_KEY }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
run: |
echo kakaoApiKey=$KAKAO_API_KEY >> ./local.properties
echo amplitudeApiKey=$AMPLITUDE_API_KEY >> ./local.properties
echo keyAlias=$KEY_ALIAS >> ./local.properties
echo keyPassword=$KEY_PASSWORD >> ./local.properties
echo storePassword=$STORE_PASSWORD >> ./local.properties
echo hmhDevBaseUrl=$HMH_DEV_BASE_URL >> ./local.properties
echo hmhProdBaseUrl=$HMH_PROD_BASE_URL >> ./local.properties
- name: Access Firebase Service
run: echo '${{ secrets.GOOGLE_SERVICES_JSON }}' > ./app/google-services.json

- name: Cache Gradle dependencies
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: gradle-cache-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
gradle-cache-${{ runner.os }}-
- name: Build APK
run: ./gradlew assembleRelease

- name: Verify APK Existence
run: test -f app/build/outputs/apk/release/app-release.apk

- name: Generate Release Notes
id: release-notes
run: echo "RELEASE_NOTES=$(git log -1 --pretty=%B)" >> $GITHUB_ENV

- name: Upload to Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1
with:
appId: ${{ secrets.FIREBASE_APP_ID }}
serviceCredentialsFileContent: ${{ secrets.CREDENTIAL_FILE_CONTENT }}
groups: hmh-team
file: app/build/outputs/apk/release/app-release.apk
releaseNotes: ${{ env.RELEASE_NOTES }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ captures/
.cxx/
*.apk
output.json
output-metadata.json

# IntelliJ
*.iml
Expand Down
5 changes: 5 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ android {
signingConfig = signingConfigs.getByName("release")
}
}

lint {
disable.add("Instantiatable")
baseline = file("lint-baseline.xml")
}
}

dependencies {
Expand Down
4 changes: 4 additions & 0 deletions app/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.1.4" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.4)" variant="fatal" version="8.1.4">

</issues>
2 changes: 1 addition & 1 deletion core/common/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<application>
<activity
android:name=".permission.PermissionDescriptionActivity"
android:name=".permission.PermissionActivity"
android:exported="false" />
</application>

Expand Down
8 changes: 4 additions & 4 deletions core/common/src/test/java/TimeTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ class TimeUtilsTest {
val expectedStartMillis =
currentDate.toStartOfDayTime().toEpochMilliseconds(defaultTimeZone)
val expectedEndMillis = getNowLocalDateTime().toEpochMilliseconds(defaultTimeZone)
assertEquals(expectedStartMillis, startMillis)
assertEquals(expectedEndMillis, endMillis)
assertTrue(expectedStartMillis - startMillis < 1000)
assertTrue(expectedEndMillis - endMillis < 1000)
}

// ํƒ€๊ฒŸ ๋‚ ์งœ์˜ ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ Epoch ๋ฐ€๋ฆฌ์ดˆ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธ
Expand All @@ -144,8 +144,8 @@ class TimeUtilsTest {
val (startMillis, endMillis) = getTargetDayStartEndEpochMillis(targetDate)
val expectedStartMillis = targetDate.toStartOfDayTime().toEpochMilliseconds(defaultTimeZone)
val expectedEndMillis = getNowLocalDateTime().toEpochMilliseconds(defaultTimeZone)
assertEquals(expectedStartMillis, startMillis)
assertEquals(expectedEndMillis, endMillis)
assertTrue(expectedStartMillis - startMillis < 1000)
assertTrue(expectedEndMillis - endMillis < 1000)
}

// ๊ธฐ๋ณธ ํƒ€์ž„์กด์˜ ํ˜„์žฌ ๋‚ ์งœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธ
Expand Down

0 comments on commit fc5f5c3

Please sign in to comment.