fix: refresh run source during distribution builds
This commit is contained in:
+42
-36
@@ -12,6 +12,8 @@ const defaultAddr = ":8080"
|
||||
const defaultDataDir = ".platform-data"
|
||||
const defaultStorageBackend = "file"
|
||||
const defaultBuilderDockerBinary = "docker"
|
||||
const defaultBuilderSourceRepository = "git@git.npc0.com:admin343/run.git"
|
||||
const defaultBuilderSourceRevision = "main"
|
||||
|
||||
// defaultBuilderImage names an explicit toolchain version rather than a
|
||||
// floating tag such as latest. Operators who want digest pinning override
|
||||
@@ -20,24 +22,26 @@ const defaultBuilderImage = "browser-platform-distribution-builder:1.0.0"
|
||||
const defaultBuilderTimeoutSeconds = 1800
|
||||
|
||||
type Config struct {
|
||||
Addr string
|
||||
StorageBackend string
|
||||
MySQLDSN string
|
||||
DataDir string
|
||||
MetadataPath string
|
||||
LogDir string
|
||||
ArtifactDir string
|
||||
LogBodyBackend string
|
||||
BootstrapAdminEmail string
|
||||
BootstrapAdminPassword string
|
||||
SecretEnvelopeKey string
|
||||
AIProviderMode string
|
||||
BuilderDockerBinary string
|
||||
BuilderImage string
|
||||
BuilderSourceDir string
|
||||
BuilderWorkspaceDir string
|
||||
BuilderCacheDir string
|
||||
BuilderTimeoutSeconds int
|
||||
Addr string
|
||||
StorageBackend string
|
||||
MySQLDSN string
|
||||
DataDir string
|
||||
MetadataPath string
|
||||
LogDir string
|
||||
ArtifactDir string
|
||||
LogBodyBackend string
|
||||
BootstrapAdminEmail string
|
||||
BootstrapAdminPassword string
|
||||
SecretEnvelopeKey string
|
||||
AIProviderMode string
|
||||
BuilderDockerBinary string
|
||||
BuilderImage string
|
||||
BuilderSourceDir string
|
||||
BuilderSourceRepository string
|
||||
BuilderSourceRevision string
|
||||
BuilderWorkspaceDir string
|
||||
BuilderCacheDir string
|
||||
BuilderTimeoutSeconds int
|
||||
}
|
||||
|
||||
func Load() Config {
|
||||
@@ -78,24 +82,26 @@ func Load() Config {
|
||||
}
|
||||
|
||||
return Config{
|
||||
Addr: addr,
|
||||
StorageBackend: storageBackend,
|
||||
MySQLDSN: strings.TrimSpace(os.Getenv("PLATFORM_MYSQL_DSN")),
|
||||
DataDir: dataDir,
|
||||
MetadataPath: metadataPath,
|
||||
LogDir: logDir,
|
||||
ArtifactDir: artifactDir,
|
||||
LogBodyBackend: logBodyBackend,
|
||||
BootstrapAdminEmail: strings.TrimSpace(os.Getenv("PLATFORM_BOOTSTRAP_ADMIN_EMAIL")),
|
||||
BootstrapAdminPassword: os.Getenv("PLATFORM_BOOTSTRAP_ADMIN_PASSWORD"),
|
||||
SecretEnvelopeKey: os.Getenv("PLATFORM_SECRET_ENVELOPE_KEY"),
|
||||
AIProviderMode: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_AI_PROVIDER_MODE")), "live"),
|
||||
BuilderDockerBinary: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_DOCKER_BINARY")), defaultBuilderDockerBinary),
|
||||
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),
|
||||
Addr: addr,
|
||||
StorageBackend: storageBackend,
|
||||
MySQLDSN: strings.TrimSpace(os.Getenv("PLATFORM_MYSQL_DSN")),
|
||||
DataDir: dataDir,
|
||||
MetadataPath: metadataPath,
|
||||
LogDir: logDir,
|
||||
ArtifactDir: artifactDir,
|
||||
LogBodyBackend: logBodyBackend,
|
||||
BootstrapAdminEmail: strings.TrimSpace(os.Getenv("PLATFORM_BOOTSTRAP_ADMIN_EMAIL")),
|
||||
BootstrapAdminPassword: os.Getenv("PLATFORM_BOOTSTRAP_ADMIN_PASSWORD"),
|
||||
SecretEnvelopeKey: os.Getenv("PLATFORM_SECRET_ENVELOPE_KEY"),
|
||||
AIProviderMode: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_AI_PROVIDER_MODE")), "live"),
|
||||
BuilderDockerBinary: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_DOCKER_BINARY")), defaultBuilderDockerBinary),
|
||||
BuilderImage: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_IMAGE")), defaultBuilderImage),
|
||||
BuilderSourceDir: strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_SOURCE_DIR")),
|
||||
BuilderSourceRepository: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_SOURCE_REPOSITORY")), defaultBuilderSourceRepository),
|
||||
BuilderSourceRevision: defaultString(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_SOURCE_REVISION")), defaultBuilderSourceRevision),
|
||||
BuilderWorkspaceDir: builderWorkspaceDir,
|
||||
BuilderCacheDir: builderCacheDir,
|
||||
BuilderTimeoutSeconds: defaultPositiveInt(strings.TrimSpace(os.Getenv("PLATFORM_BUILDER_TIMEOUT_SECONDS")), defaultBuilderTimeoutSeconds),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@ func TestLoadUsesDefaultAddress(t *testing.T) {
|
||||
t.Setenv("PLATFORM_BUILDER_DOCKER_BINARY", "")
|
||||
t.Setenv("PLATFORM_BUILDER_IMAGE", "")
|
||||
t.Setenv("PLATFORM_BUILDER_SOURCE_DIR", "")
|
||||
t.Setenv("PLATFORM_BUILDER_SOURCE_REPOSITORY", "")
|
||||
t.Setenv("PLATFORM_BUILDER_SOURCE_REVISION", "")
|
||||
t.Setenv("PLATFORM_BUILDER_WORKSPACE_DIR", "")
|
||||
t.Setenv("PLATFORM_BUILDER_CACHE_DIR", "")
|
||||
t.Setenv("PLATFORM_BUILDER_TIMEOUT_SECONDS", "")
|
||||
@@ -35,7 +37,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.BuilderCacheDir != filepath.Join(".platform-data", "distribution-build-cache") || cfg.BuilderTimeoutSeconds != defaultBuilderTimeoutSeconds {
|
||||
if cfg.BuilderDockerBinary != defaultBuilderDockerBinary || cfg.BuilderImage != defaultBuilderImage || cfg.BuilderSourceDir != "" || cfg.BuilderSourceRepository != defaultBuilderSourceRepository || cfg.BuilderSourceRevision != defaultBuilderSourceRevision || 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 +56,8 @@ func TestLoadUsesConfiguredAddress(t *testing.T) {
|
||||
t.Setenv("PLATFORM_BUILDER_DOCKER_BINARY", "/usr/local/bin/docker")
|
||||
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_SOURCE_REPOSITORY", "https://git.example.test/admin/run.git")
|
||||
t.Setenv("PLATFORM_BUILDER_SOURCE_REVISION", "release")
|
||||
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")
|
||||
@@ -65,7 +69,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.BuilderCacheDir != "/srv/distribution-build-cache" || 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.BuilderSourceRepository != "https://git.example.test/admin/run.git" || cfg.BuilderSourceRevision != "release" || cfg.BuilderWorkspaceDir != "/srv/distribution-builds" || cfg.BuilderCacheDir != "/srv/distribution-build-cache" || cfg.BuilderTimeoutSeconds != 900 {
|
||||
t.Fatalf("unexpected configured builder: %+v", cfg)
|
||||
}
|
||||
}
|
||||
@@ -127,6 +131,8 @@ func clearPlatformEnv(t *testing.T) {
|
||||
"PLATFORM_BUILDER_DOCKER_BINARY",
|
||||
"PLATFORM_BUILDER_IMAGE",
|
||||
"PLATFORM_BUILDER_SOURCE_DIR",
|
||||
"PLATFORM_BUILDER_SOURCE_REPOSITORY",
|
||||
"PLATFORM_BUILDER_SOURCE_REVISION",
|
||||
"PLATFORM_BUILDER_WORKSPACE_DIR",
|
||||
"PLATFORM_BUILDER_CACHE_DIR",
|
||||
"PLATFORM_BUILDER_TIMEOUT_SECONDS",
|
||||
|
||||
Reference in New Issue
Block a user