You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2021/02/01 08:17:41 UTC

[camel-k] branch master updated: chore(build): Sort builder steps by phase in Build spec

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


The following commit(s) were added to refs/heads/master by this push:
     new 9a1faab  chore(build): Sort builder steps by phase in Build spec
9a1faab is described below

commit 9a1faabea92753c78b6b1857478fff0b23a89011
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Fri Jan 29 18:05:03 2021 +0100

    chore(build): Sort builder steps by phase in Build spec
---
 pkg/trait/builder.go      | 29 +++++++++++++++++++----------
 pkg/trait/quarkus.go      |  5 ++---
 pkg/trait/quarkus_test.go | 13 ++++++-------
 3 files changed, 27 insertions(+), 20 deletions(-)

diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index 3fa45d7..1c1c4df 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -20,10 +20,10 @@ package trait
 import (
 	"fmt"
 	"path"
+	"sort"
 	"strconv"
 	"strings"
 
-	"github.com/apache/camel-k/pkg/builder/spectrum"
 	"github.com/pkg/errors"
 
 	corev1 "k8s.io/api/core/v1"
@@ -34,6 +34,7 @@ import (
 	"github.com/apache/camel-k/pkg/builder"
 	"github.com/apache/camel-k/pkg/builder/kaniko"
 	"github.com/apache/camel-k/pkg/builder/s2i"
+	"github.com/apache/camel-k/pkg/builder/spectrum"
 	"github.com/apache/camel-k/pkg/util/defaults"
 )
 
@@ -179,25 +180,33 @@ func (t *builderTrait) builderTask(e *Environment) *v1.BuilderTask {
 		BaseImage:    e.Platform.Status.Build.BaseImage,
 		Runtime:      e.CamelCatalog.Runtime,
 		Dependencies: e.IntegrationKit.Spec.Dependencies,
-		//TODO: sort steps for easier read
-		Steps:      builder.StepIDsFor(builder.DefaultSteps...),
-		Properties: e.Platform.Status.Build.Properties,
-		Timeout:    e.Platform.Status.Build.GetTimeout(),
-		Maven:      e.Platform.Status.Build.Maven,
+		Properties:   e.Platform.Status.Build.Properties,
+		Timeout:      e.Platform.Status.Build.GetTimeout(),
+		Maven:        e.Platform.Status.Build.Maven,
 	}
 
+	steps := make([]builder.Step, 0)
+	steps = append(steps, builder.DefaultSteps...)
+
 	switch e.Platform.Status.Build.PublishStrategy {
 	case v1.IntegrationPlatformBuildPublishStrategyBuildah, v1.IntegrationPlatformBuildPublishStrategyKaniko:
 		task.BuildDir = path.Join(builderDir, e.IntegrationKit.Name)
 
 	case v1.IntegrationPlatformBuildPublishStrategyS2I:
-		task.Steps = append(task.Steps, builder.StepIDsFor(s2i.S2iSteps...)...)
+		steps = append(steps, s2i.S2iSteps...)
 	case v1.IntegrationPlatformBuildPublishStrategySpectrum:
-		task.Steps = append(task.Steps, builder.StepIDsFor(spectrum.SpectrumSteps...)...)
+		steps = append(steps, spectrum.SpectrumSteps...)
 	}
 
 	quarkus := e.Catalog.GetTrait("quarkus").(*quarkusTrait)
-	quarkus.addBuildSteps(task)
+	quarkus.addBuildSteps(&steps)
+
+	// sort steps by phase
+	sort.SliceStable(steps, func(i, j int) bool {
+		return steps[i].Phase() < steps[j].Phase()
+	})
+
+	task.Steps = builder.StepIDsFor(steps...)
 
 	return task
 }
@@ -241,7 +250,7 @@ func (t *builderTrait) buildahTask(e *Environment) (*v1.ImageTask, error) {
 		}
 		mountRegistryConfigMap(e.Platform.Status.Build.Registry.CA, config, &volumes, &volumeMounts)
 		// This is easier to use the --cert-dir option, otherwise Buildah defaults to looking up certificates
-		//into a directory named after the registry address
+		// into a directory named after the registry address
 		bud = append(bud[:2], append([]string{"--cert-dir=/etc/containers/certs.d"}, bud[2:]...)...)
 		push = append(push[:2], append([]string{"--cert-dir=/etc/containers/certs.d"}, push[2:]...)...)
 	}
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index ea2b3d5..4227221 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -18,7 +18,6 @@ limitations under the License.
 package trait
 
 import (
-	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/builder"
 	"github.com/apache/camel-k/pkg/builder/runtime"
 )
@@ -62,6 +61,6 @@ func (t *quarkusTrait) InfluencesKit() bool {
 	return true
 }
 
-func (t *quarkusTrait) addBuildSteps(task *v1.BuilderTask) {
-	task.Steps = append(task.Steps, builder.StepIDsFor(runtime.QuarkusSteps...)...)
+func (t *quarkusTrait) addBuildSteps(steps *[]builder.Step) {
+	*steps = append(*steps, runtime.QuarkusSteps...)
 }
diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go
index 9ee8ae9..9061f57 100644
--- a/pkg/trait/quarkus_test.go
+++ b/pkg/trait/quarkus_test.go
@@ -20,11 +20,11 @@ package trait
 import (
 	"testing"
 
-	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
+	"github.com/stretchr/testify/assert"
 
+	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/builder"
 	"github.com/apache/camel-k/pkg/util/camel"
-	"github.com/stretchr/testify/assert"
 )
 
 func TestConfigureQuarkusTraitShouldSucceed(t *testing.T) {
@@ -57,13 +57,12 @@ func TestApplyQuarkusTraitDoesNothing(t *testing.T) {
 func TestQuarkusTraitAddBuildStepsShouldSucceed(t *testing.T) {
 	quarkusTrait, _ := createNominalQuarkusTest()
 
-	task := &v1.BuilderTask{
-		Steps: builder.StepIDsFor(builder.DefaultSteps...),
-	}
+	steps := make([]builder.Step, 0)
+	steps = append(steps, builder.DefaultSteps...)
 
-	quarkusTrait.addBuildSteps(task)
+	quarkusTrait.addBuildSteps(&steps)
 
-	assert.Len(t, task.Steps, 9)
+	assert.Len(t, steps, 9)
 }
 
 func createNominalQuarkusTest() (*quarkusTrait, *Environment) {