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

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

commit fb3d1fe58b326d02ef3dbd3af8b262aa1d4d73d1
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Mon Aug 16 15:36:35 2021 +0200

    feat(native): Split builder task Dockerfile JVM/native steps
---
 pkg/builder/image.go      | 45 +++++++++++++++++++++++++++++++++------------
 pkg/builder/project.go    |  4 ++++
 pkg/trait/quarkus.go      |  4 ++--
 pkg/trait/quarkus_test.go |  2 +-
 4 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/pkg/builder/image.go b/pkg/builder/image.go
index 4a35be5..8aca5a6 100644
--- a/pkg/builder/image.go
+++ b/pkg/builder/image.go
@@ -57,6 +57,23 @@ func nativeImageContext(ctx *builderContext) error {
        })
 }
 
+func executableDockerfile(ctx *builderContext) error {
+       // #nosec G202
+       dockerfile := []byte(`
+               FROM ` + ctx.BaseImage + `
+               WORKDIR ` + DeploymentDir + `
+               COPY --chown=nonroot:root . ` + DeploymentDir + `
+               USER nonroot
+       `)
+
+       err := ioutil.WriteFile(path.Join(ctx.Path, ContextDir, "Dockerfile"), 
dockerfile, 0777)
+       if err != nil {
+               return err
+       }
+
+       return nil
+}
+
 func standardImageContext(ctx *builderContext) error {
        return imageContext(ctx, func(ctx *builderContext) error {
                ctx.SelectedArtifacts = ctx.Artifacts
@@ -65,6 +82,22 @@ func standardImageContext(ctx *builderContext) error {
        })
 }
 
+func jvmDockerfile(ctx *builderContext) error {
+       // #nosec G202
+       dockerfile := []byte(`
+               FROM ` + ctx.BaseImage + `
+               ADD . ` + DeploymentDir + `
+               USER 1000
+       `)
+
+       err := ioutil.WriteFile(path.Join(ctx.Path, ContextDir, "Dockerfile"), 
dockerfile, 0777)
+       if err != nil {
+               return err
+       }
+
+       return nil
+}
+
 func incrementalImageContext(ctx *builderContext) error {
        if ctx.Build.BaseImage != "" {
                // If the build requires a specific image, don't try to 
determine the
@@ -129,18 +162,6 @@ func imageContext(ctx *builderContext, selector 
artifactsSelector) error {
                }
        }
 
-       // #nosec G202
-       dockerfile := []byte(`
-               FROM ` + ctx.BaseImage + `
-               COPY --chown=nonroot:root . ` + DeploymentDir + `
-               USER nonroot
-       `)
-
-       err = ioutil.WriteFile(path.Join(contextDir, "Dockerfile"), dockerfile, 
0777)
-       if err != nil {
-               return err
-       }
-
        return nil
 }
 
diff --git a/pkg/builder/project.go b/pkg/builder/project.go
index 6cb8a0b..517e879 100644
--- a/pkg/builder/project.go
+++ b/pkg/builder/project.go
@@ -38,6 +38,8 @@ type steps struct {
        IncrementalImageContext Step
        NativeImageContext      Step
        StandardImageContext    Step
+       ExecutableDockerfile    Step
+       JvmDockerfile           Step
 }
 
 var Steps = steps{
@@ -49,6 +51,8 @@ var Steps = steps{
        IncrementalImageContext: NewStep(ApplicationPackagePhase, 
incrementalImageContext),
        NativeImageContext:      NewStep(ApplicationPackagePhase, 
nativeImageContext),
        StandardImageContext:    NewStep(ApplicationPackagePhase, 
standardImageContext),
+       ExecutableDockerfile:    NewStep(ApplicationPackagePhase+1, 
executableDockerfile),
+       JvmDockerfile:           NewStep(ApplicationPackagePhase+1, 
jvmDockerfile),
 }
 
 var DefaultSteps = []Step{
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index 47f1f95..b43e045 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -87,10 +87,10 @@ func (t *quarkusTrait) Apply(e *Environment) error {
 
                if t.isNativePackageType() {
                        build.Maven.Properties["quarkus.package.type"] = 
string(nativePackageType)
-                       steps = append(steps, builder.Steps.NativeImageContext)
+                       steps = append(steps, builder.Steps.NativeImageContext, 
builder.Steps.ExecutableDockerfile)
                } else {
                        build.Maven.Properties["quarkus.package.type"] = 
string(fastJarPackageType)
-                       steps = append(steps, 
builder.Steps.IncrementalImageContext)
+                       steps = append(steps, 
builder.Steps.IncrementalImageContext, builder.Steps.JvmDockerfile)
                }
 
                // Sort steps by phase
diff --git a/pkg/trait/quarkus_test.go b/pkg/trait/quarkus_test.go
index 688194a..7f4d970 100644
--- a/pkg/trait/quarkus_test.go
+++ b/pkg/trait/quarkus_test.go
@@ -42,7 +42,7 @@ func TestConfigureQuarkusTraitBuildSubmitted(t *testing.T) {
        build := getBuilderTask(environment.BuildTasks)
        assert.NotNil(t, t, build)
 
-       assert.Len(t, build.Steps, len(builder.QuarkusSteps)+1)
+       assert.Len(t, build.Steps, len(builder.QuarkusSteps)+2)
 }
 
 func TestConfigureDisabledQuarkusTraitShouldFail(t *testing.T) {

Reply via email to