Skip to content

test job 1 more time #13

test job 1 more time

test job 1 more time #13

Workflow file for this run

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/