Skip to content

Commit 735e41e

Browse files
committed
Simplified pipelines and made deeper reuse across them
Removed the JavaSE ports screemshot tests since it was badly done. Will revisit this in a future PR.
1 parent 851359c commit 735e41e

File tree

63 files changed

+3828
-204
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+3828
-204
lines changed

.github/workflows/pr.yml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -300,20 +300,6 @@ jobs:
300300
- name: Build Android Port
301301
run: ant -noinput -buildfile Ports/Android/build.xml jar
302302

303-
- name: Run Java SE device-runner tests
304-
env:
305-
ARTIFACTS_DIR: ${{ github.workspace }}/artifacts/desktop-device-runner
306-
run: ./scripts/run-javase-device-tests.sh
307-
308-
- name: Upload Java SE device-runner artifacts
309-
if: ${{ always() }}
310-
uses: actions/upload-artifact@v4
311-
with:
312-
name: javase-device-runner
313-
path: artifacts/desktop-device-runner
314-
if-no-files-found: warn
315-
retention-days: 14
316-
317303
- name: Packaging Everything
318304
run: zip -j result.zip CodenameOne/javadocs.zip CodenameOne/dist/CodenameOne.jar CodenameOne/updatedLibs.zip Ports/JavaSE/dist/JavaSE.jar build/CodenameOneDist/CodenameOne/demos/CodenameOne_SRC.zip
319305

scripts/build-android-app.sh

Lines changed: 2 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,7 @@ fi
7474
export ANDROID_SDK_ROOT ANDROID_HOME="$ANDROID_SDK_ROOT"
7575
ba_log "Using Android SDK at $ANDROID_SDK_ROOT"
7676

77-
CN1_VERSION=$(awk -F'[<>]' '/<version>/{print $3; exit}' maven/pom.xml)
78-
ba_log "Detected Codename One version $CN1_VERSION"
79-
80-
WORK_DIR="$TMPDIR/cn1-hello-android"
81-
rm -rf "$WORK_DIR"; mkdir -p "$WORK_DIR"
82-
83-
GROUP_ID="com.codenameone.examples"
84-
ARTIFACT_ID="hello-codenameone"
85-
PACKAGE_NAME="com.codenameone.examples.hellocodenameone"
86-
MAIN_NAME="HelloCodenameOne"
77+
CN1_VERSION="8.0-SNAPSHOT"
8778

8879
SOURCE_PROJECT="$REPO_ROOT/Samples/SampleProjectTemplate"
8980
if [ ! -d "$SOURCE_PROJECT" ]; then
@@ -101,21 +92,7 @@ MAVEN_CMD=(
10192
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn
10293
)
10394

104-
# --- Generate app skeleton ---
105-
ba_log "Generating Codename One application skeleton via codenameone-maven-plugin"
106-
(
107-
cd "$WORK_DIR"
108-
xvfb-run -a "${MAVEN_CMD[@]}" -q \
109-
com.codenameone:codenameone-maven-plugin:7.0.204:generate-app-project \
110-
-DgroupId="$GROUP_ID" \
111-
-DartifactId="$ARTIFACT_ID" \
112-
-Dversion=1.0-SNAPSHOT \
113-
-DsourceProject="$SOURCE_PROJECT" \
114-
-Dcn1Version="7.0.204" \
115-
"${EXTRA_MVN_ARGS[@]}"
116-
)
117-
118-
APP_DIR="$WORK_DIR/$ARTIFACT_ID"
95+
APP_DIR="scripts/hellocodenameone"
11996

12097
# --- Namespace-aware CN1 normalization (xmlstarlet) ---
12198
ROOT_POM="$APP_DIR/pom.xml"
@@ -192,65 +169,9 @@ done < <(find "$APP_DIR" -type f -name pom.xml -print0)
192169
# 5) Build with the property set so any lingering refs resolve to the local snapshot
193170
EXTRA_MVN_ARGS+=("-Dcodenameone.version=${CN1_VERSION}")
194171

