forked from codenameone/CodenameOne
-
Notifications
You must be signed in to change notification settings - Fork 0
166 lines (163 loc) · 5.71 KB
/
scripts-android.yml
File metadata and controls
166 lines (163 loc) · 5.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
---
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 }}
steps:
- uses: actions/checkout@v4
- name: Set TMPDIR
run: echo "TMPDIR=${{ runner.temp }}" >> $GITHUB_ENV
- 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
disk-size: 2048M
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