name: Android Kernel Build #Запускаем только кнопкой "Run workflow" в Actions on: workflow_dispatch: push: branches: - main paths: - 'app/**' - 'build.gradle.kts' - 'app/build.gradle.kts' - 'gradle/**' jobs: build: runs-on: android-builders steps: - name: Checkout code uses: actions/checkout@v6 - name: Install Node.js run: | if command -v node &> /dev/null; then echo "Node.js is already installed" elif command -v apt-get &> /dev/null; then sudo apt-get update && sudo apt-get install -y nodejs npm elif command -v brew &> /dev/null; then brew install node elif command -v apk &> /dev/null; then apk add --no-cache nodejs npm fi - name: Install JDK 17 run: | if java -version 2>&1 | grep -q "17"; then echo "JDK 17 is already installed" else brew install openjdk@17 sudo ln -sfn "$(brew --prefix openjdk@17)/libexec/openjdk.jdk" /Library/Java/JavaVirtualMachines/openjdk-17.jdk fi echo "JAVA_HOME=$(/usr/libexec/java_home -v 17)" >> $GITHUB_ENV - name: Install Android SDK run: | export ANDROID_HOME="$HOME/android-sdk" mkdir -p "$ANDROID_HOME/cmdline-tools" if [ ! -d "$ANDROID_HOME/cmdline-tools/latest" ]; then curl -sL https://dl.google.com/android/repository/commandlinetools-mac-11076708_latest.zip -o /tmp/cmdline-tools.zip unzip -q /tmp/cmdline-tools.zip -d "$ANDROID_HOME/cmdline-tools" mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest" rm /tmp/cmdline-tools.zip fi yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses || true "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \ "platforms;android-34" \ "build-tools;34.0.0" \ "platform-tools" echo "ANDROID_HOME=$ANDROID_HOME" >> $GITHUB_ENV echo "ANDROID_SDK_ROOT=$ANDROID_HOME" >> $GITHUB_ENV - name: Setup Gradle wrapper run: | chmod +x ./gradlew ./gradlew --version - name: Build Release APK run: ./gradlew assembleRelease - name: Check if APK exists run: | echo "=== Checking APK output ===" find app/build/outputs/apk/release -type f -name "*.apk" 2>/dev/null || echo "No APK files found" ls -la app/build/outputs/apk/release/ 2>/dev/null || echo "release folder not found" - name: Upload APK to SSH using SCP uses: appleboy/scp-action@master with: host: ${{ secrets.SDU_SSH_HOST }} username: ${{ secrets.SDU_SSH_USER }} password: ${{ secrets.SDU_SSH_PASSWORD }} port: ${{ secrets.SDU_SSH_PORT }} source: "app/build/outputs/apk/release/Rosetta-*.apk" target: "${{ secrets.SDU_DEPLOY_PATH }}/kernel/android/universal" strip_components: 5 rm: true