Skip to content

Commit

Permalink
chore(build): Sort builder steps by phase in Build spec
Browse files Browse the repository at this point in the history
  • Loading branch information
astefanutti committed Feb 1, 2021
1 parent c07be13 commit 9a1faab
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 20 deletions.
29 changes: 19 additions & 10 deletions pkg/trait/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
)

Expand Down Expand Up @@ -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
}
Expand Down Expand Up @@ -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:]...)...)
}
Expand Down
5 changes: 2 additions & 3 deletions pkg/trait/quarkus.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Expand Down Expand Up @@ -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...)
}
13 changes: 6 additions & 7 deletions pkg/trait/quarkus_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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) {
Expand Down

0 comments on commit 9a1faab

Please sign in to comment.