+81
-28
@@ -1,48 +1,101 @@
|
||||
name: Node CI Pipeline
|
||||
name: RN APK Build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
env:
|
||||
ANDROID_SDK_ROOT: ${{ runner.temp }}/android-sdk
|
||||
|
||||
steps:
|
||||
# Checkout code
|
||||
# 1. Checkout code
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Setup Node.js
|
||||
- name: Setup Node.js
|
||||
# 2. Node setup
|
||||
- name: Setup Node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
node-version: 20
|
||||
cache: npm
|
||||
|
||||
# Diagnostics
|
||||
- name: Diagnostics
|
||||
run: |
|
||||
set -e
|
||||
node -v
|
||||
npm -v
|
||||
pwd
|
||||
|
||||
# Install dependencies
|
||||
# 3. Install JS deps
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
run: npm install
|
||||
|
||||
# Lint
|
||||
- name: ESLint
|
||||
run: npm run lint
|
||||
# 4. Java setup
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 17
|
||||
|
||||
# Optional Test (uncomment if needed)
|
||||
# - name: Jest Tests
|
||||
# run: npm test -- --ci --coverage
|
||||
# 5. Gradle cache
|
||||
- name: Cache Gradle
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: gradle-
|
||||
|
||||
# 6. Maven cache
|
||||
- name: Cache Maven
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.m2/repository
|
||||
key: maven-${{ hashFiles('**/*.gradle*') }}
|
||||
restore-keys: maven-
|
||||
|
||||
# 7. Android SDK setup
|
||||
- name: Setup Android SDK
|
||||
uses: android-actions/setup-android@v2
|
||||
with:
|
||||
accept-android-sdk-licenses: true
|
||||
|
||||
# 8. Install SDK components
|
||||
- name: Install SDK Components
|
||||
run: |
|
||||
sdkmanager \
|
||||
"platform-tools" \
|
||||
"platforms;android-36" \
|
||||
"build-tools;36.0.0" \
|
||||
"ndk;27.1.12297006" \
|
||||
"cmake;3.22.1"
|
||||
|
||||
# 9. Gradlew permission
|
||||
- name: Make Gradlew executable
|
||||
run: chmod +x android/gradlew
|
||||
|
||||
# 10. Clean build (safe)
|
||||
- name: Clean project
|
||||
run: cd android && ./gradlew clean
|
||||
|
||||
# 11. Build APK
|
||||
- name: Build Release APK
|
||||
run: |
|
||||
cd android
|
||||
./gradlew assembleRelease \
|
||||
--no-daemon \
|
||||
--stacktrace \
|
||||
-Dorg.gradle.jvmargs="-Xmx4g -Dfile.encoding=UTF-8" \
|
||||
-Dorg.gradle.daemon=false \
|
||||
-Pandroid.ndkVersion=27.1.12297006 \
|
||||
-Pandroid.ndkPath=$ANDROID_SDK_ROOT/ndk/27.1.12297006
|
||||
|
||||
# 12. Verify APK
|
||||
- name: Show APK
|
||||
run: find android/app/build/outputs/apk -name "*.apk"
|
||||
|
||||
# 13. Upload APK artifact
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: app-release
|
||||
path: android/app/build/outputs/apk/release/app-release.apk
|
||||
Reference in New Issue
Block a user