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

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


The following commit(s) were added to refs/heads/main by this push:
     new 3913d91cf feat(dependencies): removed spectrum strategy
3913d91cf is described below

commit 3913d91cf32902c11dda4e9ef7264d96408fdc3b
Author: Pasquale Congiusti <[email protected]>
AuthorDate: Fri Aug 15 09:08:54 2025 +0200

    feat(dependencies): removed spectrum strategy
    
    Closes #5762
---
 docs/modules/ROOT/pages/pipeline/pipeline.adoc    |   2 +-
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc |   1 +
 go.mod                                            |   9 --
 go.sum                                            |  19 ---
 pkg/apis/camel/v1/build_types.go                  |   1 +
 pkg/apis/camel/v1/build_types_support.go          |   3 -
 pkg/apis/camel/v1/integrationplatform_types.go    |   5 -
 pkg/builder/builder_test.go                       |  32 -----
 pkg/builder/spectrum.go                           | 151 ----------------------
 pkg/builder/tasks.go                              |  12 --
 pkg/controller/build/build_pod.go                 |   2 -
 pkg/controller/build/monitor_pod.go               |   4 +-
 pkg/controller/build/monitor_routine.go           |   6 -
 pkg/trait/builder.go                              |  22 ----
 pkg/trait/builder_test.go                         |  17 +--
 15 files changed, 11 insertions(+), 275 deletions(-)

diff --git a/docs/modules/ROOT/pages/pipeline/pipeline.adoc 
b/docs/modules/ROOT/pages/pipeline/pipeline.adoc
index 6712c940d..2aa77dc5d 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 0eacd3960..15841cda0 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 2a91e7f05..2e587c6fc 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,6 @@ go 1.24.6
 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
@@ -107,10 +102,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
@@ -118,7 +111,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
@@ -135,7 +127,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 62ccf93d5..e0f36d21d 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=
@@ -472,8 +458,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=
@@ -854,9 +838,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 4c7a5b479..fd07269ce 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 fe3623bb1..daaf2eba8 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 839a391a0..0abef994f 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 adcc070e7..716f013b7 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 1f78f7e48..000000000
--- 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 2e18403ce..8524bd49a 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 2b2b87798..a903fe38d 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 5febc6118..3a9c97c07 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 10975594a..ff7550e7a 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 3665e2a55..e09c36c2c 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 44e6942ac..067e91ff2 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
                }

Reply via email to