diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index e6316e9c..fb24a947 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -3,39 +3,41 @@ on: pull_request: push: branches: - - main + # - main + - 'yc/*' paths-ignore: - '**.md' jobs: test: - runs-on: ${{ matrix.os }} + # runs-on: ${{ matrix.os }} + runs-on: macos-latest env: JAVA_TOOL_OPTIONS: -Xmx4g timeout-minutes: 15 strategy: matrix: - os: [macos-latest, ubuntu-latest] - api-level: [16, 23, 29] - target: [default, google_apis] - exclude: - - os: ubuntu-latest - api-level: 23 - - os: ubuntu-latest - api-level: 29 - - target: google_apis - api-level: 16 - - target: google_apis - api-level: 23 - - target: google_apis - api-level: 29 - include: - - os: macos-latest - api-level: 30 - target: google_apis - - os: macos-latest - api-level: 24 - target: playstore + # os: [macos-latest, ubuntu-latest] + api-level: [23, 30] + # target: [default, google_apis] + # exclude: + # - os: ubuntu-latest + # api-level: 23 + # - os: ubuntu-latest + # api-level: 29 + # - target: google_apis + # api-level: 16 + # - target: google_apis + # api-level: 23 + # - target: google_apis + # api-level: 29 + # include: + # - os: macos-latest + # api-level: 30 + # target: google_apis + # - os: macos-latest + # api-level: 24 + # target: playstore steps: - name: checkout @@ -46,7 +48,7 @@ jobs: - name: build, test and lint run: | - npm install + npm ci npm run build npm run lint npm test @@ -65,15 +67,29 @@ jobs: uses: ./ with: api-level: ${{ matrix.api-level }} - target: ${{ matrix.target }} + target: google_apis arch: x86 - profile: Nexus 6 - avd-name: test + # profile: Nexus 6 + profile: pixel_3a + # avd-name: test emulator-options: -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -camera-back none disable-animations: true working-directory: ./test-fixture/ script: | echo $GITHUB_REPOSITORY adb devices - ./gradlew help - ./gradlew connectedDebugAndroidTest + adb shell ls -la /sdcard + adb shell ls -la /storage + adb emu geo fix 0 51 + adb shell screenrecord --verbose /sdcard/capture.mpg & + adb shell pkill -INT screenrecord + mkdir -p app/build/report + cd app/build/report && adb pull /sdcard/capture.mpg + # ./gradlew help + # ./gradlew connectedDebugAndroidTest + + - name: Upload build artifacts + uses: actions/upload-artifact@v1 + with: + name: build-outputs + path: ./test-fixture/app/build/report diff --git a/lib/sdk-installer.js b/lib/sdk-installer.js index 9d14bf67..c9f913f2 100644 --- a/lib/sdk-installer.js +++ b/lib/sdk-installer.js @@ -32,10 +32,11 @@ exports.installAndroidSdk = void 0; const core = __importStar(require("@actions/core")); const exec = __importStar(require("@actions/exec")); const io = __importStar(require("@actions/io")); +const tc = __importStar(require("@actions/tool-cache")); const fs = __importStar(require("fs")); const BUILD_TOOLS_VERSION = '30.0.2'; -const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6609375_latest.zip'; -const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip'; +const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip'; +const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip'; /** * Installs & updates the Android SDK for the macOS platform, including SDK platform for the chosen API level, latest build tools, platform tools, Android Emulator, * and the system image for the chosen API level, CPU arch, and target. @@ -50,12 +51,14 @@ function installAndroidSdk(apiLevel, target, arch, emulatorBuild, ndkVersion, cm if (!fs.existsSync(cmdlineToolsPath)) { console.log('Installing new cmdline-tools.'); const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX; - yield io.mkdirP(`${process.env.ANDROID_HOME}/cmdline-tools`); - yield exec.exec(`curl -fo commandlinetools.zip ${sdkUrl}`); - yield exec.exec(`unzip -q commandlinetools.zip -d ${cmdlineToolsPath}`); - yield io.rmRF('commandlinetools.zip'); + // await io.mkdirP(cmdlineToolsPath); + const downloadPath = yield tc.downloadTool(sdkUrl); + yield tc.extractZip(downloadPath, cmdlineToolsPath); + yield io.mv(`${cmdlineToolsPath}/cmdline-tools`, `${cmdlineToolsPath}/latest`); + yield exec.exec(`ls -la ${cmdlineToolsPath}`); // add paths for commandline-tools and platform-tools - core.addPath(`${cmdlineToolsPath}/tools:${cmdlineToolsPath}/tools/bin:${process.env.ANDROID_HOME}/platform-tools`); + core.addPath(`${cmdlineToolsPath}/latest:${cmdlineToolsPath}/latest/bin:${process.env.ANDROID_HOME}/platform-tools`); + yield exec.exec(`ls -la ${cmdlineToolsPath}/latest`); } // additional permission and license requirements for Linux const sdkPreviewLicensePath = `${process.env.ANDROID_HOME}/licenses/android-sdk-preview-license`; diff --git a/src/sdk-installer.ts b/src/sdk-installer.ts index d71e5628..c9759a60 100644 --- a/src/sdk-installer.ts +++ b/src/sdk-installer.ts @@ -1,11 +1,12 @@ import * as core from '@actions/core'; import * as exec from '@actions/exec'; import * as io from '@actions/io'; +import * as tc from '@actions/tool-cache'; import * as fs from 'fs'; const BUILD_TOOLS_VERSION = '30.0.2'; -const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6609375_latest.zip'; -const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip'; +const CMDLINE_TOOLS_URL_MAC = 'https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip'; +const CMDLINE_TOOLS_URL_LINUX = 'https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip'; /** * Installs & updates the Android SDK for the macOS platform, including SDK platform for the chosen API level, latest build tools, platform tools, Android Emulator, @@ -22,13 +23,17 @@ export async function installAndroidSdk(apiLevel: number, target: string, arch: if (!fs.existsSync(cmdlineToolsPath)) { console.log('Installing new cmdline-tools.'); const sdkUrl = isOnMac ? CMDLINE_TOOLS_URL_MAC : CMDLINE_TOOLS_URL_LINUX; - await io.mkdirP(`${process.env.ANDROID_HOME}/cmdline-tools`); - await exec.exec(`curl -fo commandlinetools.zip ${sdkUrl}`); - await exec.exec(`unzip -q commandlinetools.zip -d ${cmdlineToolsPath}`); - await io.rmRF('commandlinetools.zip'); + // await io.mkdirP(cmdlineToolsPath); + const downloadPath = await tc.downloadTool(sdkUrl); + await tc.extractZip(downloadPath, cmdlineToolsPath); + await io.mv(`${cmdlineToolsPath}/cmdline-tools`, `${cmdlineToolsPath}/latest`); + + await exec.exec(`ls -la ${cmdlineToolsPath}`); // add paths for commandline-tools and platform-tools - core.addPath(`${cmdlineToolsPath}/tools:${cmdlineToolsPath}/tools/bin:${process.env.ANDROID_HOME}/platform-tools`); + core.addPath(`${cmdlineToolsPath}/latest:${cmdlineToolsPath}/latest/bin:${process.env.ANDROID_HOME}/platform-tools`); + + await exec.exec(`ls -la ${cmdlineToolsPath}/latest`); } // additional permission and license requirements for Linux