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) {
