Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions server/README_METRICS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Below is the table with metrics description that collected inside application. T
|extender.job.sdk |Counter |Unit |How many times exact Defold sdk was used for building |
|extender.job.gradle.download |Timer |Milliseconds |How long Gradle was downloading dependencies |
|extender.job.cocoapods.install |Timer |Milliseconds |How long Cocoapods was installing dependencies |
|extender.job.spm.resolve |Timer |Milliseconds |How long Swift package dependencies were resolving and building |
|extender.job.build |Timer |Milliseconds |How long build was |
|extender.job.remoteBuild |Timer |Milliseconds |How long the remote build was |
|extender.job.zip |Timer |Milliseconds |How long result was zipping |
Expand All @@ -22,6 +23,7 @@ Below is the table with metrics description that collected inside application. T
|extender.job.cache.download |Timer |Milliseconds |How long cache downloading operation was |
|extender.build.task |Counter |Unit |How many builds were handled |
|extender.service.cocoapods.get |Timer |Milliseconds |How long Cocoapods dependecies downloading was |
|extender.service.spm.get |Timer |Milliseconds |How long Swift package resolution inside the SPM service was |
|extender.service.sdk.get.download |Counter |Unit |How many times Defold sdk was downloaded |
|extender.service.sdk.get.duration |Timer |Milliseconds |How long Defold sdk was downloading |
|extender.service.gradle.unpack |Timer |Milliseconds |How long Gradle was unpacking dependencies |
Expand Down
4 changes: 3 additions & 1 deletion server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,9 @@ test {
// builders they need (see docker-compose.yml profiles)
// -PdefoldVersions=all|ci|latest|1.12.3 which Defold SDK versions to test against
// -PreuseStack=true leave the docker stack running between runs
["targetPlatforms", "defoldVersions", "reuseStack"].each { name ->
// -PspmE2e=true run the network-touching SPM service test on a Mac
// with Xcode + xcodegen installed
["targetPlatforms", "defoldVersions", "reuseStack", "spmE2e"].each { name ->
if (project.hasProperty(name)) {
systemProperty "extender.test.${name}", project.getProperty(name)
}
Expand Down
7 changes: 7 additions & 0 deletions server/configs/application-standalone-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,10 @@ extender:
repo-update-cron: "0 0 * * * *" # update spec repo every 1 h
cache-dir-rotate-cron: "0 10 2 * * *" # once per day
old-cache-clean-cron: "0 10 6 * * *" # once per day after directory rotation
spm:
enabled: true
home-dir-prefix: /tmp/extender/.swiftpm
default-developer-dir: /Applications/Xcode.app/Contents/Developer
xcodegen-path: /opt/homebrew/bin/xcodegen
cache-dir-rotate-cron: "0 20 2 * * *" # once per day
old-cache-clean-cron: "0 20 6 * * *" # once per day after directory rotation
5 changes: 4 additions & 1 deletion server/scripts/standalone/setup-standalone-env.sh
Original file line number Diff line number Diff line change
Expand Up @@ -218,4 +218,7 @@ echo "[setup] Installing dotnet"
install_dotnet

echo "[setup] Install hmap utility"
brew install milend/taps/hmap
brew install milend/taps/hmap

echo "[setup] Install xcodegen (Swift Package Manager support)"
brew install xcodegen
10 changes: 9 additions & 1 deletion server/src/main/java/com/defold/extender/AsyncBuilder.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.defold.extender.services.GradleService;
import com.defold.extender.services.cocoapods.CocoaPodsService;
import com.defold.extender.services.data.DefoldSdk;
import com.defold.extender.services.spm.SwiftPackageManagerService;

import org.apache.commons.io.FileUtils;
import org.eclipse.jetty.io.EofException;
Expand All @@ -38,6 +39,7 @@ public class AsyncBuilder {
private DefoldSdkService defoldSdkService;
private GradleService gradleService;
private CocoaPodsService cocoaPodsService;
private SwiftPackageManagerService swiftPackageManagerService;
private BuildProgressService buildProgressService;
private File jobResultLocation;
private long resultLifetime;
Expand All @@ -46,12 +48,14 @@ public class AsyncBuilder {
public AsyncBuilder(DefoldSdkService defoldSdkService,
GradleService gradleService,
Optional<CocoaPodsService> cocoaPodsService,
Optional<SwiftPackageManagerService> swiftPackageManagerService,
BuildProgressService buildProgressService,
@Value("${extender.job-result.location}") String jobResultLocation,
@Value("${extender.job-result.lifetime:1200000}") long jobResultLifetime) {
this.defoldSdkService = defoldSdkService;
this.gradleService = gradleService;
cocoaPodsService.ifPresent(val -> { this.cocoaPodsService = val; });
swiftPackageManagerService.ifPresent(val -> { this.swiftPackageManagerService = val; });
this.buildProgressService = buildProgressService;
this.jobResultLocation = new File(jobResultLocation);
this.keepJobDirectory = System.getenv("DM_DEBUG_KEEP_JOB_FOLDER") != null || System.getenv("DM_DEBUG_JOB_FOLDER") != null;
Expand Down Expand Up @@ -124,11 +128,15 @@ public void asyncBuildEngine(MetricsWriter metricsWriter, String platform, Strin
metricsWriter.measureGradleDownload();
}

// Resolve CocoaPods dependencies
// Resolve CocoaPods and Swift package dependencies
if (ExtenderUtil.isAppleTarget(platform)) {
progressReporter.stage(BuildStage.DEPENDENCIES, "Resolving CocoaPods dependencies");
extender.resolve(cocoaPodsService);
metricsWriter.measureCocoaPodsInstallation();

progressReporter.stage(BuildStage.DEPENDENCIES, "Resolving Swift package dependencies");
extender.resolve(swiftPackageManagerService);
metricsWriter.measureSpmResolution();
}

// Build engine
Expand Down
Loading
Loading