Skip to content

Enable Spotless verification for Android Port and add PR comments #1126

Enable Spotless verification for Android Port and add PR comments

Enable Spotless verification for Android Port and add PR comments #1126

---
name: Test Android build scripts
'on':
pull_request:
paths:
- '.github/workflows/scripts-android.yml'
- 'scripts/setup-workspace.sh'
- 'scripts/build-android-port.sh'
- 'scripts/build-android-app.sh'
- 'scripts/run-android-instrumentation-tests.sh'
- 'scripts/generate-android-coverage-report.sh'
- 'scripts/android/lib/**/*.java'
- 'scripts/android/tests/**/*.java'
- 'scripts/device-runner-app/**/*.java'
- 'scripts/hellocodenameone/**'
- 'scripts/android/screenshots/**'
- '!scripts/android/screenshots/**/*.md'
- 'scripts/templates/**'
- '!scripts/templates/**/*.md'
- 'CodenameOne/src/**'
- '!CodenameOne/src/**/*.md'
- 'Ports/Android/**'
- '!Ports/Android/**/*.md'
- 'maven/**'
- '!maven/core-unittests/**'
- 'tests/**'
- '!tests/**/*.md'
- '!docs/**'
push:
branches:
- master
paths:
- '.github/workflows/scripts-android.yml'
- 'scripts/setup-workspace.sh'
- 'scripts/build-android-port.sh'
- 'scripts/build-android-app.sh'
- 'scripts/run-android-instrumentation-tests.sh'
- 'scripts/generate-android-coverage-report.sh'
- 'scripts/android/lib/**/*.java'
- 'scripts/android/tests/**/*.java'
- 'scripts/device-runner-app/**/*.java'
- 'scripts/hellocodenameone/**'
- 'scripts/android/screenshots/**'
- '!scripts/android/screenshots/**/*.md'
- 'scripts/templates/**'
- '!scripts/templates/**/*.md'
- 'CodenameOne/src/**'
- '!CodenameOne/src/**/*.md'
- 'Ports/Android/**'
- '!Ports/Android/**/*.md'
- 'maven/**'
- '!maven/core-unittests/**'
- 'tests/**'
- '!tests/**/*.md'
- '!docs/**'
# The token in secrets.CN1SS_GH_TOKEN was generated on
# Oct 16th 2025. If in Oct 2026 builds start failing, it
# means the token needs to be regenerated:
# 1. Go to https://github.com/settings/tokens → “Developer settings” → “Personal access tokens”.
# 2. Choose Fine-grained token (recommended).
# 3. Grant:
# • Repository access → select Codename One
# • Permissions:
# • Contents → Read and Write
# • Pull requests → Read and Write
# • Issues → Read and Write
# 4. Copy the generated token
# 5. Go to https://github.com/codenameone/CodenameOne/settings/secrets/actions
# and edit the CN1SS_GH_TOKEN to use the new token
jobs:
build-android:
name: Build Android ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: "Default: 8"
id: default
- name: "JDK 17"
id: jdk17
java_version: '17'
- name: "JDK 21"
id: jdk21
java_version: '21'
permissions:
contents: read
pull-requests: write
issues: write
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.CN1SS_GH_TOKEN }}
GH_TOKEN: ${{ secrets.CN1SS_GH_TOKEN }}
QUALITY_REPORT_SUPPRESS_MISSING: "1"
steps:
- uses: actions/checkout@v4
- name: Free Disk Space
if: matrix.id != 'default'
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/local/lib/android/sdk/ndk
sudo rm -rf /opt/ghc
sudo rm -rf /usr/share/swift
- name: Setup JDK
if: matrix.id != 'default'
uses: actions/setup-java@v4
with:
java-version: ${{ matrix.java_version }}
distribution: 'zulu'
- name: Set JDK_HOME
if: matrix.id != 'default'
run: echo "JDK_HOME=${JAVA_HOME}" >> $GITHUB_ENV
- name: Configure CN1SS options
if: matrix.id != 'default'
run: |
echo "CN1SS_SKIP_COMMENT=1" >> $GITHUB_ENV
echo "CN1SS_FAIL_ON_MISMATCH=1" >> $GITHUB_ENV
echo "CN1SS_SKIP_COVERAGE=1" >> $GITHUB_ENV
- name: Cache codenameone-tools
uses: actions/cache@v4
with:
path: ${{ runner.temp }}/codenameone-tools
key: ${{ runner.os }}-cn1-tools-${{ hashFiles('scripts/setup-workspace.sh') }}
restore-keys: |
${{ runner.os }}-cn1-tools-
- name: Setup workspace
run: ./scripts/setup-workspace.sh -q -DskipTests
- name: Build Android port
run: ./scripts/build-android-port.sh -q -DskipTests
- name: Build Hello Codename One Android app
id: build-android-app
run: ./scripts/build-android-app.sh -q -DskipTests
- name: Enable KVM for Android emulator
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 Android instrumentation tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 31
arch: x86_64
target: google_apis
script: ./scripts/run-android-instrumentation-tests.sh "${{ steps.build-android-app.outputs.gradle_project_dir }}"
- name: Upload emulator screenshot
if: always() && matrix.id == 'default'
uses: actions/upload-artifact@v4
with:
name: emulator-screenshot
path: artifacts/*.png
if-no-files-found: warn
retention-days: 14
compression-level: 6
- name: Upload Android Jacoco coverage report
if: always() && matrix.id == 'default'
uses: actions/upload-artifact@v4
with:
name: android-jacoco-coverage
path: artifacts/android-coverage-report
if-no-files-found: warn
retention-days: 14
compression-level: 6