This is an automated email from the ASF dual-hosted git repository.

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit b424b959335ed43f7cb570c37065500cd869ff6c
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Mon Dec 16 12:20:50 2019 +0100

    feat(build): Better handle tasks build directory sharing
---
 pkg/builder/builder.go               | 26 +++++++++++++-------------
 pkg/builder/builder_steps.go         |  2 +-
 pkg/controller/build/schedule_pod.go |  4 ++--
 pkg/trait/builder.go                 | 21 ++++++++++-----------
 4 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/pkg/builder/builder.go b/pkg/builder/builder.go
index 2683386..4cf5c3d 100644
--- a/pkg/builder/builder.go
+++ b/pkg/builder/builder.go
@@ -51,24 +51,24 @@ func New(c client.Client) Builder {
 func (b *defaultBuilder) Run(build v1alpha1.BuilderTask) v1alpha1.BuildStatus {
        result := v1alpha1.BuildStatus{}
 
-       // create tmp path
-       buildDir := build.BuildDir
-       if buildDir == "" {
-               buildDir = os.TempDir()
-       }
-       builderPath, err := ioutil.TempDir(buildDir, "builder-")
-       if err != nil {
-               log.Error(err, "Unexpected error while creating a temporary 
dir")
+       var buildDir string
+       if build.BuildDir == "" {
+               tmpDir, err := ioutil.TempDir(os.TempDir(), "builder-")
+               if err != nil {
+                       log.Error(err, "Unexpected error while creating a 
temporary dir")
 
-               result.Phase = v1alpha1.BuildPhaseFailed
-               result.Error = err.Error()
+                       result.Phase = v1alpha1.BuildPhaseFailed
+                       result.Error = err.Error()
+               }
+               buildDir = tmpDir
+               defer os.RemoveAll(buildDir)
+       } else {
+               buildDir = build.BuildDir
        }
 
-       defer os.RemoveAll(builderPath)
-
        c := Context{
                Client:    b.client,
-               Path:      builderPath,
+               Path:      buildDir,
                Namespace: build.Meta.Namespace,
                Build:     build,
                BaseImage: build.BaseImage,
diff --git a/pkg/builder/builder_steps.go b/pkg/builder/builder_steps.go
index 4b84f9f..429d9b8 100644
--- a/pkg/builder/builder_steps.go
+++ b/pkg/builder/builder_steps.go
@@ -297,7 +297,7 @@ func packager(ctx *Context, selector artifactsSelector) 
error {
                return err
        }
 
-       tarFileName := path.Join(ctx.Build.BuildDir, "package", 
ctx.Build.Meta.Name)
+       tarFileName := path.Join(ctx.Path, "package", "occi.tar")
        tarFileDir := path.Dir(tarFileName)
 
        err = os.MkdirAll(tarFileDir, 0777)
diff --git a/pkg/controller/build/schedule_pod.go 
b/pkg/controller/build/schedule_pod.go
index 74ff938..30c2c38 100644
--- a/pkg/controller/build/schedule_pod.go
+++ b/pkg/controller/build/schedule_pod.go
@@ -141,7 +141,7 @@ func (action *schedulePodAction) newBuildPod(ctx 
context.Context, build *v1alpha
                        } else {
                                action.operatorImage = operatorImage
                        }
-                       action.addCamelTaskToPod(build, task.Builder, pod)
+                       action.addBuilderTaskToPod(build, task.Builder, pod)
                } else if task.Kaniko != nil {
                        action.addKanikoTaskToPod(task.Kaniko, pod)
                }
@@ -154,7 +154,7 @@ func (action *schedulePodAction) newBuildPod(ctx 
context.Context, build *v1alpha
        return pod, nil
 }
 
-func (action *schedulePodAction) addCamelTaskToPod(build *v1alpha1.Build, task 
*v1alpha1.BuilderTask, pod *corev1.Pod) {
+func (action *schedulePodAction) addBuilderTaskToPod(build *v1alpha1.Build, 
task *v1alpha1.BuilderTask, pod *corev1.Pod) {
        pod.Spec.InitContainers = append(pod.Spec.InitContainers, 
corev1.Container{
                Name:            task.Name,
                Image:           action.operatorImage,
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index 3001ca2..b65fd8c 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -60,8 +60,8 @@ func (t *builderTrait) Configure(e *Environment) (bool, 
error) {
 }
 
 func (t *builderTrait) Apply(e *Environment) error {
-       camelTask := t.camelTask(e)
-       e.BuildTasks = append(e.BuildTasks, v1alpha1.Task{Builder: camelTask})
+       builderTask := t.builderTask(e)
+       e.BuildTasks = append(e.BuildTasks, v1alpha1.Task{Builder: builderTask})
 
        if platform.SupportsKanikoPublishStrategy(e.Platform) {
                kanikoTask, err := t.kanikoTask(e)
@@ -69,7 +69,7 @@ func (t *builderTrait) Apply(e *Environment) error {
                        return err
                }
                mount := corev1.VolumeMount{Name: "camel-k-builder", MountPath: 
kaniko.BuildDir}
-               camelTask.VolumeMounts = append(camelTask.VolumeMounts, mount)
+               builderTask.VolumeMounts = append(builderTask.VolumeMounts, 
mount)
                kanikoTask.VolumeMounts = append(kanikoTask.VolumeMounts, mount)
 
                if e.Platform.Status.Build.IsKanikoCacheEnabled() {
@@ -114,7 +114,7 @@ func (t *builderTrait) Apply(e *Environment) error {
                                },
                        }
                        // Use the PVC used to warm the Kaniko cache to 
coordinate the Camel Maven build and the Kaniko image build
-                       camelTask.Volumes = append(camelTask.Volumes, 
corev1.Volume{
+                       builderTask.Volumes = append(builderTask.Volumes, 
corev1.Volume{
                                Name: "camel-k-builder",
                                VolumeSource: corev1.VolumeSource{
                                        PersistentVolumeClaim: 
&corev1.PersistentVolumeClaimVolumeSource{
@@ -124,11 +124,10 @@ func (t *builderTrait) Apply(e *Environment) error {
                        })
                } else {
                        // Use an emptyDir volume to coordinate the Camel Maven 
build and the Kaniko image build
-                       camelTask.Volumes = append(camelTask.Volumes, 
corev1.Volume{
+                       builderTask.Volumes = append(builderTask.Volumes, 
corev1.Volume{
                                Name: "camel-k-builder",
                                VolumeSource: corev1.VolumeSource{
-                                       EmptyDir: &corev1.EmptyDirVolumeSource{
-                                       },
+                                       EmptyDir: 
&corev1.EmptyDirVolumeSource{},
                                },
                        })
                }
@@ -149,10 +148,10 @@ func (t *builderTrait) InfluencesKit() bool {
        return true
 }
 
-func (t *builderTrait) camelTask(e *Environment) *v1alpha1.BuilderTask {
+func (t *builderTrait) builderTask(e *Environment) *v1alpha1.BuilderTask {
        task := &v1alpha1.BuilderTask{
                BaseTask: v1alpha1.BaseTask{
-                       Name: "camel",
+                       Name: "builder",
                },
                Meta:            e.IntegrationKit.ObjectMeta,
                BaseImage:       e.Platform.Status.Build.BaseImage,
@@ -173,7 +172,7 @@ func (t *builderTrait) camelTask(e *Environment) 
*v1alpha1.BuilderTask {
                task.Steps = append(task.Steps, 
builder.StepIDsFor(s2i.S2iSteps...)...)
        } else if platform.SupportsKanikoPublishStrategy(e.Platform) {
                task.Steps = append(task.Steps, 
builder.StepIDsFor(kaniko.KanikoSteps...)...)
-               task.BuildDir = kaniko.BuildDir
+               task.BuildDir = path.Join(kaniko.BuildDir, 
e.IntegrationKit.Name)
        }
 
        quarkus := e.Catalog.GetTrait("quarkus").(*quarkusTrait)
@@ -198,7 +197,7 @@ func (t *builderTrait) kanikoTask(e *Environment) 
(*v1alpha1.KanikoTask, error)
        env := make([]corev1.EnvVar, 0)
        baseArgs := []string{
                "--dockerfile=Dockerfile",
-               "--context=" + path.Join(kaniko.BuildDir, "package", "context"),
+               "--context=" + path.Join(kaniko.BuildDir, 
e.IntegrationKit.Name, "package", "context"),
                "--destination=" + image,
                "--cache=" + 
strconv.FormatBool(e.Platform.Status.Build.IsKanikoCacheEnabled()),
                "--cache-dir=" + path.Join(kaniko.BuildDir, "cache"),

Reply via email to