From c4d6e3c6ea56738087c34cb86e0fb5e28da43819 Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Wed, 18 Mar 2026 19:06:40 +0900 Subject: [PATCH 1/3] =?UTF-8?q?ci:=20GitHub=20Actions=20=EC=9B=8C=ED=81=AC?= =?UTF-8?q?=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EC=B5=9C=EC=A0=81=ED=99=94=20?= =?UTF-8?q?=EB=B0=8F=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=A6=AC=ED=8F=AC?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: lint 및 test 잡을 check 잡으로 통합 * chore: gradle/actions/setup-gradle 도입 및 빌드 캐시 설정 추가 * chore: ktlint 및 unit test 병렬 실행 설정 * feat: JUnit 테스트 결과 리포트 게시 액션 추가 --- .github/workflows/android-ci.yml | 44 +++++++++++---------------- .github/workflows/android-release.yml | 6 ++-- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index 6ce35af..99c5ffb 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -7,8 +7,8 @@ on: branches: [ "develop" ] jobs: - lint: - name: Run ktlint + check: + name: Run Lint and Unit Tests runs-on: ubuntu-latest steps: - name: Check out repository @@ -19,33 +19,15 @@ jobs: with: java-version: '17' distribution: 'temurin' - cache: gradle - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Run ktlint - run: ./gradlew ktlintCheck - - test: - name: Run Unit Tests - runs-on: ubuntu-latest - steps: - - name: Check out repository - uses: actions/checkout@v4 - - - name: Set up JDK 17 - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'temurin' - cache: gradle + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 - name: Grant execute permission for gradlew run: chmod +x gradlew - - name: Run unit tests - run: ./gradlew testDebugUnitTest + - name: Run Lint and Tests + run: ./gradlew ktlintCheck testDebugUnitTest --parallel --build-cache - name: Upload test results if: failure() @@ -54,9 +36,15 @@ jobs: name: test-results path: '**/build/test-results/**/*.xml' + - name: Publish Test Report + uses: mikepenz/action-junit-report@v4 + if: always() # 테스트가 성공하든 실패하든 항상 리포트를 게시합니다. + with: + report_paths: '**/build/test-results/**/*.xml' + build: name: Build Debug APK - needs: [ lint, test ] + needs: [ check ] runs-on: ubuntu-latest steps: - name: Check out repository @@ -67,13 +55,15 @@ jobs: with: java-version: '17' distribution: 'temurin' - cache: gradle + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build Debug APK - run: ./gradlew assembleDebug + run: ./gradlew assembleDebug --parallel --build-cache - name: Upload Debug APK uses: actions/upload-artifact@v4 diff --git a/.github/workflows/android-release.yml b/.github/workflows/android-release.yml index fc50fb1..558cd1c 100644 --- a/.github/workflows/android-release.yml +++ b/.github/workflows/android-release.yml @@ -18,7 +18,9 @@ jobs: with: java-version: '17' distribution: 'temurin' - cache: gradle + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 - name: Grant execute permission for gradlew run: chmod +x gradlew @@ -36,7 +38,7 @@ jobs: RELEASE_STORE_PASSWORD_BASE64: ${{ secrets.RELEASE_STORE_PASSWORD_BASE64 }} RELEASE_KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }} RELEASE_KEY_PASSWORD_BASE64: ${{ secrets.RELEASE_KEY_PASSWORD_BASE64 }} - run: ./gradlew bundleRelease + run: ./gradlew bundleRelease --parallel --build-cache - name: Upload Release AAB uses: actions/upload-artifact@v4 From 057ee3bbf9dca10ccf336569e66bf055eacd4efd Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Wed, 18 Mar 2026 19:08:59 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20gradle.properties=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B5=9C=EC=A0=81=ED=99=94=20=EB=B0=8F=20=EB=B9=8C?= =?UTF-8?q?=EB=93=9C=20=EC=84=B1=EB=8A=A5=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: JVM 힙 메모리 증설 및 GC 옵션 추가 * chore: `parallel`, `vfs.watch`, `configureondemand` 활성화로 빌드 속도 개선 * chore: Kotlin 및 KSP 증분 컴파일(incremental) 옵션 활성화 * chore: 불필요한 주석 제거 및 설정 파일 정리 --- gradle.properties | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/gradle.properties b/gradle.properties index 541a6e1..3ff9109 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,28 +1,10 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit -# http://www.gradle.org/docs/current/userguide/build_environment.html -# Specifies the JVM arguments used for the daemon process. -# The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. For more details, visit -# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects -# org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn -android.useAndroidX=true -# Kotlin code style for this project: "official" or "obsolete": -kotlin.code.style=official -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true - -# Build performance optimization -org.gradle.caching=true +org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8 -XX:+UseParallelGC -XX:MaxMetaspaceSize=1g org.gradle.parallel=true +org.gradle.vfs.watch=true +org.gradle.caching=true org.gradle.configureondemand=true +kotlin.code.style=official +kotlin.incremental=true +android.useAndroidX=true +android.nonTransitiveRClass=true +ksp.incremental=true From 0acd141ca99a2e59310e427e142430f518dd261c Mon Sep 17 00:00:00 2001 From: wjdrjs00 Date: Wed, 18 Mar 2026 19:36:09 +0900 Subject: [PATCH 3/3] =?UTF-8?q?chore:=20CI=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9A=B0=20=EA=B6=8C=ED=95=9C=20=EB=B0=8F=20=ED=99=98?= =?UTF-8?q?=EA=B2=BD=20=EB=B3=80=EC=88=98=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add: 워크플로우 권한(checks, pull-requests) 추가 - add: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 환경 변수 추가 --- .github/workflows/android-ci.yml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index 99c5ffb..ce0507f 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -6,6 +6,14 @@ on: pull_request: branches: [ "develop" ] +permissions: + contents: read + checks: write + pull-requests: write + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + jobs: check: name: Run Lint and Unit Tests @@ -38,7 +46,7 @@ jobs: - name: Publish Test Report uses: mikepenz/action-junit-report@v4 - if: always() # 테스트가 성공하든 실패하든 항상 리포트를 게시합니다. + if: always() with: report_paths: '**/build/test-results/**/*.xml'