in pkg/trait/builder.go [69:164]
func (t *builderTrait) Apply(e *Environment) error {
// Building task
builderTask, err := t.builderTask(e)
if err != nil {
e.IntegrationKit.Status.Phase = v1.IntegrationKitPhaseError
e.IntegrationKit.Status.SetCondition("IntegrationKitPropertiesFormatValid", corev1.ConditionFalse,
"IntegrationKitPropertiesFormatValid", fmt.Sprintf("One or more properties where not formatted as expected: %s", err.Error()))
if err := e.Client.Status().Update(e.Ctx, e.IntegrationKit); err != nil {
return err
}
return nil
}
e.Pipeline = append(e.Pipeline, v1.Task{Builder: builderTask})
// Custom tasks
if t.Tasks != nil {
e.Pipeline = append(e.Pipeline, t.customTasks()...)
}
// Publishing task
switch e.Platform.Status.Build.PublishStrategy {
case v1.IntegrationPlatformBuildPublishStrategySpectrum:
e.Pipeline = append(e.Pipeline, v1.Task{Spectrum: &v1.SpectrumTask{
BaseTask: v1.BaseTask{
Name: "spectrum",
},
PublishTask: v1.PublishTask{
BaseImage: e.Platform.Status.Build.BaseImage,
Image: getImageName(e),
Registry: e.Platform.Status.Build.Registry,
},
}})
case v1.IntegrationPlatformBuildPublishStrategyS2I:
e.Pipeline = append(e.Pipeline, v1.Task{S2i: &v1.S2iTask{
BaseTask: v1.BaseTask{
Name: "s2i",
},
Tag: e.IntegrationKit.ResourceVersion,
}})
case v1.IntegrationPlatformBuildPublishStrategyBuildah:
var platform string
var found bool
if platform, found = e.Platform.Status.Build.PublishStrategyOptions[builder.BuildahPlatform]; !found {
platform = ""
t.L.Infof("Attribute platform for buildah not found, default from host will be used!")
} else {
t.L.Infof("User defined %s platform, will be used from buildah!", platform)
}
var executorImage string
if image, found := e.Platform.Status.Build.PublishStrategyOptions[builder.BuildahImage]; found {
executorImage = image
t.L.Infof("User defined executor image %s will be used for buildah", image)
}
e.Pipeline = append(e.Pipeline, v1.Task{Buildah: &v1.BuildahTask{
Platform: platform,
BaseTask: v1.BaseTask{
Name: "buildah",
},
PublishTask: v1.PublishTask{
Image: getImageName(e),
Registry: e.Platform.Status.Build.Registry,
},
Verbose: t.Verbose,
ExecutorImage: executorImage,
}})
//nolint: staticcheck,nolintlint
case v1.IntegrationPlatformBuildPublishStrategyKaniko:
persistentVolumeClaim := e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
cacheEnabled := e.Platform.Status.Build.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
var executorImage string
if image, found := e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoExecutorImage]; found {
executorImage = image
t.L.Infof("User defined executor image %s will be used for kaniko", image)
}
e.Pipeline = append(e.Pipeline, v1.Task{Kaniko: &v1.KanikoTask{
BaseTask: v1.BaseTask{
Name: "kaniko",
},
PublishTask: v1.PublishTask{
Image: getImageName(e),
Registry: e.Platform.Status.Build.Registry,
},
Cache: v1.KanikoTaskCache{
Enabled: &cacheEnabled,
PersistentVolumeClaim: persistentVolumeClaim,
},
Verbose: t.Verbose,
ExecutorImage: executorImage,
}})
}
return nil
}