Skip to content

Provide information about build progress - #1001

Open
ekharkunov wants to merge 5 commits into
devfrom
feature/build-progress
Open

Provide information about build progress#1001
ekharkunov wants to merge 5 commits into
devfrom
feature/build-progress

Conversation

@ekharkunov

@ekharkunov ekharkunov commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Provide information about build progress

Adds live build-progress reporting so clients can show what a build is doing instead of just waiting on a poll loop.

Server streams progress over Server-Sent Events at /job_progress?jobId=.... Builds report coarse stages (SDK, dependencies, compiling, linking, manifests, packaging) plus per-extension file-compile counts and a monotonic overall percentage. Result files are always written before the terminal event, so a subscriber that reacts to "done" sees a consistent /job_status. The endpoint is opt-in (returns 404 when disabled or on older servers) and supports Last-Event-ID reconnect replay with a per-job subscriber cap.

Client consumes the stream on a background thread and forwards updates to an ExtenderProgressListener. Progress is strictly advisory — the existing poll loop remains the sole authority on completion, so a dropped stream or an old server never affects a build.

Fully backward compatible; no change for clients that don't subscribe.

Fixes #582

# Conflicts:
#	server/src/main/java/com/defold/extender/AsyncBuilder.java
#	server/src/main/java/com/defold/extender/Extender.java
#	server/src/main/java/com/defold/extender/remote/RemoteEngineBuilder.java
#	server/src/test/java/com/defold/extender/process/ProcessExecutorTest.java
Comment thread server/src/main/java/com/defold/extender/BuildProgressController.java Dismissed
Comment thread server/src/main/java/com/defold/extender/BuildProgressController.java Dismissed
Comment thread client/src/main/java/com/defold/extender/client/ExtenderProgressListener.java Dismissed
Comment thread server/src/test/java/com/defold/extender/BuildProgressControllerTest.java Dismissed
A non-numeric -Dcom.defold.extender.client.progress-reconnect-attempts
value made the ExtenderProgressConsumer constructor throw
NumberFormatException (CodeQL alert 328). Parse defensively and fall
back to the default of 5, logging a warning.
@github-actions

Copy link
Copy Markdown

Summary - Extender code coverage report

Summary
Generated on: 08/12/2026 - 12:53:45
Coverage date: 08/12/2026 - 12:53:13
Parser: JaCoCo
Assemblies: 14
Classes: 89
Files: 89
Line coverage: 42.6% (2713 of 6359)
Covered lines: 2713
Uncovered lines: 3646
Coverable lines: 6359
Total lines: 13064
Branch coverage: 44.3% (1108 of 2501)
Covered branches: 1108
Total branches: 2501
Method coverage: Feature is only available for sponsors
Tag: 234_31598502600

Coverage

