|
|
|
@ -633,6 +633,7 @@ type appDeliveryTemplateConfig struct {
|
|
|
|
ManifestsRepo string
|
|
|
|
ManifestsRepo string
|
|
|
|
ManifestsBranch string
|
|
|
|
ManifestsBranch string
|
|
|
|
ClusterDomain string
|
|
|
|
ClusterDomain string
|
|
|
|
|
|
|
|
RuntimeHostnameSuffix string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var deliveryAppName = regexp.MustCompile(`^[a-z0-9]([a-z0-9-]{0,45}[a-z0-9])?$`)
|
|
|
|
var deliveryAppName = regexp.MustCompile(`^[a-z0-9]([a-z0-9-]{0,45}[a-z0-9])?$`)
|
|
|
|
@ -656,9 +657,9 @@ func renderAppDelivery(cfg config.Config) ([]byte, error) {
|
|
|
|
AppName: cfg.Delivery.AppName, AppRepository: appRepository, AppRepoURL: cfg.Delivery.AppRepoURL,
|
|
|
|
AppName: cfg.Delivery.AppName, AppRepository: appRepository, AppRepoURL: cfg.Delivery.AppRepoURL,
|
|
|
|
AppRepoRef: cfg.Delivery.AppRepoRef, ProductionBranch: cfg.Delivery.ProductionBranch, ImageRepository: cfg.Delivery.ImageRepository,
|
|
|
|
AppRepoRef: cfg.Delivery.AppRepoRef, ProductionBranch: cfg.Delivery.ProductionBranch, ImageRepository: cfg.Delivery.ImageRepository,
|
|
|
|
BuildStrategy: cfg.Delivery.BuildStrategy, BuildOutputDirectory: cfg.Delivery.BuildOutputDirectory, BuildConfiguration: cfg.Delivery.BuildConfiguration,
|
|
|
|
BuildStrategy: cfg.Delivery.BuildStrategy, BuildOutputDirectory: cfg.Delivery.BuildOutputDirectory, BuildConfiguration: cfg.Delivery.BuildConfiguration,
|
|
|
|
ForgejoBaseURL: origin, ForgejoOwner: cfg.Git.Owner, ManifestsURL: forgejo.CloneURL(origin, cfg.Git.Owner, cfg.Flux.ManifestsRepo), ManifestsRepo: cfg.Flux.ManifestsRepo, ManifestsBranch: cfg.Flux.Branch, ClusterDomain: cfg.Flux.ClusterDomain,
|
|
|
|
ForgejoBaseURL: origin, ForgejoOwner: cfg.Git.Owner, ManifestsURL: forgejo.CloneURL(origin, cfg.Git.Owner, cfg.Flux.ManifestsRepo), ManifestsRepo: cfg.Flux.ManifestsRepo, ManifestsBranch: cfg.Flux.Branch, ClusterDomain: cfg.Flux.ClusterDomain, RuntimeHostnameSuffix: deliveryRuntimeHostnameSuffix(cfg.Flux.ClusterDomain),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for name, value := range map[string]string{"appRepository": values.AppRepository, "appRepoUrl": values.AppRepoURL, "appRepoRef": values.AppRepoRef, "productionBranch": values.ProductionBranch, "imageRepository": values.ImageRepository, "buildOutputDirectory": values.BuildOutputDirectory, "buildConfiguration": values.BuildConfiguration, "forgejoBaseUrl": values.ForgejoBaseURL, "forgejoOwner": values.ForgejoOwner, "manifestsUrl": values.ManifestsURL, "manifestsRepo": values.ManifestsRepo, "manifestsBranch": values.ManifestsBranch, "clusterDomain": values.ClusterDomain} {
|
|
|
|
for name, value := range map[string]string{"appRepository": values.AppRepository, "appRepoUrl": values.AppRepoURL, "appRepoRef": values.AppRepoRef, "productionBranch": values.ProductionBranch, "imageRepository": values.ImageRepository, "buildOutputDirectory": values.BuildOutputDirectory, "buildConfiguration": values.BuildConfiguration, "forgejoBaseUrl": values.ForgejoBaseURL, "forgejoOwner": values.ForgejoOwner, "manifestsUrl": values.ManifestsURL, "manifestsRepo": values.ManifestsRepo, "manifestsBranch": values.ManifestsBranch, "clusterDomain": values.ClusterDomain, "runtimeHostnameSuffix": values.RuntimeHostnameSuffix} {
|
|
|
|
if value == "" || strings.ContainsAny(value, "\r\n") || config.RedactURL(value) != value {
|
|
|
|
if value == "" || strings.ContainsAny(value, "\r\n") || config.RedactURL(value) != value {
|
|
|
|
return nil, fmt.Errorf("delivery %s cannot be empty or contain credentials", name)
|
|
|
|
return nil, fmt.Errorf("delivery %s cannot be empty or contain credentials", name)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -674,6 +675,14 @@ func renderAppDelivery(cfg config.Config) ([]byte, error) {
|
|
|
|
return bytes.ReplaceAll(rendered.Bytes(), []byte("\r\n"), []byte("\n")), nil
|
|
|
|
return bytes.ReplaceAll(rendered.Bytes(), []byte("\r\n"), []byte("\n")), nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func deliveryRuntimeHostnameSuffix(clusterDomain string) string {
|
|
|
|
|
|
|
|
labels := strings.Split(clusterDomain, ".")
|
|
|
|
|
|
|
|
if len(labels) < 3 {
|
|
|
|
|
|
|
|
return "." + clusterDomain
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return "-" + strings.Join(labels[:len(labels)-2], "-") + "." + strings.Join(labels[len(labels)-2:], ".")
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func deliveryRepository(baseURL, repositoryURL string) (string, error) {
|
|
|
|
func deliveryRepository(baseURL, repositoryURL string) (string, error) {
|
|
|
|
base, err := canonicalForgejoOrigin(baseURL)
|
|
|
|
base, err := canonicalForgejoOrigin(baseURL)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
|