Cache Go modules in platform builder

This commit is contained in:
npc0-hue
2026-08-20 10:01:26 +08:00
parent 7fec2da040
commit 585c32746e
10 changed files with 52 additions and 8 deletions
+6
View File
@@ -36,6 +36,7 @@ type Config struct {
BuilderImage string
BuilderSourceDir string
BuilderWorkspaceDir string
BuilderCacheDir string
BuilderTimeoutSeconds int
}
@@ -71,6 +72,10 @@ func Load() Config {
if builderWorkspaceDir == "" {
builderWorkspaceDir = filepath.Join(dataDir, "distribution-builds")
}
builderCacheDir := strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_CACHE_DIR"))
if builderCacheDir == "" {
builderCacheDir = filepath.Join(dataDir, "distribution-build-cache")
}
return Config{
Addr: addr,
@@ -89,6 +94,7 @@ func Load() Config {
BuilderImage: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_IMAGE")), defaultBuilderImage),
BuilderSourceDir: strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_SOURCE_DIR")),
BuilderWorkspaceDir: builderWorkspaceDir,
BuilderCacheDir: builderCacheDir,
BuilderTimeoutSeconds: defaultPositiveInt(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_TIMEOUT_SECONDS")), defaultBuilderTimeoutSeconds),
}
}
+5 -2
View File
@@ -22,6 +22,7 @@ func TestLoadUsesDefaultAddress(t *testing.T) {
t.Setenv("PLATFORM_BUILDER_IMAGE", "")
t.Setenv("PLATFORM_BUILDER_SOURCE_DIR", "")
t.Setenv("PLATFORM_BUILDER_WORKSPACE_DIR", "")
t.Setenv("PLATFORM_BUILDER_CACHE_DIR", "")
t.Setenv("PLATFORM_BUILDER_TIMEOUT_SECONDS", "")
cfg := Load()
@@ -34,7 +35,7 @@ func TestLoadUsesDefaultAddress(t *testing.T) {
if cfg.MetadataPath != filepath.Join(".platform-data", "metadata.json") || cfg.LogDir != filepath.Join(".platform-data", "logs") {
t.Fatalf("unexpected default storage paths: %+v", cfg)
}
if cfg.BuilderDockerBinary != defaultBuilderDockerBinary || cfg.BuilderImage != defaultBuilderImage || cfg.BuilderSourceDir != "" || cfg.BuilderWorkspaceDir != filepath.Join(".platform-data", "distribution-builds") || cfg.BuilderTimeoutSeconds != defaultBuilderTimeoutSeconds {
if cfg.BuilderDockerBinary != defaultBuilderDockerBinary || cfg.BuilderImage != defaultBuilderImage || cfg.BuilderSourceDir != "" || cfg.BuilderWorkspaceDir != filepath.Join(".platform-data", "distribution-builds") || cfg.BuilderCacheDir != filepath.Join(".platform-data", "distribution-build-cache") || cfg.BuilderTimeoutSeconds != defaultBuilderTimeoutSeconds {
t.Fatalf("unexpected default builder config: %+v", cfg)
}
}
@@ -54,6 +55,7 @@ func TestLoadUsesConfiguredAddress(t *testing.T) {
t.Setenv("PLATFORM_BUILDER_IMAGE", "registry.example.test/distribution-builder:2.0.0")
t.Setenv("PLATFORM_BUILDER_SOURCE_DIR", "/srv/run-source")
t.Setenv("PLATFORM_BUILDER_WORKSPACE_DIR", "/srv/distribution-builds")
t.Setenv("PLATFORM_BUILDER_CACHE_DIR", "/srv/distribution-build-cache")
t.Setenv("PLATFORM_BUILDER_TIMEOUT_SECONDS", "900")
cfg := Load()
@@ -63,7 +65,7 @@ func TestLoadUsesConfiguredAddress(t *testing.T) {
if cfg.StorageBackend != "mysql" || cfg.MySQLDSN != "platform:platform@tcp(127.0.0.1:3306)/platform?parseTime=true" || cfg.DataDir != "/tmp/platform-data" || cfg.MetadataPath != "/tmp/platform-metadata.json" || cfg.LogDir != "/tmp/platform-logs" || cfg.LogBodyBackend != "file" || cfg.BootstrapAdminEmail != "admin@example.test" || cfg.BootstrapAdminPassword != "configured-secret" || cfg.SecretEnvelopeKey != "configured-envelope-key-at-least-32-bytes" {
t.Fatalf("unexpected configured storage: %+v", cfg)
}
if cfg.BuilderDockerBinary != "/usr/local/bin/docker" || cfg.BuilderImage != "registry.example.test/distribution-builder:2.0.0" || cfg.BuilderSourceDir != "/srv/run-source" || cfg.BuilderWorkspaceDir != "/srv/distribution-builds" || cfg.BuilderTimeoutSeconds != 900 {
if cfg.BuilderDockerBinary != "/usr/local/bin/docker" || cfg.BuilderImage != "registry.example.test/distribution-builder:2.0.0" || cfg.BuilderSourceDir != "/srv/run-source" || cfg.BuilderWorkspaceDir != "/srv/distribution-builds" || cfg.BuilderCacheDir != "/srv/distribution-build-cache" || cfg.BuilderTimeoutSeconds != 900 {
t.Fatalf("unexpected configured builder: %+v", cfg)
}
}
@@ -126,6 +128,7 @@ func clearPlatformEnv(t *testing.T) {
"PLATFORM_BUILDER_IMAGE",
"PLATFORM_BUILDER_SOURCE_DIR",
"PLATFORM_BUILDER_WORKSPACE_DIR",
"PLATFORM_BUILDER_CACHE_DIR",
"PLATFORM_BUILDER_TIMEOUT_SECONDS",
} {
t.Setenv(key, "")