run only espresso tests #4
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Catroid Main Workflow | |
| on: | |
| push: | |
| fork: | |
| pull_request: | |
| schedule: | |
| - cron: "0 0 * * *" # Run daily at midnight | |
| workflow_dispatch: | |
| inputs: | |
| WEB_TEST_URL: | |
| description: "When set, all the archived APKs will point to this Catrobat web server, useful for testing web changes. E.g https://web-test.catrob.at" | |
| required: false | |
| type: string | |
| default: "" | |
| BUILD_ALL_FLAVOURS: | |
| description: "When selected all flavours are built and archived as artifacts that can be installed alongside other versions of the same APKs" | |
| required: false | |
| type: boolean | |
| default: false | |
| env: | |
| # Java version for the JDK setup | |
| JAVA_VERSION: 21 | |
| jobs: | |
| build: | |
| name: Build APK | |
| runs-on: ubuntu-latest | |
| env: | |
| WEB_TEST_URL: ${{ inputs.WEB_TEST_URL != '' && format('-PwebTestUrl=''{0}''', inputs.WEB_TEST_URL) || '' }} | |
| ALL_FLAVOURS_PARAMETERS: ${{ inputs.BUILD_ALL_FLAVOURS && 'assembleCreateAtSchoolDebug assembleLunaAndCatDebug assemblePhiroDebug assembleEmbroideryDesignerDebug assemblePocketCodeBetaDebug assembleMindstormsDebug' || '' }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup JDK ${{ env.JAVA_VERSION }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: ${{ env.JAVA_VERSION }} | |
| cache: gradle | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Set up Android SDK | |
| if: ${{ env.ACT }} # Only run on local act setups, as GitHub Actions provides the Android SDK on Ubuntu | |
| uses: android-actions/setup-android@v2 | |
| - name: Build APK | |
| run: ./gradlew ${{ env.WEB_TEST_URL }} -Pindependent='#${{ github.run_number }} ${{ github.ref_name }}' assembleCatroidDebug ${{ env.ALL_FLAVOURS_PARAMETERS }} | |
| test_thomas: | |
| name: test_thomas | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup JDK ${{ env.JAVA_VERSION }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: ${{ env.JAVA_VERSION }} | |
| cache: gradle | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Set up Android SDK | |
| if: ${{ env.ACT }} # Only run on local act setups, as GitHub Actions provides the Android SDK on Ubuntu | |
| uses: android-actions/setup-android@v2 | |
| - name: Enable KVM | |
| if: ${{ env.ACT }} # Only run on local act setups, as normal KVM Setup doesn't work there | |
| run: | | |
| # 1. Create the kvm group | |
| sudo groupadd -f kvm | |
| # 2. Add current user to the group | |
| sudo usermod -aG kvm $USER | |
| # 3. Create the rule file (good for documentation, though it might not trigger) | |
| sudo mkdir -p /etc/udev/rules.d/ | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| # 4. MANUALLY set permissions (This bypasses the need for udevadm reload) | |
| if [ -e /dev/kvm ]; then | |
| sudo chown root:kvm /dev/kvm | |
| sudo chmod 0666 /dev/kvm | |
| echo "Successfully set permissions for /dev/kvm" | |
| else | |
| echo "ERROR: /dev/kvm not found. Did you use the --device flag in act?" | |
| exit 1 | |
| fi | |
| #sudo udevadm control --reload-rules | |
| #sudo udevadm trigger --name-match=kvm | |
| - name: Enable KVM Github | |
| if: ${{ !env.ACT }} # Only run on GitHub-hosted runners | |
| run: | | |
| echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | |
| sudo udevadm control --reload-rules | |
| sudo udevadm trigger --name-match=kvm | |
| - name: Install Emulator Dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| libxtst6 \ | |
| libdbus-1-3 \ | |
| libpulse0\ | |
| #\ | |
| #libnss3 \ | |
| #libxcomposite1 \ | |
| #libxcursor1 \ | |
| #libasound2t64 \ | |
| #libgl1 \ | |
| #libxkbcommon0 \ | |
| #libxml2 \ | |
| #libgbm1 \ | |
| #libxrender1 \ | |
| #libglib2.0-0t64 | |
| #some dependencies provided by ai but not breaking if left out (maybe unnecessary) | |
| - name: run tests | |
| uses: reactivecircus/android-emulator-runner@v2 | |
| with: | |
| api-level: 35 | |
| force-avd-creation: true | |
| emulator-boot-timeout: 900 | |
| emulator-options: > | |
| -no-window | |
| -no-boot-anim | |
| -no-audio | |
| -camera-back none | |
| -camera-front none | |
| -qemu -append panic=1 | |
| arch: x86_64 | |
| script: | | |
| # 1. Kompilieren | |
| ./gradlew compileCatroidDebugSources compileCatroidDebugAndroidTestSources | |
| # 2. Emulator aufwecken | |
| adb shell input keyevent KEYCODE_WAKEUP | |
| # 3. Standard Test-Ausführung ohne Coverage | |
| ./gradlew disableAnimations connectedCatroidDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=org.catrobat.catroid.testsuites.UiEspressoPullRequestTriggerSuite | |
| unit-tests: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| env: | |
| WEB_TEST_URL: ${{ inputs.WEB_TEST_URL != '' && format('-PwebTestUrl=''{0}''', inputs.WEB_TEST_URL) || '' }} | |
| ALL_FLAVOURS_PARAMETERS: ${{ inputs.BUILD_ALL_FLAVOURS && 'assembleCreateAtSchoolDebug assembleLunaAndCatDebug assemblePhiroDebug assembleEmbroideryDesignerDebug assemblePocketCodeBetaDebug assembleMindstormsDebug' || '' }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup JDK ${{ env.JAVA_VERSION }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: ${{ env.JAVA_VERSION }} | |
| cache: gradle | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Run Unit Tests | |
| run: ./gradlew -PenableCoverage jacocoTestCatroidDebugUnitTestReport --full-stacktrace | |
| - name: Test Report | |
| uses: dorny/test-reporter@v1 | |
| if: success() || failure() | |
| with: | |
| name: Unit Tests | |
| path: catroid/build/test-results/**/*TEST*.xml | |
| reporter: java-junit | |
| - name: Upload Unit Test Reports | |
| uses: actions/upload-artifact@v4 | |
| if: success() || failure() | |
| with: | |
| name: unit-test-report | |
| path: | | |
| catroid/build/reports/tests/testCatroidDebugUnitTest | |
| code-analysis: | |
| name: Code Analysis | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| tool: | |
| - { name: "pmd", sarif: false } | |
| - { name: "checkstyle", sarif: true } | |
| - { name: "detekt", sarif: true } | |
| - { name: "lint", sarif: true } | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup JDK ${{ env.JAVA_VERSION }} | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: "temurin" | |
| java-version: ${{ env.JAVA_VERSION }} | |
| cache: gradle | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| - name: Run ${{ matrix.tool.name }} Analysis | |
| run: | | |
| case ${{ matrix.tool.name }} in | |
| "pmd") ./gradlew pmd ;; | |
| "checkstyle") ./gradlew checkstyle ;; | |
| "detekt") ./gradlew detekt ;; | |
| "lint") ./gradlew lintCatroidDebug ;; | |
| esac | |
| - name: Upload ${{ matrix.tool.name }} SARIF Report | |
| uses: github/codeql-action/upload-sarif@v3 | |
| if: ${{ matrix.tool.sarif && (success() || failure()) }} | |
| with: | |
| sarif_file: catroid/build/reports/${{ matrix.tool.name }}.sarif | |
| category: ${{ matrix.tool.name }} | |
| - name: Upload ${{ matrix.tool.name }} HTML Report | |
| uses: actions/upload-artifact@v4 | |
| if: success() || failure() | |
| with: | |
| name: ${{ matrix.tool.name }}-report | |
| path: | | |
| catroid/build/reports/html/${{ matrix.tool.name }}.html |