diff --git a/.github/actions/ktlint_check/action.yml b/.github/actions/ktlint_check/action.yml new file mode 100644 index 00000000..ad430fa0 --- /dev/null +++ b/.github/actions/ktlint_check/action.yml @@ -0,0 +1,50 @@ +name: 'ktLint Check' + +description: 'Run ktLint Check using Gradle' + +inputs: + POKE_BASE_URL: + description: 'Base URL for local.properties' + required: true + + +runs: + using: 'composite' + steps: + + - name: Gradle cache + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: 17 + + - name: Create Local Properties + shell: bash + run: touch local.properties + working-directory: ./android + + - name: Access Local Properties + shell: bash + run: | + echo POKE_BASE_URL=\"${{ inputs.POKE_BASE_URL }}\" >> local.properties + working-directory: ./android + + - name: Grant execute permission for gradlew + shell: bash + run: chmod +x gradlew + working-directory: ./android + + - name: Lint Check + shell: bash + run: ./gradlew ktlintCheck + working-directory: ./android diff --git a/.github/actions/unit_test/action.yml b/.github/actions/unit_test/action.yml new file mode 100644 index 00000000..ddad5293 --- /dev/null +++ b/.github/actions/unit_test/action.yml @@ -0,0 +1,71 @@ +name: 'Test Alpha Unit Test' + +description: 'Run Alpha Unit Tests using Gradle' + +inputs: + POKE_BASE_URL: + description: 'Base URL for local.properties' + required: true + GOOGLE_SERVICES_ALPHA: + description: 'Google Services JSON for alpha build' + required: true + GOOGLE_SERVICES_BETA: + description: 'Google Services JSON for beta build' + required: true + GOOGLE_SERVICES: + description: 'Google Services JSON for release' + required: true + +runs: + using: 'composite' + + steps: + - name: Gradle cache + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: 17 + + - name: Create Google-Services.json + shell: bash + run: | + touch ./android/app/src/debug/google-services.json + touch ./android/app/src/alpha/google-services.json + touch ./android/app/src/beta/google-services.json + mkdir ./android/app/src/release + touch ./android/app/src/release/google-services.json + echo ${{ inputs.GOOGLE_SERVICES_ALPHA }} >> ./android/app/src/debug/google-services.json + echo ${{ inputs.GOOGLE_SERVICES_ALPHA }} >> ./android/app/src/alpha/google-services.json + echo ${{ inputs.GOOGLE_SERVICES_BETA }} >> ./android/app/src/beta/google-services.json + echo ${{ inputs.GOOGLE_SERVICES }} >> ./android/app/src/release/google-services.json + + - name: Create Local Properties + shell: bash + run: touch local.properties + working-directory: ./android + + - name: Access Local Properties + shell: bash + run: | + echo POKE_BASE_URL=\"${{ inputs.POKE_BASE_URL }}\" >> local.properties + working-directory: ./android + + - name: Grant execute permission for gradlew + shell: bash + run: chmod +x gradlew + working-directory: ./android + + - name: Run Alpha Unit Tests + shell: bash + run: ./gradlew testAlphaUnitTest + working-directory: ./android \ No newline at end of file diff --git a/.github/workflows/Android_Develop_PR_Builder.yml b/.github/workflows/Android_Develop_PR_Builder.yml deleted file mode 100644 index 197d2b61..00000000 --- a/.github/workflows/Android_Develop_PR_Builder.yml +++ /dev/null @@ -1,229 +0,0 @@ -name: Android PR Builder - -on: - pull_request: - branches: [ an/develop ] - push: - branches: [ an/develop ] - - -defaults: - run: - working-directory: ./android - -jobs: - ktlintCheck: - name: ktLint Check - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Gradle cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - - - name: Create Local Properties - run: touch local.properties - - - name: Access Local Properties - env: - POKE_BASE_URL: ${{ secrets.POKE_BASE_URL }} - run: | - echo POKE_BASE_URL=\"${{ secrets.POKE_BASE_URL }}\" >> local.properties - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Lint Check - run: ./gradlew ktlintCheck - - testAlphaUnitTest: - name: Test Alpha Unit Test - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Gradle cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - - - name: Create Google-Services.json - env: - GOOGLE_SERVICES_ALPHA: ${{ secrets.GOOGLE_SERVICES_ALPHA }} - GOOGLE_SERVICES_BETA: ${{ secrets.GOOGLE_SERVICES_BETA }} - GOOGLE_SERVICES: ${{ secrets.GOOGLE_SERVICES }} - run: | - touch ./app/src/debug/google-services.json - touch ./app/src/alpha/google-services.json - touch ./app/src/beta/google-services.json - mkdir ./app/src/release - touch ./app/src/release/google-services.json - echo $GOOGLE_SERVICES_ALPHA >> ./app/src/debug/google-services.json - echo $GOOGLE_SERVICES_ALPHA >> ./app/src/alpha/google-services.json - echo $GOOGLE_SERVICES_BETA >> ./app/src/beta/google-services.json - echo $GOOGLE_SERVICES >> ./app/src/release/google-services.json - - - name: Create Local Properties - run: touch local.properties - - - name: Access Local Properties - env: - POKE_BASE_URL: ${{ secrets.POKE_BASE_URL }} - run: | - echo POKE_BASE_URL=\"${{ secrets.POKE_BASE_URL }}\" >> local.properties - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: run alpha unit test - run: ./gradlew testAlphaUnitTest - - Distribution: - name: Alpha APK to Discord - runs-on: ubuntu-latest - needs: [ ktlintCheck, testAlphaUnitTest ] - if: ${{ github.event.pull_request.merged == true }} # PR이 머지되었을 때만 실행 - steps: - - uses: actions/checkout@v4 - - name: Gradle cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: set up JDK 17 - uses: actions/setup-java@v3 - with: - distribution: 'temurin' - java-version: 17 - - - name: Create Google-Services.json - env: - GOOGLE_SERVICES_ALPHA: ${{ secrets.GOOGLE_SERVICES_ALPHA }} - GOOGLE_SERVICES_BETA: ${{ secrets.GOOGLE_SERVICES_BETA }} - GOOGLE_SERVICES: ${{ secrets.GOOGLE_SERVICES }} - run: | - touch ./app/src/debug/google-services.json - touch ./app/src/alpha/google-services.json - touch ./app/src/beta/google-services.json - mkdir ./app/src/release - touch ./app/src/release/google-services.json - echo $GOOGLE_SERVICES_ALPHA >> ./app/src/debug/google-services.json - echo $GOOGLE_SERVICES_ALPHA >> ./app/src/alpha/google-services.json - echo $GOOGLE_SERVICES_BETA >> ./app/src/beta/google-services.json - echo $GOOGLE_SERVICES >> ./app/src/release/google-services.json - - - name: Check google-services.json content - run: cat ./app/src/debug/google-services.json - - - name: Create Local Properties - run: touch local.properties - - - name: Access Local Properties - env: - POKE_BASE_URL: ${{ secrets.POKE_BASE_URL }} - # POKE_RELEASE_URL: ${{ secrets.HOST_RELEASE_URI }} - # KEYSTORE_PATH: ${{ secrets.KEYSTORE_PATH }} - # STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }} - # KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - # KEY_ALIAS: ${{ secrets.KEY_ALIAS }} - # STORE_FILE: ${{ secrets.STORE_FILE }} - run: | - echo POKE_BASE_URL=\"${{ secrets.POKE_BASE_URL }}\" >> local.properties - # echo STORE_PASSWORD= $STORE_PASSWORD >> local.properties - # echo KEY_PASSWORD= $KEY_PASSWORD >> local.properties - # echo KEY_ALIAS= $KEY_ALIAS >> local.properties - # echo STORE_FILE= $STORE_FILE >> local.properties - # - name: Create Key Store - # env: - # KEY_STORE_BASE_64: ${{secrets.KEY_STORE_BASE_64}} - # run: | - # echo "$KEY_STORE_BASE_64" | base64 -d > ./funch_key_store.jks - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Build alpha APK - run: ./gradlew assembleAlpha - - - name: Upload alpha APK artifact - uses: actions/upload-artifact@v4 - with: - name: android-artifact - path: android/app/build/outputs/apk/alpha/ - if-no-files-found: error - - - name: Check APK existence - run: ls -al app/build/outputs/apk/alpha/ - - - name: Extract Version Name - env: - title: ${{ github.event.pull_request.title }} - run: | - version=$(echo '${{ env.title }}' | grep -oP '\d+\.\d+\.\d+') - echo "version=v$version" >> $GITHUB_ENV - - - name: Send alpha version APK to Discord with Embeds - env: - DISCORD_WEBHOOK_URL: ${{ secrets.AlPHA_APK_DISCORD_WEB_HOOK }} - VERSION: ${{ env.version }} - PR_TITLE: ${{ github.event.pull_request.title }} - PR_URL: ${{ github.event.pull_request.html_url }} - run: | - CONTENT="최신 개발 버전 APK 가 나왔어요!🎉 - [배포 버전] : $VERSION! - [해당 PR 제목] : $PR_TITLE" - EMBED=$(jq -n \ - --arg title "PR Merged: $PR_TITLE" \ - --arg url "$PR_URL" \ - --arg description "Version: $VERSION 🎉" \ - '{ - "title": $title, - "url": $url, - "description": $description, - "color": 3066993 - }' - ) - - PAYLOAD=$(jq -n \ - --arg content "$CONTENT" \ - --argjson embeds "[$EMBED]" \ - '{ - "content": $content, - "embeds": $embeds - }' - ) - - - curl -F "payload_json=$PAYLOAD" \ - -F "file=@app/build/outputs/apk/alpha/app-alpha.apk" \ - $DISCORD_WEBHOOK_URL - diff --git a/.github/workflows/Android_Develop_PR_CD.yml b/.github/workflows/Android_Develop_PR_CD.yml index fb030311..1980dba1 100644 --- a/.github/workflows/Android_Develop_PR_CD.yml +++ b/.github/workflows/Android_Develop_PR_CD.yml @@ -17,41 +17,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Gradle cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: set up JDK 17 - uses: actions/setup-java@v3 + - name: Run ktLint Check + uses: ./.github/actions/ktlint_check with: - distribution: 'temurin' - java-version: 17 - - - name: Create Local Properties - run: touch local.properties - - - name: Access Local Properties - env: POKE_BASE_URL: ${{ secrets.POKE_BASE_URL }} - run: | - echo POKE_BASE_URL=\"${{ secrets.POKE_BASE_URL }}\" >> local.properties - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Lint Check - run: ./gradlew ktlintCheck testAlphaUnitTest: name: Test Alpha Unit Test runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - name: Gradle cache diff --git a/.github/workflows/Android_Develop_PR_CI.yml b/.github/workflows/Android_Develop_PR_CI.yml index f1a6cd9e..d1b9cbaf 100644 --- a/.github/workflows/Android_Develop_PR_CI.yml +++ b/.github/workflows/Android_Develop_PR_CI.yml @@ -15,41 +15,14 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Gradle cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-gradle- - - - name: set up JDK 17 - uses: actions/setup-java@v3 + - name: Run ktLint Check + uses: ./.github/actions/ktlint_check with: - distribution: 'temurin' - java-version: 17 - - - name: Create Local Properties - run: touch local.properties - - - name: Access Local Properties - env: POKE_BASE_URL: ${{ secrets.POKE_BASE_URL }} - run: | - echo POKE_BASE_URL=\"${{ secrets.POKE_BASE_URL }}\" >> local.properties - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - - name: Lint Check - run: ./gradlew ktlintCheck testAlphaUnitTest: name: Test Alpha Unit Test runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 - name: Gradle cache