195-
# (Optional) quick non-fatal checks
196-
xmlstarlet sel -N "$NS" -t -v "/mvn:project/mvn:properties/mvn:codenameone.version" -n "$ROOT_POM" || true
197-
xmlstarlet sel -N "$NS" -t -c "/mvn:project/mvn:build/mvn:plugins" -n "$ROOT_POM" | head -n 60 || true
198-
199-
200-
201172
[ -d "$APP_DIR" ] || { ba_log "Failed to create Codename One application project" >&2; exit 1; }
202173
[ -f "$APP_DIR/build.sh" ] && chmod +x "$APP_DIR/build.sh"
203174

204-
SETTINGS_FILE="$APP_DIR/common/codenameone_settings.properties"
205-
echo "codename1.arg.android.useAndroidX=true" >> "$SETTINGS_FILE"
206-
[ -f "$SETTINGS_FILE" ] || { ba_log "codenameone_settings.properties not found at $SETTINGS_FILE" >&2; exit 1; }
207-
208-
set_prop() {
209-
local key="$1" value="$2"
210-
if grep -q "^${key}=" "$SETTINGS_FILE"; then
211-
if sed --version >/dev/null 2>&1; then
212-
sed -i -E "s|^${key}=.*$|${key}=${value}|" "$SETTINGS_FILE"
213-
else
214-
sed -i '' -E "s|^${key}=.*$|${key}=${value}|" "$SETTINGS_FILE"
215-
fi
216-
else
217-
printf '\n%s=%s\n' "$key" "$value" >> "$SETTINGS_FILE"
218-
fi
219-
}
220-
221-
# --- Install Codename One application sources ---
222-
PACKAGE_PATH="${PACKAGE_NAME//.//}"
223-
JAVA_DIR="$APP_DIR/common/src/main/java/${PACKAGE_PATH}"
224-
mkdir -p "$JAVA_DIR"
225-
MAIN_FILE_SOURCE="$SCRIPT_DIR/device-runner-app/main/${MAIN_NAME}.java"
226-
if [ ! -f "$MAIN_FILE_SOURCE" ]; then
227-
ba_log "Sample application source not found: $MAIN_FILE_SOURCE" >&2
228-
exit 1
229-
fi
230-
cp "$MAIN_FILE_SOURCE" "$JAVA_DIR/${MAIN_NAME}.java"
231-
232-
ba_log "Setting Codename One application metadata"
233-
set_prop "codename1.packageName" "$PACKAGE_NAME"
234-
set_prop "codename1.mainName" "$MAIN_NAME"
235-
# DeviceRunner integration is handled inside the copied sources, so unit test
236-
# build mode is not required (and is unsupported for local Android builds).
237-
# Ensure trailing newline
238-
tail -c1 "$SETTINGS_FILE" | read -r _ || echo >> "$SETTINGS_FILE"
239-
240-
# --- Install DeviceRunner UI tests ---
241-
TEST_SOURCE_DIR="$SCRIPT_DIR/device-runner-app/tests"
242-
TEST_JAVA_DIR="$APP_DIR/common/src/main/java/${PACKAGE_PATH}/tests"
243-
mkdir -p "$TEST_JAVA_DIR"
244-
if [ ! -d "$TEST_SOURCE_DIR" ]; then
245-
ba_log "DeviceRunner test sources not found: $TEST_SOURCE_DIR" >&2
246-
exit 1
247-
fi
248-
cp "$TEST_SOURCE_DIR"/*.java "$TEST_JAVA_DIR"/
249-
ba_log "Installed DeviceRunner UI tests in $TEST_JAVA_DIR"
250-
251-
# --- Normalize Codename One versions (use Maven Versions Plugin) ---
252-
ba_log "Normalizing Codename One Maven coordinates to $CN1_VERSION"
253-
254175
# --- Build Android gradle project ---
255176
ba_log "Building Android gradle project using Codename One port"
256177
xvfb-run -a "${MAVEN_CMD[@]}" -q -f "$APP_DIR/pom.xml" package \
@@ -342,7 +263,6 @@ if [ -n "${GITHUB_OUTPUT:-}" ]; then
342263
{
343264
echo "gradle_project_dir=$GRADLE_PROJECT_DIR"
344265
echo "apk_path=$APK_PATH"
345-
echo "package_name=$PACKAGE_NAME"
346266
} >> "$GITHUB_OUTPUT"
347267
ba_log "Published GitHub Actions outputs for downstream steps"
348268
fi

scripts/build-ios-app.sh

Lines changed: 5 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -57,17 +57,10 @@ bia_log "Using JAVA17_HOME at $JAVA17_HOME"
5757
bia_log "Using Maven installation at $MAVEN_HOME"
5858
bia_log "Using CocoaPods version $(pod --version 2>/dev/null || echo '<unknown>')"
5959

60-
CN1_VERSION=$(awk -F'[<>]' '/<version>/{print $3; exit}' maven/pom.xml)
61-
bia_log "Detected Codename One version $CN1_VERSION"
62-
63-
WORK_DIR="$TMPDIR/cn1-hello-ios"
60+
CN1_VERSION="8.0-SNAPSHOT"
61+
WORK_DIR="scripts/hellocodenameone"
6462
rm -rf "$WORK_DIR"; mkdir -p "$WORK_DIR"
6563

66-
GROUP_ID="com.codenameone.examples"
67-
ARTIFACT_ID="hello-codenameone-ios"
68-
MAIN_NAME="HelloCodenameOne"
69-
PACKAGE_NAME="com.codenameone.examples.hellocodenameone"
70-
7164
SOURCE_PROJECT="$REPO_ROOT/Samples/SampleProjectTemplate"
7265
if [ ! -d "$SOURCE_PROJECT" ]; then
7366
bia_log "Source project template not found at $SOURCE_PROJECT" >&2
@@ -87,22 +80,7 @@ MAVEN_CMD=(
8780
)
8881

8982
# --- Generate app skeleton ---
90-
bia_log "Generating Codename One application skeleton via codenameone-maven-plugin"
91-
(
92-
cd "$WORK_DIR"
93-
"${MAVEN_CMD[@]}" -q \
94-
com.codenameone:codenameone-maven-plugin:7.0.204:generate-app-project \
95-
-DgroupId="$GROUP_ID" \
96-
-DartifactId="$ARTIFACT_ID" \
97-
-Dversion=1.0-SNAPSHOT \
98-
-DsourceProject="$SOURCE_PROJECT" \
99-
-Dcn1Version="$CN1_VERSION" \
100-
"${EXTRA_MVN_ARGS[@]}"
101-
)
102-
103-
APP_DIR="$WORK_DIR/$ARTIFACT_ID"
104-
[ -d "$APP_DIR" ] || { bia_log "Failed to create Codename One application project" >&2; exit 1; }
105-
[ -f "$APP_DIR/build.sh" ] && chmod +x "$APP_DIR/build.sh"
83+
APP_DIR="scripts/hellocodenameone"
10684

10785
# --- Normalize Codename One versions in generated iOS project POMs ---
10886
ROOT_POM="$APP_DIR/pom.xml"
@@ -138,91 +116,11 @@ while IFS= read -r -d '' P; do
138116
x -u "/mvn:project[mvn:parent/mvn:groupId='com.codenameone' and mvn:parent/mvn:artifactId='codenameone-maven-parent']/mvn:parent/mvn:version" -v "$CN1_VERSION" "$P" || true
139117
done < <(find "$APP_DIR" -type f -name pom.xml -print0)
140118

141-
# 3) Point all com.codenameone deps/plugins to ${codenameone.version}
142-
while IFS= read -r -d '' P; do
143-
x -u "/mvn:project//mvn:dependencies/mvn:dependency[starts-with(mvn:groupId,'com.codenameone')]/mvn:version" -v '${codenameone.version}' "$P" 2>/dev/null || true
144-
x -u "/mvn:project//mvn:build/mvn:plugins/mvn:plugin[starts-with(mvn:groupId,'com.codenameone')]/mvn:version" -v '${codenameone.version}' "$P" 2>/dev/null || true
145-
x -u "/mvn:project//mvn:build/mvn:pluginManagement/mvn:plugins/mvn:plugin[starts-with(mvn:groupId,'com.codenameone')]/mvn:version" -v '${codenameone.version}' "$P" 2>/dev/null || true
146-
done < <(find "$APP_DIR" -type f -name pom.xml -print0)
147-
148-
# 4) Ensure common Maven plugins have versions (helps before parent resolves)
149-
declare -A PIN=(
150-
[org.apache.maven.plugins:maven-compiler-plugin]=3.11.0
151-
[org.apache.maven.plugins:maven-resources-plugin]=3.3.1
152-
[org.apache.maven.plugins:maven-surefire-plugin]=3.2.5
153-
[org.apache.maven.plugins:maven-failsafe-plugin]=3.2.5
154-
[org.apache.maven.plugins:maven-jar-plugin]=3.3.0
155-
[org.apache.maven.plugins:maven-clean-plugin]=3.3.2
156-
[org.apache.maven.plugins:maven-deploy-plugin]=3.1.2
157-
[org.apache.maven.plugins:maven-install-plugin]=3.1.2
158-
[org.apache.maven.plugins:maven-assembly-plugin]=3.6.0
159-
[org.apache.maven.plugins:maven-site-plugin]=4.0.0-M15
160-
[com.codenameone:codenameone-maven-plugin]='${codenameone.version}'
161-
)
162-
add_version_if_missing() {
163-
local pom="$1" g="$2" a="$3" v="$4"
164-
if [ "$(q -t -v "count(/mvn:project/mvn:build/mvn:plugins/mvn:plugin[mvn:groupId='$g' and mvn:artifactId='$a']/mvn:version)" "$pom" 2>/dev/null || echo 0)" = "0" ] &&
165-
[ "$(q -t -v "count(/mvn:project/mvn:build/mvn:plugins/mvn:plugin[mvn:groupId='$g' and mvn:artifactId='$a'])" "$pom" 2>/dev/null || echo 0)" != "0" ]; then
166-
x -s "/mvn:project/mvn:build/mvn:plugins/mvn:plugin[mvn:groupId='$g' and mvn:artifactId='$a']" -t elem -n version -v "$v" "$pom" || true
167-
fi
168-
if [ "$(q -t -v "count(/mvn:project/mvn:build/mvn:pluginManagement/mvn:plugins/mvn:plugin[mvn:groupId='$g' and mvn:artifactId='$a']/mvn:version)" "$pom" 2>/dev/null || echo 0)" = "0" ] &&
169-
[ "$(q -t -v "count(/mvn:project/mvn:build/mvn:pluginManagement/mvn:plugins/mvn:plugin[mvn:groupId='$g' and mvn:artifactId='$a'])" "$pom" 2>/dev/null || echo 0)" != "0" ]; then
170-
x -s "/mvn:project/mvn:build/mvn:pluginManagement/mvn:plugins/mvn:plugin[mvn:groupId='$g' and mvn:artifactId='$a']" -t elem -n version -v "$v" "$pom" || true
171-
fi
172-
}
173-
while IFS= read -r -d '' P; do
174-
for ga in "${!PIN[@]}"; do add_version_if_missing "$P" "${ga%%:*}" "${ga##*:}" "${PIN[$ga]}"; done
175-
done < <(find "$APP_DIR" -type f -name pom.xml -print0)
176-
177-
# 5) Also pass the property when building (already present below)
178119
EXTRA_MVN_ARGS+=("-Dcodenameone.version=${CN1_VERSION}")
179120

180-
SETTINGS_FILE="$APP_DIR/common/codenameone_settings.properties"
181-
if [ ! -f "$SETTINGS_FILE" ]; then
182-
bia_log "codenameone_settings.properties not found at $SETTINGS_FILE" >&2
183-
exit 1
184-
fi
185-
186-
set_property() {
187-
local key="$1" value="$2"
188-
if grep -q "^${key}=" "$SETTINGS_FILE"; then
189-
if sed --version >/dev/null 2>&1; then
190-
sed -i -E "s|^${key}=.*$|${key}=${value}|" "$SETTINGS_FILE"
191-
else
192-
sed -i '' -E "s|^${key}=.*$|${key}=${value}|" "$SETTINGS_FILE"
193-
fi
194-
else
195-
printf '\n%s=%s\n' "$key" "$value" >> "$SETTINGS_FILE"
196-
fi
197-
}
198-
199-
set_property "codename1.packageName" "$PACKAGE_NAME"
200-
set_property "codename1.mainName" "$MAIN_NAME"
201-
202121
# Ensure trailing newline
203122
tail -c1 "$SETTINGS_FILE" | read -r _ || echo >> "$SETTINGS_FILE"
204123

205-
PACKAGE_PATH="${PACKAGE_NAME//.//}"
206-
JAVA_DIR="$APP_DIR/common/src/main/java/${PACKAGE_PATH}"
207-
mkdir -p "$JAVA_DIR"
208-
MAIN_FILE_SOURCE="$SCRIPT_DIR/device-runner-app/main/${MAIN_NAME}.java"
209-
if [ ! -f "$MAIN_FILE_SOURCE" ]; then
210-
bia_log "Sample application source not found: $MAIN_FILE_SOURCE" >&2
211-
exit 1
212-
fi
213-
cp "$MAIN_FILE_SOURCE" "$JAVA_DIR/${MAIN_NAME}.java"
214-
bia_log "Wrote main application class to $JAVA_DIR/${MAIN_NAME}.java"
215-
216-
TEST_SOURCE_DIR="$SCRIPT_DIR/device-runner-app/tests"
217-
TEST_JAVA_DIR="$APP_DIR/common/src/main/java/${PACKAGE_PATH}/tests"
218-
mkdir -p "$TEST_JAVA_DIR"
219-
if [ ! -d "$TEST_SOURCE_DIR" ]; then
220-
bia_log "DeviceRunner test sources not found: $TEST_SOURCE_DIR" >&2
221-
exit 1
222-
fi
223-
cp "$TEST_SOURCE_DIR"/*.java "$TEST_JAVA_DIR"/
224-
bia_log "Installed DeviceRunner UI tests in $TEST_JAVA_DIR"
225-
226124
# --- Build iOS project (ios-source) ---
227125
DERIVED_DATA_DIR="${TMPDIR}/codenameone-ios-derived"
228126
rm -rf "$DERIVED_DATA_DIR"; mkdir -p "$DERIVED_DATA_DIR"
@@ -287,17 +185,16 @@ if [ -z "$WORKSPACE" ]; then
287185
fi
288186
bia_log "Found xcworkspace: $WORKSPACE"
289187

290-
SCHEME="$MAIN_NAME"
291188

292189
# Make these visible to the next GH Actions step
293190
if [ -n "${GITHUB_OUTPUT:-}" ]; then
294191
{
295192
echo "workspace=$WORKSPACE"
296-
echo "scheme=$SCHEME"
193+
echo "scheme=HelloCodenameOne"
297194
} >> "$GITHUB_OUTPUT"
298195
fi
299196

300-
bia_log "Emitted outputs -> workspace=$WORKSPACE, scheme=$SCHEME"
197+
bia_log "Emitted outputs -> workspace=$WORKSPACE, scheme=HelloCodenameOne"
301198

302199
# (Optional) dump xcodebuild -list for debugging
303200
ARTIFACTS_DIR="${ARTIFACTS_DIR:-$REPO_ROOT/artifacts}"

scripts/hellocodenameone/.mvn/jvm.config

Whitespace-only changes.

0 commit comments

Comments
 (0)