com/defold/extender - 29.9%
Name Line Branch
com/defold/extender 29.9% 35%
com/defold/extender/AppManifestConfiguration 100%
com/defold/extender/AppManifestPlatformConfig 100%
com/defold/extender/AsyncBuilder 0% 0%
com/defold/extender/BuilderConstants 80%
com/defold/extender/BuildProgressController 93.1% 91.6%
com/defold/extender/Configuration 100%
com/defold/extender/Extender 12.5% 11.4%
com/defold/extender/ExtenderApplication 0%
com/defold/extender/ExtenderBuildState 62.5% 57.1%
com/defold/extender/ExtenderConst 0%
com/defold/extender/ExtenderController 16.9% 21.4%
com/defold/extender/ExtenderException 85.7%
com/defold/extender/ExtenderUtil 67% 58%
com/defold/extender/ExtenderYamlSafeConstructor 100%
com/defold/extender/ExtensionManifestValidator 94.6% 86.3%
com/defold/extender/ManifestConfiguration 100%
com/defold/extender/ManifestPlatformConfig 100%
com/defold/extender/PlatformConfig 100%
com/defold/extender/PlatformNotSupportedException 0%
com/defold/extender/SandboxedPath 72.5% 71.4%
com/defold/extender/TemplateExecutor 33.3% 50%
com/defold/extender/Timer 100%
com/defold/extender/TreePrinter 0% 0%
com/defold/extender/Version 0%
com/defold/extender/VersionNotSupportedException 0%
com/defold/extender/WebSecurityConfig 0% 0%
com/defold/extender/WhitelistConfig 100%
com/defold/extender/ZipUtils 80.3% 69.2%
com/defold/extender/builders - 0%
Name Line Branch
com/defold/extender/builders 0% 0%
com/defold/extender/builders/CSharpBuilder 0% 0%
com/defold/extender/cache - 33.3%
Name Line Branch
com/defold/extender/cache 33.3% 16.6%
com/defold/extender/cache/CacheEntry 64.7% 75%
com/defold/extender/cache/CacheKeyGenerator 81.8% 100%
com/defold/extender/cache/DataCache
com/defold/extender/cache/DataCacheFactory 5% 0%
com/defold/extender/cache/DummyDataCache 80%
com/defold/extender/cache/GCPDataCache 0% 0%
com/defold/extender/cache/LocalDiskDataCache 64.7% 16.6%
com/defold/extender/cache/info - 100%
Name Line Branch
com/defold/extender/cache/info 100% ****
com/defold/extender/cache/info/CacheInfoFileParser 100%
com/defold/extender/cache/info/CacheInfoFileWriter 100%
com/defold/extender/cache/info/CacheInfoWrapper 100%
com/defold/extender/log - 14.2%
Name Line Branch
com/defold/extender/log 14.2% 0%
com/defold/extender/log/ExtenderLogEnhancer 0% 0%
com/defold/extender/log/ExtenderLogEnhancerConfiguration 0% 0%
com/defold/extender/log/Markers 80%
com/defold/extender/metrics - 38.8%
Name Line Branch
com/defold/extender/metrics 38.8% ****
com/defold/extender/metrics/MetricsWriter 38.8%
com/defold/extender/process - 72.4%
Name Line Branch
com/defold/extender/process 72.4% 71.8%
com/defold/extender/process/CommandLineTokenizer 95.5% 83.8%
com/defold/extender/process/ProcessExecutor 64.3% 61.1%
com/defold/extender/process/ProcessUtils 0% 0%
com/defold/extender/progress - 90.6%
Name Line Branch
com/defold/extender/progress 90.6% 81.6%
com/defold/extender/progress/BuildProgressEvent 100%
com/defold/extender/progress/BuildProgressService 90.2% 80.5%
com/defold/extender/progress/BuildStage 100% 100%
com/defold/extender/progress/ProgressReporter 40%
com/defold/extender/remote - 89%
Name Line Branch
com/defold/extender/remote 89% 67.2%
com/defold/extender/remote/RemoteBuildException 100%
com/defold/extender/remote/RemoteEngineBuilder 93.3% 71.8%
com/defold/extender/remote/RemoteHostConfiguration 100%
com/defold/extender/remote/RemoteInstanceConfig 100%
com/defold/extender/remote/RemoteProgressRelay 76.7% 60.8%
com/defold/extender/services - 44.9%
Name Line Branch
com/defold/extender/services 44.9% 40.2%
com/defold/extender/services/DataCacheService 79.8% 61.9%
com/defold/extender/services/DefoldSdkService 75.5% 61%
com/defold/extender/services/DefoldSdkServiceConfiguration
com/defold/extender/services/GCPInstanceService 1.1% 0%
com/defold/extender/services/GradleService 0%
com/defold/extender/services/GradleServiceInterface
com/defold/extender/services/HealthReporterService 82.4% 55.2%
com/defold/extender/services/MockGradleService 0%
com/defold/extender/services/RealGradleService 0% 0%
com/defold/extender/services/UserUpdateService 0% 0%
com/defold/extender/services/cocoapods - 51.9%
Name Line Branch
com/defold/extender/services/cocoapods 51.9% 56.6%
com/defold/extender/services/cocoapods/CocoaPodsService 9.4% 20.6%
com/defold/extender/services/cocoapods/CocoaPodsServiceBuildState 16.6% 0%
com/defold/extender/services/cocoapods/CreateBuildSpecArgs 60.7%
com/defold/extender/services/cocoapods/IConfigParser
com/defold/extender/services/cocoapods/LanguageSet 66.6% 50%
com/defold/extender/services/cocoapods/MainPodfile 20%
com/defold/extender/services/cocoapods/PlatformAndLanguageSet 0% 0%
com/defold/extender/services/cocoapods/PlatformSet 0% 0%
com/defold/extender/services/cocoapods/PlistBuddyWrapper 0% 0%
com/defold/extender/services/cocoapods/PodBuildSpec 81.4% 65.4%
com/defold/extender/services/cocoapods/PodfileParser 94.9% 82.2%
com/defold/extender/services/cocoapods/PodfileParsingException 100%
com/defold/extender/services/cocoapods/PodSpec 60.4% 40%
com/defold/extender/services/cocoapods/PodSpecParser 89.5% 79.1%
com/defold/extender/services/cocoapods/PodUtils 63% 51.4%
com/defold/extender/services/cocoapods/ResolvedPods 52.7% 45.6%
com/defold/extender/services/cocoapods/XCConfigParser 94.5% 85.2%
com/defold/extender/services/data - 80.7%
Name Line Branch
com/defold/extender/services/data 80.7% 75%
com/defold/extender/services/data/DefoldSdk 87.5% 75%
com/defold/extender/services/data/GCPInstanceState 0%
com/defold/extender/tracing - 21.8%
Name Line Branch
com/defold/extender/tracing 21.8% 25%
com/defold/extender/tracing/ExtenderExecutor 0% 0%
com/defold/extender/tracing/ExtenderTracerInterceptor 100% 100%
com/defold/extender/tracing/TraceIdInResponseServletFilter 0% 0%
com/defold/extender/utils - 0%
Name Line Branch
com/defold/extender/utils 0% 0%
com/defold/extender/utils/FrameworkUtil 0% 0%
com/defold/extender/utils/PodBuildUtil 0% 0%

@ekharkunov
ekharkunov marked this pull request as ready for review August 12, 2026 12:58
@ekharkunov
ekharkunov requested review from JCash and britzl August 12, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ability to get job progress

2 participants