diff --git a/docs/modules/ROOT/pages/pipeline/pipeline.adoc b/docs/modules/ROOT/pages/pipeline/pipeline.adoc index 6712c940d4..2aa77dc5db 100644 --- a/docs/modules/ROOT/pages/pipeline/pipeline.adoc +++ b/docs/modules/ROOT/pages/pipeline/pipeline.adoc @@ -37,7 +37,7 @@ spec: command: cat maven/pom.xml image: alpine name: custom2 - - spectrum: + - jib: ... ``` The custom tasks will be executed in the directory where the Camel K runtime Maven project was generated. In this example we're creating 2 tasks to retrieve certain values from the project just for the scope of illustrating the feature. For each task you need to specify a name, the container image which you want to use to run, the command to execute and (optionally) the user ID that has to run in the container. diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc index fe77f31280..5f101b8fac 100644 --- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc +++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc @@ -5656,6 +5656,7 @@ SourceType represents an available source type. * <<#_camel_apache_org_v1_Task, Task>> SpectrumTask is used to configure Spectrum. +Deprecated: no longer in use. [cols="2,2a",options="header"] |=== diff --git a/go.mod b/go.mod index c3327577bc..c85c670696 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,6 @@ go 1.24 require ( dario.cat/mergo v1.0.2 github.com/Masterminds/semver v1.5.0 - github.com/container-tools/spectrum v0.6.68 github.com/evanphx/json-patch v5.9.11+incompatible github.com/fsnotify/fsnotify v1.9.0 github.com/gertd/go-pluralize v0.2.1 @@ -72,12 +71,8 @@ require ( github.com/cloudevents/sdk-go/sql/v2 v2.15.2 // indirect github.com/cloudevents/sdk-go/v2 v2.15.2 // indirect github.com/cloudflare/circl v1.6.1 // indirect - github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/docker/cli v27.5.0+incompatible // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/emicklei/go-restful/v3 v3.12.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect @@ -108,10 +103,8 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/kelseyhightower/envconfig v1.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.18.0 // indirect github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect github.com/mailru/easyjson v0.9.0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/moby/spdystream v0.5.0 // indirect github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -119,7 +112,6 @@ require ( github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/pkg/errors v0.9.1 // indirect @@ -136,7 +128,6 @@ require ( github.com/spf13/afero v1.12.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/vbatts/tar-split v0.11.6 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect go.opencensus.io v0.24.0 // indirect diff --git a/go.sum b/go.sum index 8f3771caf4..b37a0dc936 100644 --- a/go.sum +++ b/go.sum @@ -89,10 +89,6 @@ github.com/cloudevents/sdk-go/v2 v2.15.2/go.mod h1:lL7kSWAE/V8VI4Wh0jbL2v/jvqsm6 github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/container-tools/spectrum v0.6.68 h1:XvhGZM4Qjv1m9zo+n7jSMtvGS3d34MtA84+3mq59wuo= -github.com/container-tools/spectrum v0.6.68/go.mod h1:RIk+OvLAeLuBrQxUSr2Nn6L3VDvrN67BccmPEQlnPZ4= -github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= -github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= github.com/coreos/go-oidc/v3 v3.9.0 h1:0J/ogVOd4y8P0f0xUh8l9t07xRP/d8tccvjHl2dcsSo= github.com/coreos/go-oidc/v3 v3.9.0/go.mod h1:rTKz2PYwftcrtoCzV5g5kvfJoWcm0Mk8AF8y1iAQro4= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= @@ -104,12 +100,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v27.5.0+incompatible h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM= -github.com/docker/cli v27.5.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= -github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= -github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emicklei/go-restful/v3 v3.12.1 h1:PJMDIM/ak7btuL8Ex0iYET9hxM3CI2sjZtzpL63nKAU= @@ -324,8 +314,6 @@ github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebG github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= @@ -355,8 +343,6 @@ github.com/onsi/gomega v1.38.0 h1:c/WX+w8SLAinvuKKQFh77WEucCnPk4j2OTUr7lt7BeY= github.com/onsi/gomega v1.38.0/go.mod h1:OcXcwId0b9QsE7Y49u+BTrL4IdKOBOKnD6VQNTJEB6o= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/openshift/api v0.0.0-20240228005710-4511c790cc60 h1:BfN2JThYjmpXhULHahY1heyfct+fsj4fhkUo3tVIGH4= github.com/openshift/api v0.0.0-20240228005710-4511c790cc60/go.mod h1:qNtV0315F+f8ld52TLtPvrfivZpdimOzTi3kn9IVbtU= github.com/operator-framework/api v0.31.0 h1:tRsFTuZ51xD8U5QgiPo3+mZgVipHZVgRXYrI6RRXOh8= @@ -470,8 +456,6 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= -github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -852,9 +836,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pkg/apis/camel/v1/build_types.go b/pkg/apis/camel/v1/build_types.go index 4c7a5b4794..fd07269ceb 100644 --- a/pkg/apis/camel/v1/build_types.go +++ b/pkg/apis/camel/v1/build_types.go @@ -183,6 +183,7 @@ type JibTask struct { } // SpectrumTask is used to configure Spectrum. +// Deprecated: no longer in use. type SpectrumTask struct { BaseTask `json:",inline"` PublishTask `json:",inline"` diff --git a/pkg/apis/camel/v1/build_types_support.go b/pkg/apis/camel/v1/build_types_support.go index fe3623bb1b..daaf2eba82 100644 --- a/pkg/apis/camel/v1/build_types_support.go +++ b/pkg/apis/camel/v1/build_types_support.go @@ -97,9 +97,6 @@ func ConfigurationTasksByName(tasks []Task, name string) *BuildConfiguration { if t.Package != nil && t.Package.Name == name { return &t.Package.Configuration } - if t.Spectrum != nil && t.Spectrum.Name == name { - return &t.Spectrum.Configuration - } if t.S2i != nil && t.S2i.Name == name { return &t.S2i.Configuration } diff --git a/pkg/apis/camel/v1/integrationplatform_types.go b/pkg/apis/camel/v1/integrationplatform_types.go index 839a391a07..0abef994f0 100644 --- a/pkg/apis/camel/v1/integrationplatform_types.go +++ b/pkg/apis/camel/v1/integrationplatform_types.go @@ -155,10 +155,6 @@ const ( // provided by an OpenShift cluster in order to create and push the images to the registry. It is the default choice on OpenShift cluster. // Deprecated: use jib or a custom publishing strategy instead. IntegrationPlatformBuildPublishStrategyS2I IntegrationPlatformBuildPublishStrategy = "S2I" - // IntegrationPlatformBuildPublishStrategySpectrum uses Spectrum project (https://github.com/container-tools/spectrum) - // in order to push the incremental images to the image repository. It is the default choice on vanilla Kubernetes cluster. - // Deprecated: use jib or a custom publishing strategy instead. - IntegrationPlatformBuildPublishStrategySpectrum IntegrationPlatformBuildPublishStrategy = "Spectrum" // IntegrationPlatformBuildPublishStrategyJib uses Jib maven plugin (https://github.com/GoogleContainerTools/jib) // in order to push the incremental images to the image repository. IntegrationPlatformBuildPublishStrategyJib IntegrationPlatformBuildPublishStrategy = "Jib" @@ -167,7 +163,6 @@ const ( // IntegrationPlatformBuildPublishStrategies the list of all available publish strategies. var IntegrationPlatformBuildPublishStrategies = []IntegrationPlatformBuildPublishStrategy{ IntegrationPlatformBuildPublishStrategyS2I, - IntegrationPlatformBuildPublishStrategySpectrum, IntegrationPlatformBuildPublishStrategyJib, } diff --git a/pkg/builder/builder_test.go b/pkg/builder/builder_test.go index adcc070e74..716f013b7c 100644 --- a/pkg/builder/builder_test.go +++ b/pkg/builder/builder_test.go @@ -137,35 +137,3 @@ func TestJibPublishingFailure(t *testing.T) { assert.Equal(t, "base-image", status.BaseImage) assert.Equal(t, "root-image", status.RootImage) } - -func TestSpectrumPublishingFailure(t *testing.T) { - c, err := internal.NewFakeClient() - require.NoError(t, err) - b := New(c) - build := &v1.Build{ - Spec: v1.BuildSpec{ - Tasks: []v1.Task{ - { - Spectrum: &v1.SpectrumTask{ - BaseTask: v1.BaseTask{ - Name: "spectrum", - }, - PublishTask: v1.PublishTask{ - BaseImage: "base-image", - }, - }, - }, - }, - }, - Status: v1.BuildStatus{ - RootImage: "root-image", - }, - } - - ctx := newContext() - status := b.Build(build).TaskByName("spectrum").Do(ctx) - assert.Equal(t, v1.BuildPhaseFailed, status.Phase) - assert.NotEmpty(t, status.Error) - assert.Equal(t, "base-image", status.BaseImage) - assert.Equal(t, "root-image", status.RootImage) -} diff --git a/pkg/builder/spectrum.go b/pkg/builder/spectrum.go deleted file mode 100644 index 1f78f7e485..0000000000 --- a/pkg/builder/spectrum.go +++ /dev/null @@ -1,151 +0,0 @@ -/* -Licensed to the Apache Software Foundation (ASF) under one or more -contributor license agreements. See the NOTICE file distributed with -this work for additional information regarding copyright ownership. -The ASF licenses this file to You under the Apache License, Version 2.0 -(the "License"); you may not use this file except in compliance with -the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package builder - -import ( - "bufio" - "context" - "io" - "os" - "path/filepath" - "runtime" - "strings" - - spectrum "github.com/container-tools/spectrum/pkg/builder" - - v1 "github.com/apache/camel-k/v2/pkg/apis/camel/v1" - "github.com/apache/camel-k/v2/pkg/client" - "github.com/apache/camel-k/v2/pkg/util" - "github.com/apache/camel-k/v2/pkg/util/log" - "github.com/apache/camel-k/v2/pkg/util/registry" -) - -type spectrumTask struct { - c client.Client - build *v1.Build - task *v1.SpectrumTask -} - -var _ Task = &spectrumTask{} - -func (t *spectrumTask) Do(ctx context.Context) v1.BuildStatus { - status := initializeStatusFrom(t.build.Status, t.task.BaseImage) - - contextDir := t.task.ContextDir - if contextDir == "" { - // Use the working directory. - // This is useful when the task is executed in-container, - // so that its WorkingDir can be used to share state and - // coordinate with other tasks. - pwd, err := os.Getwd() - if err != nil { - return status.Failed(err) - } - contextDir = filepath.Join(pwd, ContextDir) - } - - log.Infof("Running spectrum task in context directory: %s", contextDir) - - exists, err := util.DirectoryExists(contextDir) - if err != nil { - return status.Failed(err) - } - empty, err := util.DirectoryEmpty(contextDir) - if err != nil { - return status.Failed(err) - } - if !exists || empty { - // this can only indicate that there are no more resources to add to the base image, - // because transitive resolution is the same even if spec differs. - status.Image = status.BaseImage - log.Infof("No new image to build, reusing existing image %s", status.Image) - return *status - } - - pullInsecure := t.task.Registry.Insecure // incremental build case - - log.Debugf("Registry address: %s", t.task.Registry.Address) - log.Debugf("Base image: %s", status.BaseImage) - - if !strings.HasPrefix(status.BaseImage, t.task.Registry.Address) { - if pullInsecure { - log.Info("Assuming secure pull because the registry for the base image and the main registry are different") - pullInsecure = false - } - } - - registryConfigDir := "" - if t.task.Registry.Secret != "" { - registryConfigDir, err = registry.MountSecretRegistryConfig(ctx, t.c, t.build.Namespace, "spectrum-secret-", t.task.Registry.Secret) - if err != nil { - return status.Failed(err) - } - } - - newStdR, newStdW, pipeErr := os.Pipe() - defer util.CloseQuietly(newStdW) - - if pipeErr != nil { - // In the unlikely case of an error, use stdout instead of aborting - log.Errorf(pipeErr, "Unable to remap I/O. Spectrum messages will be displayed on the stdout") - newStdW = os.Stdout - } - - options := spectrum.Options{ - PullInsecure: pullInsecure, - PushInsecure: t.task.Registry.Insecure, - PullConfigDir: registryConfigDir, - PushConfigDir: registryConfigDir, - Base: status.BaseImage, - Target: t.task.Image, - Stdout: newStdW, - Stderr: newStdW, - Recursive: true, - } - - if jobs := runtime.GOMAXPROCS(0); jobs > 1 { - options.Jobs = jobs - } - - go readSpectrumLogs(newStdR) - digest, err := spectrum.Build(options, contextDir+":"+filepath.Join(DeploymentDir)) //nolint - if err != nil { - _ = os.RemoveAll(registryConfigDir) - return status.Failed(err) - } - - status.Image = t.task.Image - status.Digest = digest - - if registryConfigDir != "" { - if err := os.RemoveAll(registryConfigDir); err != nil { - return status.Failed(err) - } - } - - return *status -} - -func readSpectrumLogs(newStdOut io.Reader) { - scanner := bufio.NewScanner(newStdOut) - - for scanner.Scan() { - line := scanner.Text() - log.Info(line) - } -} diff --git a/pkg/builder/tasks.go b/pkg/builder/tasks.go index 2e18403ce8..8524bd49a2 100644 --- a/pkg/builder/tasks.go +++ b/pkg/builder/tasks.go @@ -55,12 +55,6 @@ func (b *Build) Task(task v1.Task) Task { build: b.build, task: task.Package, } - case task.Spectrum != nil: - return &spectrumTask{ - c: b.builder.client, - build: b.build, - task: task.Spectrum, - } case task.S2i != nil: return &s2iTask{ c: b.builder.client, @@ -140,12 +134,6 @@ func (b *Build) TaskByName(name string) Task { build: b.build, task: task.Package, } - case task.Spectrum != nil && task.Spectrum.Name == name: - return &spectrumTask{ - c: b.builder.client, - build: b.build, - task: task.Spectrum, - } case task.S2i != nil && task.S2i.Name == name: return &s2iTask{ c: b.builder.client, diff --git a/pkg/controller/build/build_pod.go b/pkg/controller/build/build_pod.go index 2b2b877980..a903fe38dd 100644 --- a/pkg/controller/build/build_pod.go +++ b/pkg/controller/build/build_pod.go @@ -93,8 +93,6 @@ func newBuildPod(ctx context.Context, client client.Client, build *v1.Build) *co addBuildTaskToPod(ctx, client, build, task.Package.Name, pod) case task.S2i != nil: addBuildTaskToPod(ctx, client, build, task.S2i.Name, pod) - case task.Spectrum != nil: - addBuildTaskToPod(ctx, client, build, task.Spectrum.Name, pod) case task.Jib != nil: addBuildTaskToPod(ctx, client, build, task.Jib.Name, pod) } diff --git a/pkg/controller/build/monitor_pod.go b/pkg/controller/build/monitor_pod.go index 5febc6118a..3a9c97c070 100644 --- a/pkg/controller/build/monitor_pod.go +++ b/pkg/controller/build/monitor_pod.go @@ -358,8 +358,6 @@ func publishTaskName(tasks []v1.Task) string { switch { case t.Custom != nil: return t.Custom.Name - case t.Spectrum != nil: - return t.Spectrum.Name case t.Jib != nil: return t.Jib.Name case t.S2i != nil: @@ -382,5 +380,5 @@ func publishTaskDigest(tasks []v1.Task, cntStates []corev1.ContainerStatus) stri func operatorSupportedPublishingStrategy(tasks []v1.Task) bool { taskName := publishTaskName(tasks) - return taskName == "jib" || taskName == "spectrum" || taskName == "s2i" + return taskName == "jib" || taskName == "s2i" } diff --git a/pkg/controller/build/monitor_routine.go b/pkg/controller/build/monitor_routine.go index 10975594ad..ff7550e7af 100644 --- a/pkg/controller/build/monitor_routine.go +++ b/pkg/controller/build/monitor_routine.go @@ -144,12 +144,6 @@ tasks: break tasks } t.BuildDir = buildDir - } else if t := task.Spectrum; t != nil && t.ContextDir == "" { - if buildDir == "" { - status.Failed(fmt.Errorf("cannot determine context directory for task %s", t.Name)) - break tasks - } - t.ContextDir = filepath.Join(buildDir, builder.ContextDir) } else if t := task.S2i; t != nil && t.ContextDir == "" { if buildDir == "" { status.Failed(fmt.Errorf("cannot determine context directory for task %s", t.Name)) diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go index 3665e2a558..e09c36c2c8 100644 --- a/pkg/trait/builder.go +++ b/pkg/trait/builder.go @@ -88,14 +88,9 @@ func (t *builderTrait) Matches(trait Trait) bool { return slices.Equal(srtThisTasks, srtOtheTasks) } -//nolint:nestif func (t *builderTrait) Configure(e *Environment) (bool, *TraitCondition, error) { if e.IntegrationKit != nil || e.IntegrationInPhase(v1.IntegrationPhaseBuildSubmitted) { condition := t.adaptDeprecatedFields() - if e.Platform.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategySpectrum { - condition = newOrAppend(condition, "Spectrum publishing strategy is deprecated and may be removed in future releases. "+ - "Make sure to use any supported publishing strategy instead.") - } t.setPlatform(e) if e.IntegrationKit != nil && !e.IntegrationKitInPhase(v1.IntegrationKitPhaseBuildSubmitted) { return false, condition, nil @@ -264,18 +259,6 @@ func (t *builderTrait) Apply(e *Environment) error { // Publishing task tag := getTag(e) switch e.Platform.Status.Build.PublishStrategy { - case v1.IntegrationPlatformBuildPublishStrategySpectrum: - pipelineTasks = append(pipelineTasks, v1.Task{Spectrum: &v1.SpectrumTask{ - BaseTask: v1.BaseTask{ - Name: "spectrum", - Configuration: *taskConfOrDefault(tasksConf, "spectrum"), - }, - PublishTask: v1.PublishTask{ - BaseImage: t.getBaseImage(e), - Image: imageName, - Registry: e.Platform.Status.Build.Registry, - }, - }}) case v1.IntegrationPlatformBuildPublishStrategyJib: jibTask := v1.Task{Jib: &v1.JibTask{ @@ -664,9 +647,6 @@ func filter(tasks []v1.Task, filterTasks []string) ([]v1.Task, error) { case t.Package != nil && t.Package.Name == f: filteredTasks = append(filteredTasks, t) found = true - case t.Spectrum != nil && t.Spectrum.Name == f: - filteredTasks = append(filteredTasks, t) - found = true case t.S2i != nil && t.S2i.Name == f: filteredTasks = append(filteredTasks, t) found = true @@ -693,8 +673,6 @@ func publishingOrUserTask(t v1.Task) bool { switch { case t.Custom != nil: return true - case t.Spectrum != nil: - return true case t.Jib != nil: return true } diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go index 44e6942ac5..067e91ff2c 100644 --- a/pkg/trait/builder_test.go +++ b/pkg/trait/builder_test.go @@ -176,7 +176,7 @@ func createNominalBuilderTraitTest() *builderTrait { } func TestCustomTaskBuilderTrait(t *testing.T) { - env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategySpectrum, v1.BuildStrategyPod) + env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyPod) builderTrait := createNominalBuilderTraitTest() builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine;ls") @@ -186,7 +186,7 @@ func TestCustomTaskBuilderTrait(t *testing.T) { builderTask := findCustomTaskByName(env.Pipeline, "builder") customTask := findCustomTaskByName(env.Pipeline, "test") packageTask := findCustomTaskByName(env.Pipeline, "package") - publisherTask := findCustomTaskByName(env.Pipeline, "spectrum") + publisherTask := findCustomTaskByName(env.Pipeline, "jib") assert.NotNil(t, builderTask) assert.NotNil(t, customTask) @@ -199,7 +199,7 @@ func TestCustomTaskBuilderTrait(t *testing.T) { } func TestCustomTaskBuilderTraitValidStrategyOverride(t *testing.T) { - env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategySpectrum, v1.BuildStrategyRoutine) + env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyRoutine) builderTrait := createNominalBuilderTraitTest() builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine;ls") builderTrait.Strategy = "pod" @@ -217,7 +217,7 @@ func TestCustomTaskBuilderTraitValidStrategyOverride(t *testing.T) { } func TestCustomTaskBuilderTraitInvalidStrategy(t *testing.T) { - env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategySpectrum, v1.BuildStrategyRoutine) + env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyRoutine) builderTrait := createNominalBuilderTraitTest() builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine;ls") @@ -231,7 +231,7 @@ func TestCustomTaskBuilderTraitInvalidStrategy(t *testing.T) { } func TestCustomTaskBuilderTraitInvalidStrategyOverride(t *testing.T) { - env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategySpectrum, v1.BuildStrategyPod) + env := createBuilderTestEnv(v1.IntegrationPlatformClusterKubernetes, v1.IntegrationPlatformBuildPublishStrategyJib, v1.BuildStrategyPod) builderTrait := createNominalBuilderTraitTest() builderTrait.Tasks = append(builderTrait.Tasks, "test;alpine;ls") builderTrait.Strategy = "routine" @@ -351,7 +351,7 @@ func TestBuilderCustomTasksConfiguration(t *testing.T) { builderTrait.TasksRequestCPU = append(builderTrait.TasksRequestCPU, "builder:1000m") builderTrait.TasksLimitCPU = append(builderTrait.TasksLimitCPU, "custom1:500m") builderTrait.TasksRequestMemory = append(builderTrait.TasksRequestMemory, "package:8Gi") - builderTrait.TasksLimitMemory = append(builderTrait.TasksLimitMemory, "spectrum:4Gi") + builderTrait.TasksLimitMemory = append(builderTrait.TasksLimitMemory, "jib:4Gi") tasksConf, err := builderTrait.parseTasksConf(&v1.BuildConfiguration{}) @@ -360,7 +360,7 @@ func TestBuilderCustomTasksConfiguration(t *testing.T) { assert.Equal(t, "1000m", tasksConf["builder"].RequestCPU) assert.Equal(t, "500m", tasksConf["custom1"].LimitCPU) assert.Equal(t, "8Gi", tasksConf["package"].RequestMemory) - assert.Equal(t, "4Gi", tasksConf["spectrum"].LimitMemory) + assert.Equal(t, "4Gi", tasksConf["jib"].LimitMemory) } func TestBuilderCustomTasksConfigurationError(t *testing.T) { @@ -596,9 +596,6 @@ func tasksByName(tasks []v1.Task) []string { if t.S2i != nil { pipelineTasks[i] = t.S2i.Name } - if t.Spectrum != nil { - pipelineTasks[i] = t.Spectrum.Name - } if t.Jib != nil { pipelineTasks[i] = t.Jib.Name }