test job 1 more time #13
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 }} | |
| 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 | |
| ui-tests-main: | |
| name: UI Tests main | |
| 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: Install Emulator Dependencies | |
| if: ${{ env.ACT }} # Only run on local act setups, as GitHub Actions provides the dependencies on Ubuntu | |
| 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: 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: 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. Compile | |
| ./gradlew compileCatroidDebugSources compileCatroidDebugAndroidTestSources | |
| # 2. Standard Test-Run without Coverage | |
| ./gradlew disableAnimations -PenableCoverage createCatroidDebugAndroidTestCoverageReport -Pandroid.testInstrumentationRunnerArguments.class=org.catrobat.catroid.testsuites.UiEspressoPullRequestTriggerSuite | |
| continue-on-error: true | |
| - name: Upload Test Reports Folder | |
| uses: actions/upload-artifact@v4 | |
| if: always() # IMPORTANT: Upload reports regardless of status | |
| with: | |
| name: reports | |
| path: catroid/build/reports/androidTests/connected/debug/flavors/catroid/ | |
| - name: Upload Coverage Report | |
| uses: actions/upload-artifact@v4 | |
| if: always() # IMPORTANT: Upload reports regardless of status | |
| with: | |
| name: coverage-report | |
| path: catroid/build/reports/coverage/androidTest/catroid/debug/connected/ |