You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pc...@apache.org on 2023/05/24 13:50:29 UTC

[camel-k] 08/09: chore(api): revert breaking compatibility changes

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

commit 7b057298307329f1bc494d0e3277f8d6d8e4463c
Author: Pasquale Congiusti <pa...@gmail.com>
AuthorDate: Mon May 22 10:29:18 2023 +0200

    chore(api): revert breaking compatibility changes
    
    It turns out, we did not need a big refactoring.
---
 config/crd/bases/camel.apache.org_builds.yaml      |  62 ++-
 .../camel.apache.org_integrationplatforms.yaml     | 506 +--------------------
 docs/modules/ROOT/partials/apis/camel-k-crds.adoc  | 222 +++------
 e2e/builder/build_test.go                          |   6 +-
 e2e/commonwithcustominstall/builder_test.go        |   2 +-
 .../catalog_builder_test.go                        |   2 +-
 e2e/commonwithcustominstall/local_platform_test.go |  30 +-
 e2e/install/cli/install_test.go                    |   6 +-
 e2e/native/native_binding_test.go                  |   2 +-
 e2e/native/native_with_sources_test.go             |   2 +-
 e2e/support/test_support.go                        |   4 +-
 helm/camel-k/crds/crd-build.yaml                   |  62 ++-
 helm/camel-k/crds/crd-integration-platform.yaml    | 506 +--------------------
 pkg/apis/camel/v1/build_types.go                   |  29 +-
 pkg/apis/camel/v1/integrationplatform_types.go     |  43 +-
 .../camel/v1/integrationplatform_types_support.go  |   8 +-
 pkg/apis/camel/v1/zz_generated.deepcopy.go         |  83 +---
 pkg/builder/builder_test.go                        |   2 +-
 .../camel/applyconfiguration/camel/v1/build.go     |   6 +-
 .../camel/v1/integrationplatformspec.go            |  21 +-
 .../camel/v1/integrationplatformstatus.go          |   8 -
 pkg/client/camel/applyconfiguration/utils.go       |   6 +-
 pkg/cmd/describe_platform.go                       |   8 +-
 pkg/cmd/install.go                                 |  42 +-
 pkg/cmd/promote_test.go                            |  14 +-
 pkg/cmd/run.go                                     |  10 +-
 pkg/cmd/run_test.go                                |   2 +-
 pkg/cmd/version.go                                 |   8 +-
 pkg/cmd/version_test.go                            |   4 +-
 pkg/controller/build/build_controller.go           |   2 +-
 pkg/controller/build/build_monitor_test.go         |   2 +-
 pkg/controller/catalog/initialize.go               |   6 +-
 pkg/controller/integrationkit/build.go             |  10 +-
 pkg/controller/integrationplatform/initialize.go   |   6 +-
 .../integrationplatform/initialize_test.go         |  10 +-
 pkg/controller/integrationplatform/kaniko_cache.go |   6 +-
 pkg/install/operator.go                            |  10 +-
 pkg/platform/defaults.go                           | 176 +++----
 pkg/platform/defaults_test.go                      |  36 +-
 pkg/trait/builder.go                               |  28 +-
 pkg/trait/builder_test.go                          |   2 +-
 pkg/trait/camel.go                                 |   8 +-
 pkg/trait/container_probes_test.go                 |   2 +-
 pkg/trait/container_test.go                        |  10 +-
 pkg/trait/cron_test.go                             |   8 +-
 pkg/trait/environment_test.go                      |   2 +-
 pkg/trait/istio_test.go                            |   2 +-
 pkg/trait/knative_service_test.go                  |  10 +-
 pkg/trait/knative_test.go                          |   6 +-
 pkg/trait/logging_test.go                          |   2 +-
 pkg/trait/mount_test.go                            |   2 +-
 pkg/trait/openapi.go                               |  10 +-
 pkg/trait/pull_secret.go                           |   2 +-
 pkg/trait/quarkus.go                               |   4 +-
 pkg/trait/registry.go                              |   8 +-
 pkg/trait/route_test.go                            |   2 +-
 pkg/trait/service_test.go                          |  14 +-
 pkg/trait/trait_test.go                            |   2 +-
 58 files changed, 533 insertions(+), 1561 deletions(-)

diff --git a/config/crd/bases/camel.apache.org_builds.yaml b/config/crd/bases/camel.apache.org_builds.yaml
index d24d8135b..8898fcfd8 100644
--- a/config/crd/bases/camel.apache.org_builds.yaml
+++ b/config/crd/bases/camel.apache.org_builds.yaml
@@ -77,11 +77,58 @@ spec:
           metadata:
             type: object
           spec:
-            description: PipelineSpec defines the Build operation to be executed
+            description: BuildSpec defines the list of tasks to be execute for a Build.
+              From Camel K version 2, it would be more appropiate to think it as pipeline.
             properties:
+              configuration:
+                description: 'The configuration that should be used to perform the
+                  Build. Deprecated: no longer in use in Camel K 2 - maintained for
+                  backward compatibility'
+                properties:
+                  limitCPU:
+                    description: The maximum amount of CPU required. Only used for
+                      `pod` strategy
+                    type: string
+                  limitMemory:
+                    description: The maximum amount of memory required. Only used
+                      for `pod` strategy
+                    type: string
+                  operatorNamespace:
+                    description: The namespace where to run the builder Pod (must
+                      be the same of the operator in charge of this Build reconciliation).
+                    type: string
+                  requestCPU:
+                    description: The minimum amount of CPU required. Only used for
+                      `pod` strategy
+                    type: string
+                  requestMemory:
+                    description: The minimum amount of memory required. Only used
+                      for `pod` strategy
+                    type: string
+                  strategy:
+                    description: the strategy to adopt
+                    enum:
+                    - routine
+                    - pod
+                    type: string
+                  toolImage:
+                    description: The container image to be used to run the build.
+                    type: string
+                type: object
+              maxRunningBuilds:
+                description: 'the maximum amount of parallel running builds started
+                  by this operator instance Deprecated: no longer in use in Camel
+                  K 2 - maintained for backward compatibility'
+                format: int32
+                type: integer
+              operatorNamespace:
+                description: 'The namespace where to run the builder Pod (must be
+                  the same of the operator in charge of this Build reconciliation).
+                  Deprecated: no longer in use in Camel K 2 - maintained for backward
+                  compatibility'
+                type: string
               tasks:
-                description: The sequence of Build tasks to be performed as part of
-                  the Build execution.
+                description: The sequence of tasks (pipeline) to be performed.
                 items:
                   description: Task represents the abstract task. Only one of the
                     task should be configured to represent the specific task chosen.
@@ -693,12 +740,19 @@ spec:
                   type: object
                 type: array
               timeout:
-                description: Timeout defines the Pipeline maximum execution duration.
+                description: Timeout defines the Build maximum execution duration.
+                  The Build deadline is set to the Build start time plus the Timeout
+                  duration. If the Build deadline is exceeded, the Build context is
+                  canceled, Timeout defines the Pipeline maximum execution duration.
                   The Pipeline deadline is set to the Pipeline start time plus the
                   Timeout duration. If the Pipeline deadline is exceeded, the Pipeline
                   context is canceled, and its phase set to BuildPhaseFailed.
                 format: duration
                 type: string
+              toolImage:
+                description: 'The container image to be used to run the build. Deprecated:
+                  no longer in use in Camel K 2 - maintained for backward compatibility'
+                type: string
             type: object
           status:
             description: BuildStatus defines the observed state of Build
diff --git a/config/crd/bases/camel.apache.org_integrationplatforms.yaml b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
index 94b37247d..6b133aace 100644
--- a/config/crd/bases/camel.apache.org_integrationplatforms.yaml
+++ b/config/crd/bases/camel.apache.org_integrationplatforms.yaml
@@ -44,19 +44,19 @@ spec:
       name: Phase
       type: string
     - description: The default build strategy
-      jsonPath: .status.pipeline.buildStrategy
+      jsonPath: .status.build.buildStrategy
       name: Build strategy
       type: string
     - description: The default publish strategy
-      jsonPath: .status.pipeline.publishStrategy
+      jsonPath: .status.build.publishStrategy
       name: Publish strategy
       type: string
     - description: The container registry address
-      jsonPath: .status.pipeline.registry.address
+      jsonPath: .status.build.registry.address
       name: Registry address
       type: string
     - description: The default runtime version
-      jsonPath: .status.pipeline.runtimeVersion
+      jsonPath: .status.build.runtimeVersion
       name: Default runtime
       type: string
     name: v1
@@ -84,9 +84,7 @@ spec:
             description: IntegrationPlatformSpec defines the desired state of IntegrationPlatform
             properties:
               build:
-                description: 'Deprecated: no longer used in Camel K version 2, maintained
-                  for backward compatibility with version 1. specify how to build
-                  the Integration/IntegrationKits'
+                description: specify how to build the Integration/IntegrationKits
                 properties:
                   PublishStrategyOptions:
                     additionalProperties:
@@ -374,251 +372,6 @@ spec:
                       type: object
                     type: array
                 type: object
-              pipeline:
-                description: specify how to build the Integration/IntegrationKits
-                properties:
-                  PublishStrategyOptions:
-                    additionalProperties:
-                      type: string
-                    description: Generic options that can used by any publish strategy
-                    type: object
-                  baseImage:
-                    description: a base image that can be used as base layer for all
-                      images. It can be useful if you want to provide some custom
-                      base image with further utility softwares
-                    type: string
-                  buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
-                    type: string
-                  buildConfiguration:
-                    description: the configuration required to build an Integration
-                      container image
-                    properties:
-                      limitCPU:
-                        description: The maximum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      limitMemory:
-                        description: The maximum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      operatorNamespace:
-                        description: The namespace where to run the builder Pod (must
-                          be the same of the operator in charge of this Build reconciliation).
-                        type: string
-                      requestCPU:
-                        description: The minimum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      requestMemory:
-                        description: The minimum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      strategy:
-                        description: the strategy to adopt
-                        enum:
-                        - routine
-                        - pod
-                        type: string
-                      toolImage:
-                        description: The container image to be used to run the build.
-                        type: string
-                    type: object
-                  maven:
-                    description: Maven configuration used to build the Camel/Camel-Quarkus
-                      applications
-                    properties:
-                      caSecrets:
-                        description: The Secrets name and key, containing the CA certificate(s)
-                          used to connect to remote Maven repositories. It can contain
-                          X.509 certificates, and PKCS#7 formatted certificate chains.
-                          A JKS formatted keystore is automatically created to store
-                          the CA certificate(s), and configured to be used as a trusted
-                          certificate(s) by the Maven commands. Note that the root
-                          CA certificates are also imported into the created keystore.
-                        items:
-                          description: SecretKeySelector selects a key of a Secret.
-                          properties:
-                            key:
-                              description: The key of the secret to select from.  Must
-                                be a valid secret key.
-                              type: string
-                            name:
-                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                TODO: Add other useful fields. apiVersion, kind, uid?'
-                              type: string
-                            optional:
-                              description: Specify whether the Secret or its key must
-                                be defined
-                              type: boolean
-                          required:
-                          - key
-                          type: object
-                        type: array
-                      cliOptions:
-                        description: The CLI options that are appended to the list
-                          of arguments for Maven commands, e.g., `-V,--no-transfer-progress,-Dstyle.color=never`.
-                          See https://maven.apache.org/ref/3.8.4/maven-embedder/cli.html.
-                        items:
-                          type: string
-                        type: array
-                      extension:
-                        description: The Maven build extensions. See https://maven.apache.org/guides/mini/guide-using-extensions.html.
-                        items:
-                          description: MavenArtifact defines a GAV (Group:Artifact:Version)
-                            Maven artifact
-                          properties:
-                            artifactId:
-                              description: Maven Artifact
-                              type: string
-                            groupId:
-                              description: Maven Group
-                              type: string
-                            version:
-                              description: Maven Version
-                              type: string
-                          required:
-                          - artifactId
-                          - groupId
-                          type: object
-                        type: array
-                      localRepository:
-                        description: The path of the local Maven repository.
-                        type: string
-                      properties:
-                        additionalProperties:
-                          type: string
-                        description: The Maven properties.
-                        type: object
-                      settings:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                      settingsSecurity:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the security of the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                    type: object
-                  maxRunningPipelines:
-                    description: the maximum amount of parallel running pipelines
-                      started by this operator instance
-                    format: int32
-                    type: integer
-                  publishStrategy:
-                    description: the strategy to adopt for publishing an Integration
-                      container image
-                    type: string
-                  registry:
-                    description: the image registry used to push/pull Integration
-                      images
-                    properties:
-                      address:
-                        description: the URI to access
-                        type: string
-                      ca:
-                        description: the configmap which stores the Certificate Authority
-                        type: string
-                      insecure:
-                        description: if the container registry is insecure (ie, http
-                          only)
-                        type: boolean
-                      organization:
-                        description: the registry organization
-                        type: string
-                      secret:
-                        description: the secret where credentials are stored
-                        type: string
-                    type: object
-                  runtimeProvider:
-                    description: the runtime used. Likely Camel Quarkus (we used to
-                      have main runtime which has been discontinued since version
-                      1.5)
-                    type: string
-                  runtimeVersion:
-                    description: the Camel K Runtime dependency version
-                    type: string
-                  timeout:
-                    description: how much time to wait before time out the pipeline
-                      process
-                    type: string
-                type: object
               profile:
                 description: the profile you wish to use. It will apply certain traits
                   which are required by the specific profile chosen. It usually relates
@@ -1968,9 +1721,7 @@ spec:
             description: IntegrationPlatformStatus defines the observed state of IntegrationPlatform
             properties:
               build:
-                description: 'Deprecated: no longer used in Camel K version 2, maintained
-                  for backward compatibility with version 1. specify how to build
-                  the Integration/IntegrationKits'
+                description: specify how to build the Integration/IntegrationKits
                 properties:
                   PublishStrategyOptions:
                     additionalProperties:
@@ -2306,251 +2057,6 @@ spec:
               phase:
                 description: defines in what phase the IntegrationPlatform is found
                 type: string
-              pipeline:
-                description: specify how to build the Integration/IntegrationKits
-                properties:
-                  PublishStrategyOptions:
-                    additionalProperties:
-                      type: string
-                    description: Generic options that can used by any publish strategy
-                    type: object
-                  baseImage:
-                    description: a base image that can be used as base layer for all
-                      images. It can be useful if you want to provide some custom
-                      base image with further utility softwares
-                    type: string
-                  buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
-                    type: string
-                  buildConfiguration:
-                    description: the configuration required to build an Integration
-                      container image
-                    properties:
-                      limitCPU:
-                        description: The maximum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      limitMemory:
-                        description: The maximum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      operatorNamespace:
-                        description: The namespace where to run the builder Pod (must
-                          be the same of the operator in charge of this Build reconciliation).
-                        type: string
-                      requestCPU:
-                        description: The minimum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      requestMemory:
-                        description: The minimum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      strategy:
-                        description: the strategy to adopt
-                        enum:
-                        - routine
-                        - pod
-                        type: string
-                      toolImage:
-                        description: The container image to be used to run the build.
-                        type: string
-                    type: object
-                  maven:
-                    description: Maven configuration used to build the Camel/Camel-Quarkus
-                      applications
-                    properties:
-                      caSecrets:
-                        description: The Secrets name and key, containing the CA certificate(s)
-                          used to connect to remote Maven repositories. It can contain
-                          X.509 certificates, and PKCS#7 formatted certificate chains.
-                          A JKS formatted keystore is automatically created to store
-                          the CA certificate(s), and configured to be used as a trusted
-                          certificate(s) by the Maven commands. Note that the root
-                          CA certificates are also imported into the created keystore.
-                        items:
-                          description: SecretKeySelector selects a key of a Secret.
-                          properties:
-                            key:
-                              description: The key of the secret to select from.  Must
-                                be a valid secret key.
-                              type: string
-                            name:
-                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                TODO: Add other useful fields. apiVersion, kind, uid?'
-                              type: string
-                            optional:
-                              description: Specify whether the Secret or its key must
-                                be defined
-                              type: boolean
-                          required:
-                          - key
-                          type: object
-                        type: array
-                      cliOptions:
-                        description: The CLI options that are appended to the list
-                          of arguments for Maven commands, e.g., `-V,--no-transfer-progress,-Dstyle.color=never`.
-                          See https://maven.apache.org/ref/3.8.4/maven-embedder/cli.html.
-                        items:
-                          type: string
-                        type: array
-                      extension:
-                        description: The Maven build extensions. See https://maven.apache.org/guides/mini/guide-using-extensions.html.
-                        items:
-                          description: MavenArtifact defines a GAV (Group:Artifact:Version)
-                            Maven artifact
-                          properties:
-                            artifactId:
-                              description: Maven Artifact
-                              type: string
-                            groupId:
-                              description: Maven Group
-                              type: string
-                            version:
-                              description: Maven Version
-                              type: string
-                          required:
-                          - artifactId
-                          - groupId
-                          type: object
-                        type: array
-                      localRepository:
-                        description: The path of the local Maven repository.
-                        type: string
-                      properties:
-                        additionalProperties:
-                          type: string
-                        description: The Maven properties.
-                        type: object
-                      settings:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                      settingsSecurity:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the security of the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                    type: object
-                  maxRunningPipelines:
-                    description: the maximum amount of parallel running pipelines
-                      started by this operator instance
-                    format: int32
-                    type: integer
-                  publishStrategy:
-                    description: the strategy to adopt for publishing an Integration
-                      container image
-                    type: string
-                  registry:
-                    description: the image registry used to push/pull Integration
-                      images
-                    properties:
-                      address:
-                        description: the URI to access
-                        type: string
-                      ca:
-                        description: the configmap which stores the Certificate Authority
-                        type: string
-                      insecure:
-                        description: if the container registry is insecure (ie, http
-                          only)
-                        type: boolean
-                      organization:
-                        description: the registry organization
-                        type: string
-                      secret:
-                        description: the secret where credentials are stored
-                        type: string
-                    type: object
-                  runtimeProvider:
-                    description: the runtime used. Likely Camel Quarkus (we used to
-                      have main runtime which has been discontinued since version
-                      1.5)
-                    type: string
-                  runtimeVersion:
-                    description: the Camel K Runtime dependency version
-                    type: string
-                  timeout:
-                    description: how much time to wait before time out the pipeline
-                      process
-                    type: string
-                type: object
               profile:
                 description: the profile you wish to use. It will apply certain traits
                   which are required by the specific profile chosen. It usually relates
diff --git a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
index 6967c654f..67082c59a 100644
--- a/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
+++ b/docs/modules/ROOT/partials/apis/camel-k-crds.adoc
@@ -31,7 +31,7 @@ string
 
 Refer to the Kubernetes API documentation for the fields of the `metadata` field.
 |`spec` +
-*xref:#_camel_apache_org_v1_PipelineSpec[PipelineSpec]*
+*xref:#_camel_apache_org_v1_BuildSpec[BuildSpec]*
 |
 
 
@@ -501,9 +501,9 @@ BuildConditionType --
 
 *Appears on:*
 
+* <<#_camel_apache_org_v1_BuildSpec, BuildSpec>>
 * <<#_camel_apache_org_v1_BuilderTask, BuilderTask>>
 * <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
-* <<#_camel_apache_org_v1_IntegrationPlatformPipelineSpec, IntegrationPlatformPipelineSpec>>
 
 BuildConfiguration represent the configuration required to build the runtime
 
@@ -574,6 +574,76 @@ The maximum amount of memory required. Only used for `pod` strategy
 BuildPhase --
 
 
+[#_camel_apache_org_v1_BuildSpec]
+=== BuildSpec
+
+*Appears on:*
+
+* <<#_camel_apache_org_v1_Build, Build>>
+
+BuildSpec defines the list of tasks to be execute for a Build. From Camel K version 2, it would be more appropiate
+to think it as pipeline.
+
+[cols="2,2a",options="header"]
+|===
+|Field
+|Description
+
+|`tasks` +
+*xref:#_camel_apache_org_v1_Task[[\]Task]*
+|
+
+
+The sequence of tasks (pipeline) to be performed.
+
+|`configuration` +
+*xref:#_camel_apache_org_v1_BuildConfiguration[BuildConfiguration]*
+|
+
+
+The configuration that should be used to perform the Build.
+Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+
+|`toolImage` +
+string
+|
+
+
+The container image to be used to run the build.
+Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+
+|`operatorNamespace` +
+string
+|
+
+
+The namespace where to run the builder Pod (must be the same of the operator in charge of this Build reconciliation).
+Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+
+|`timeout` +
+*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
+|
+
+
+Timeout defines the Build maximum execution duration.
+The Build deadline is set to the Build start time plus the Timeout duration.
+If the Build deadline is exceeded, the Build context is canceled,
+Timeout defines the Pipeline maximum execution duration.
+The Pipeline deadline is set to the Pipeline start time plus the Timeout duration.
+If the Pipeline deadline is exceeded, the Pipeline context is canceled,
+and its phase set to BuildPhaseFailed.
+
+|`maxRunningBuilds` +
+int32
+|
+
+
+the maximum amount of parallel running builds started by this operator instance
+Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+
+
+|===
+
 [#_camel_apache_org_v1_BuildStatus]
 === BuildStatus
 
@@ -2400,7 +2470,6 @@ IntegrationPhase --
 *Appears on:*
 
 * <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
-* <<#_camel_apache_org_v1_IntegrationPlatformPipelineSpec, IntegrationPlatformPipelineSpec>>
 
 IntegrationPlatformBuildPublishStrategy defines the strategy used to package and publish an Integration base image
 
@@ -2412,10 +2481,9 @@ IntegrationPlatformBuildPublishStrategy defines the strategy used to package and
 
 * <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
 
-IntegrationPlatformBuildSpec contains platform related pipeline information.
+IntegrationPlatformBuildSpec contains platform related build information.
 This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
 You can define the build strategy, the image registry to use and the Maven configuration to adopt.
-Deprecated: use IntegrationPlatformPipelineSpec instead.
 
 [cols="2,2a",options="header"]
 |===
@@ -2640,103 +2708,6 @@ remote repository used to retrieve Kamelet catalog
 IntegrationPlatformPhase is the phase of an IntegrationPlatform
 
 
-[#_camel_apache_org_v1_IntegrationPlatformPipelineSpec]
-=== IntegrationPlatformPipelineSpec
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1_IntegrationPlatformSpec, IntegrationPlatformSpec>>
-
-IntegrationPlatformPipelineSpec contains platform related pipeline information.
-This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
-You can define the build strategy, the image registry to use and the Maven configuration to adopt.
-
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
-
-|`buildConfiguration` +
-*xref:#_camel_apache_org_v1_BuildConfiguration[BuildConfiguration]*
-|
-
-
-the configuration required to build an Integration container image
-
-|`publishStrategy` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformBuildPublishStrategy[IntegrationPlatformBuildPublishStrategy]*
-|
-
-
-the strategy to adopt for publishing an Integration container image
-
-|`runtimeVersion` +
-string
-|
-
-
-the Camel K Runtime dependency version
-
-|`runtimeProvider` +
-*xref:#_camel_apache_org_v1_RuntimeProvider[RuntimeProvider]*
-|
-
-
-the runtime used. Likely Camel Quarkus (we used to have main runtime which has been discontinued since version 1.5)
-
-|`baseImage` +
-string
-|
-
-
-a base image that can be used as base layer for all images.
-It can be useful if you want to provide some custom base image with further utility softwares
-
-|`registry` +
-*xref:#_camel_apache_org_v1_RegistrySpec[RegistrySpec]*
-|
-
-
-the image registry used to push/pull Integration images
-
-|`buildCatalogToolTimeout` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
-|
-
-
-the timeout (in seconds) to use when creating the build tools container image
-
-|`timeout` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
-|
-
-
-how much time to wait before time out the pipeline process
-
-|`maven` +
-*xref:#_camel_apache_org_v1_MavenSpec[MavenSpec]*
-|
-
-
-Maven configuration used to build the Camel/Camel-Quarkus applications
-
-|`PublishStrategyOptions` +
-map[string]string
-|
-
-
-Generic options that can used by any publish strategy
-
-|`maxRunningPipelines` +
-int32
-|
-
-
-the maximum amount of parallel running pipelines started by this operator instance
-
-
-|===
-
 [#_camel_apache_org_v1_IntegrationPlatformSpec]
 === IntegrationPlatformSpec
 
@@ -2772,14 +2743,6 @@ It usually relates the Cluster with the optional definition of special profiles
 |
 
 
-Deprecated: no longer used in Camel K version 2, maintained for backward compatibility with version 1.
-specify how to build the Integration/IntegrationKits
-
-|`pipeline` +
-*xref:#_camel_apache_org_v1_IntegrationPlatformPipelineSpec[IntegrationPlatformPipelineSpec]*
-|
-
-
 specify how to build the Integration/IntegrationKits
 
 |`traits` +
@@ -3836,7 +3799,6 @@ Servers (auth)
 *Appears on:*
 
 * <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
-* <<#_camel_apache_org_v1_IntegrationPlatformPipelineSpec, IntegrationPlatformPipelineSpec>>
 * <<#_camel_apache_org_v1_MavenBuildSpec, MavenBuildSpec>>
 
 MavenSpec --
@@ -4110,40 +4072,6 @@ string
 Selector allows to identify pods belonging to the pipe
 
 
-|===
-
-[#_camel_apache_org_v1_PipelineSpec]
-=== PipelineSpec
-
-*Appears on:*
-
-* <<#_camel_apache_org_v1_Build, Build>>
-
-PipelineSpec defines the Build operation to be executed
-
-[cols="2,2a",options="header"]
-|===
-|Field
-|Description
-
-|`tasks` +
-*xref:#_camel_apache_org_v1_Task[[\]Task]*
-|
-
-
-The sequence of Build tasks to be performed as part of the Build execution.
-
-|`timeout` +
-*https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#duration-v1-meta[Kubernetes meta/v1.Duration]*
-|
-
-
-Timeout defines the Pipeline maximum execution duration.
-The Pipeline deadline is set to the Pipeline start time plus the Timeout duration.
-If the Pipeline deadline is exceeded, the Pipeline context is canceled,
-and its phase set to BuildPhaseFailed.
-
-
 |===
 
 [#_camel_apache_org_v1_PluginProperties]
@@ -4394,7 +4322,6 @@ be used to delay JSON decoding or precompute a JSON encoding.
 *Appears on:*
 
 * <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
-* <<#_camel_apache_org_v1_IntegrationPlatformPipelineSpec, IntegrationPlatformPipelineSpec>>
 * <<#_camel_apache_org_v1_PublishTask, PublishTask>>
 
 RegistrySpec provides the configuration for the container registry
@@ -4548,7 +4475,6 @@ ResourceCondition is a common type for all conditions
 
 * <<#_camel_apache_org_v1_IntegrationKitStatus, IntegrationKitStatus>>
 * <<#_camel_apache_org_v1_IntegrationPlatformBuildSpec, IntegrationPlatformBuildSpec>>
-* <<#_camel_apache_org_v1_IntegrationPlatformPipelineSpec, IntegrationPlatformPipelineSpec>>
 * <<#_camel_apache_org_v1_IntegrationStatus, IntegrationStatus>>
 * <<#_camel_apache_org_v1_RuntimeSpec, RuntimeSpec>>
 
@@ -4843,7 +4769,7 @@ string
 
 *Appears on:*
 
-* <<#_camel_apache_org_v1_PipelineSpec, PipelineSpec>>
+* <<#_camel_apache_org_v1_BuildSpec, BuildSpec>>
 
 Task represents the abstract task. Only one of the task should be configured to represent the specific task chosen.
 
diff --git a/e2e/builder/build_test.go b/e2e/builder/build_test.go
index 3d083d4ba..ae4835f13 100644
--- a/e2e/builder/build_test.go
+++ b/e2e/builder/build_test.go
@@ -46,7 +46,7 @@ func TestKitMaxBuildLimit(t *testing.T) {
 
 		pl := Platform(ns)()
 		// set maximum number of running builds
-		pl.Spec.Pipeline.MaxRunningPipelines = 2
+		pl.Spec.Build.MaxRunningBuilds = 2
 		if err := TestClient().Update(TestContext, pl); err != nil {
 			t.Error(err)
 			t.FailNow()
@@ -60,7 +60,7 @@ func TestKitMaxBuildLimit(t *testing.T) {
 			WithNewTestNamespace(t, func(ns2 string) {
 				pl1 := v1.NewIntegrationPlatform(ns1, fmt.Sprintf("camel-k-%s", ns))
 				pl.Spec.DeepCopyInto(&pl1.Spec)
-				pl1.Spec.Pipeline.Maven.Settings = v1.ValueSource{}
+				pl1.Spec.Build.Maven.Settings = v1.ValueSource{}
 				pl1.SetOperatorID(fmt.Sprintf("camel-k-%s", ns))
 				if err := TestClient().Create(TestContext, &pl1); err != nil {
 					t.Error(err)
@@ -71,7 +71,7 @@ func TestKitMaxBuildLimit(t *testing.T) {
 
 				pl2 := v1.NewIntegrationPlatform(ns2, fmt.Sprintf("camel-k-%s", ns))
 				pl.Spec.DeepCopyInto(&pl2.Spec)
-				pl2.Spec.Pipeline.Maven.Settings = v1.ValueSource{}
+				pl2.Spec.Build.Maven.Settings = v1.ValueSource{}
 				pl2.SetOperatorID(fmt.Sprintf("camel-k-%s", ns))
 				if err := TestClient().Create(TestContext, &pl2); err != nil {
 					t.Error(err)
diff --git a/e2e/commonwithcustominstall/builder_test.go b/e2e/commonwithcustominstall/builder_test.go
index 759c33194..05c6d188d 100644
--- a/e2e/commonwithcustominstall/builder_test.go
+++ b/e2e/commonwithcustominstall/builder_test.go
@@ -66,7 +66,7 @@ func TestBuilderTimeout(t *testing.T) {
 
 		pl := Platform(ns)()
 		// set a short timeout to simulate the build timeout
-		pl.Spec.Pipeline.Timeout = &metav1.Duration{
+		pl.Spec.Build.Timeout = &metav1.Duration{
 			Duration: 10 * time.Second,
 		}
 		TestClient().Update(TestContext, pl)
diff --git a/e2e/commonwithcustominstall/catalog_builder_test.go b/e2e/commonwithcustominstall/catalog_builder_test.go
index 81ec68121..9184c1ff7 100644
--- a/e2e/commonwithcustominstall/catalog_builder_test.go
+++ b/e2e/commonwithcustominstall/catalog_builder_test.go
@@ -156,7 +156,7 @@ func TestCamelCatalogBuilder(t *testing.T) {
 
 		pl := Platform(ns)()
 		// set a very short timeout to simulate the timeout
-		pl.Spec.Pipeline.BuildCatalogToolTimeout = &metav1.Duration{
+		pl.Spec.Build.BuildCatalogToolTimeout = &metav1.Duration{
 			Duration: 1 * time.Second,
 		}
 		TestClient().Update(TestContext, pl)
diff --git a/e2e/commonwithcustominstall/local_platform_test.go b/e2e/commonwithcustominstall/local_platform_test.go
index 78d8e79d9..500b6bd1f 100644
--- a/e2e/commonwithcustominstall/local_platform_test.go
+++ b/e2e/commonwithcustominstall/local_platform_test.go
@@ -40,23 +40,23 @@ func TestLocalPlatform(t *testing.T) {
 		Eventually(PlatformPhase(ns), TestTimeoutMedium).Should(Equal(v1.IntegrationPlatformPhaseReady))
 
 		pl := Platform(ns)()
-		pl.Spec.Pipeline.Maven.Properties = make(map[string]string)
-		pl.Spec.Pipeline.Maven.Properties["build-global-prop1"] = "build-global-value1"
+		pl.Spec.Build.Maven.Properties = make(map[string]string)
+		pl.Spec.Build.Maven.Properties["build-global-prop1"] = "build-global-value1"
 		// set maximum number of running builds
-		pl.Spec.Pipeline.MaxRunningPipelines = 1
+		pl.Spec.Build.MaxRunningBuilds = 1
 		if err := TestClient().Update(TestContext, pl); err != nil {
 			t.Error(err)
 			t.FailNow()
 		}
 
 		Eventually(PlatformHas(ns, func(pl *v1.IntegrationPlatform) bool {
-			return pl.Status.Pipeline.MaxRunningPipelines == 1
+			return pl.Status.Build.MaxRunningBuilds == 1
 		}), TestTimeoutMedium).Should(BeTrue())
 
 		WithNewTestNamespace(t, func(ns1 string) {
 			localPlatform := v1.NewIntegrationPlatform(ns1, operatorID)
-			localPlatform.Spec.Pipeline.Maven.Properties = make(map[string]string)
-			localPlatform.Spec.Pipeline.Maven.Properties["build-local-prop1"] = "build-local-value1"
+			localPlatform.Spec.Build.Maven.Properties = make(map[string]string)
+			localPlatform.Spec.Build.Maven.Properties["build-local-prop1"] = "build-local-value1"
 			localPlatform.SetOperatorID(operatorID)
 
 			localPlatform.Spec.Traits.Container = &traitv1.ContainerTrait{
@@ -73,18 +73,18 @@ func TestLocalPlatform(t *testing.T) {
 			}), TestTimeoutShort).Should(BeTrue())
 
 			Eventually(PlatformHas(ns1, func(pl *v1.IntegrationPlatform) bool {
-				return pl.Status.Pipeline.MaxRunningPipelines == 1
+				return pl.Status.Build.MaxRunningBuilds == 1
 			}), TestTimeoutShort).Should(BeTrue())
 
 			local := Platform(ns1)()
-			Expect(local.Status.Pipeline.PublishStrategy).To(Equal(pl.Status.Pipeline.PublishStrategy))
-			Expect(local.Status.Pipeline.BuildConfiguration.Strategy).To(Equal(pl.Status.Pipeline.BuildConfiguration.Strategy))
-			Expect(local.Status.Pipeline.Maven.LocalRepository).To(Equal(pl.Status.Pipeline.Maven.LocalRepository))
-			Expect(local.Status.Pipeline.Maven.CLIOptions).To(ContainElements(pl.Status.Pipeline.Maven.CLIOptions))
-			Expect(local.Status.Pipeline.Maven.Extension).To(BeEmpty())
-			Expect(local.Status.Pipeline.Maven.Properties).To(HaveLen(2))
-			Expect(local.Status.Pipeline.Maven.Properties["build-global-prop1"]).To(Equal("build-global-value1"))
-			Expect(local.Status.Pipeline.Maven.Properties["build-local-prop1"]).To(Equal("build-local-value1"))
+			Expect(local.Status.Build.PublishStrategy).To(Equal(pl.Status.Build.PublishStrategy))
+			Expect(local.Status.Build.BuildConfiguration.Strategy).To(Equal(pl.Status.Build.BuildConfiguration.Strategy))
+			Expect(local.Status.Build.Maven.LocalRepository).To(Equal(pl.Status.Build.Maven.LocalRepository))
+			Expect(local.Status.Build.Maven.CLIOptions).To(ContainElements(pl.Status.Build.Maven.CLIOptions))
+			Expect(local.Status.Build.Maven.Extension).To(BeEmpty())
+			Expect(local.Status.Build.Maven.Properties).To(HaveLen(2))
+			Expect(local.Status.Build.Maven.Properties["build-global-prop1"]).To(Equal("build-global-value1"))
+			Expect(local.Status.Build.Maven.Properties["build-local-prop1"]).To(Equal("build-local-value1"))
 
 			Expect(KamelRunWithID(operatorID, ns1, "--name", "local-integration", "files/yaml.yaml").Execute()).To(Succeed())
 			Eventually(IntegrationPod(ns1, "local-integration"), TestTimeoutMedium).Should(Not(BeNil()))
diff --git a/e2e/install/cli/install_test.go b/e2e/install/cli/install_test.go
index ae17af71b..40f52afc8 100644
--- a/e2e/install/cli/install_test.go
+++ b/e2e/install/cli/install_test.go
@@ -150,7 +150,7 @@ func TestSkipRegistryInstallation(t *testing.T) {
 		Expect(KamelInstallWithID(operatorID, ns, "--skip-registry-setup").Execute()).To(Succeed())
 		Eventually(Platform(ns)).ShouldNot(BeNil())
 		Eventually(func() v1.RegistrySpec {
-			return Platform(ns)().Spec.Pipeline.Registry
+			return Platform(ns)().Spec.Build.Registry
 		}, TestTimeoutMedium).Should(Equal(v1.RegistrySpec{}))
 	})
 }
@@ -234,10 +234,10 @@ func TestInstallWithPublishStrategyOptions(t *testing.T) {
 		Eventually(OperatorPod(ns)).ShouldNot(BeNil())
 		Eventually(Platform(ns)).ShouldNot(BeNil())
 		Eventually(func() map[string]string {
-			return Platform(ns)().Spec.Pipeline.PublishStrategyOptions
+			return Platform(ns)().Spec.Build.PublishStrategyOptions
 		}).Should(HaveKeyWithValue("KanikoExecutorImage", "foo"))
 		Eventually(func() map[string]string {
-			return Platform(ns)().Spec.Pipeline.PublishStrategyOptions
+			return Platform(ns)().Spec.Build.PublishStrategyOptions
 		}).Should(HaveKeyWithValue("KanikoWarmerImage", "bar"))
 	})
 }
diff --git a/e2e/native/native_binding_test.go b/e2e/native/native_binding_test.go
index 01c506c8c..56f21f6ba 100644
--- a/e2e/native/native_binding_test.go
+++ b/e2e/native/native_binding_test.go
@@ -43,7 +43,7 @@ func TestNativeBinding(t *testing.T) {
 
 		pl := Platform(ns)()
 		// set a longer timeout than default as for some reason the builder hit the timeout
-		pl.Spec.Pipeline.BuildCatalogToolTimeout = &metav1.Duration{
+		pl.Spec.Build.BuildCatalogToolTimeout = &metav1.Duration{
 			Duration: 5 * time.Minute,
 		}
 		TestClient().Update(TestContext, pl)
diff --git a/e2e/native/native_with_sources_test.go b/e2e/native/native_with_sources_test.go
index a92d3e6b8..cb3101c84 100644
--- a/e2e/native/native_with_sources_test.go
+++ b/e2e/native/native_with_sources_test.go
@@ -45,7 +45,7 @@ func TestNativeHighMemoryIntegrations(t *testing.T) {
 
 		pl := Platform(ns)()
 		// set a longer timeout than default as for some reason the builder hit the timeout
-		pl.Spec.Pipeline.BuildCatalogToolTimeout = &metav1.Duration{
+		pl.Spec.Build.BuildCatalogToolTimeout = &metav1.Duration{
 			Duration: 5 * time.Minute,
 		}
 		TestClient().Update(TestContext, pl)
diff --git a/e2e/support/test_support.go b/e2e/support/test_support.go
index 3dd61b2f9..e7541e906 100644
--- a/e2e/support/test_support.go
+++ b/e2e/support/test_support.go
@@ -1892,7 +1892,7 @@ func PlatformBuildCatalogToolTimeout(ns string) func() *metav1.Duration {
 		if p == nil {
 			return &metav1.Duration{}
 		}
-		return p.Status.Pipeline.BuildCatalogToolTimeout
+		return p.Status.Build.BuildCatalogToolTimeout
 	}
 }
 
@@ -1902,7 +1902,7 @@ func PlatformTimeout(ns string) func() *metav1.Duration {
 		if p == nil {
 			return &metav1.Duration{}
 		}
-		return p.Status.Pipeline.Timeout
+		return p.Status.Build.Timeout
 	}
 }
 
diff --git a/helm/camel-k/crds/crd-build.yaml b/helm/camel-k/crds/crd-build.yaml
index d24d8135b..8898fcfd8 100644
--- a/helm/camel-k/crds/crd-build.yaml
+++ b/helm/camel-k/crds/crd-build.yaml
@@ -77,11 +77,58 @@ spec:
           metadata:
             type: object
           spec:
-            description: PipelineSpec defines the Build operation to be executed
+            description: BuildSpec defines the list of tasks to be execute for a Build.
+              From Camel K version 2, it would be more appropiate to think it as pipeline.
             properties:
+              configuration:
+                description: 'The configuration that should be used to perform the
+                  Build. Deprecated: no longer in use in Camel K 2 - maintained for
+                  backward compatibility'
+                properties:
+                  limitCPU:
+                    description: The maximum amount of CPU required. Only used for
+                      `pod` strategy
+                    type: string
+                  limitMemory:
+                    description: The maximum amount of memory required. Only used
+                      for `pod` strategy
+                    type: string
+                  operatorNamespace:
+                    description: The namespace where to run the builder Pod (must
+                      be the same of the operator in charge of this Build reconciliation).
+                    type: string
+                  requestCPU:
+                    description: The minimum amount of CPU required. Only used for
+                      `pod` strategy
+                    type: string
+                  requestMemory:
+                    description: The minimum amount of memory required. Only used
+                      for `pod` strategy
+                    type: string
+                  strategy:
+                    description: the strategy to adopt
+                    enum:
+                    - routine
+                    - pod
+                    type: string
+                  toolImage:
+                    description: The container image to be used to run the build.
+                    type: string
+                type: object
+              maxRunningBuilds:
+                description: 'the maximum amount of parallel running builds started
+                  by this operator instance Deprecated: no longer in use in Camel
+                  K 2 - maintained for backward compatibility'
+                format: int32
+                type: integer
+              operatorNamespace:
+                description: 'The namespace where to run the builder Pod (must be
+                  the same of the operator in charge of this Build reconciliation).
+                  Deprecated: no longer in use in Camel K 2 - maintained for backward
+                  compatibility'
+                type: string
               tasks:
-                description: The sequence of Build tasks to be performed as part of
-                  the Build execution.
+                description: The sequence of tasks (pipeline) to be performed.
                 items:
                   description: Task represents the abstract task. Only one of the
                     task should be configured to represent the specific task chosen.
@@ -693,12 +740,19 @@ spec:
                   type: object
                 type: array
               timeout:
-                description: Timeout defines the Pipeline maximum execution duration.
+                description: Timeout defines the Build maximum execution duration.
+                  The Build deadline is set to the Build start time plus the Timeout
+                  duration. If the Build deadline is exceeded, the Build context is
+                  canceled, Timeout defines the Pipeline maximum execution duration.
                   The Pipeline deadline is set to the Pipeline start time plus the
                   Timeout duration. If the Pipeline deadline is exceeded, the Pipeline
                   context is canceled, and its phase set to BuildPhaseFailed.
                 format: duration
                 type: string
+              toolImage:
+                description: 'The container image to be used to run the build. Deprecated:
+                  no longer in use in Camel K 2 - maintained for backward compatibility'
+                type: string
             type: object
           status:
             description: BuildStatus defines the observed state of Build
diff --git a/helm/camel-k/crds/crd-integration-platform.yaml b/helm/camel-k/crds/crd-integration-platform.yaml
index 94b37247d..6b133aace 100644
--- a/helm/camel-k/crds/crd-integration-platform.yaml
+++ b/helm/camel-k/crds/crd-integration-platform.yaml
@@ -44,19 +44,19 @@ spec:
       name: Phase
       type: string
     - description: The default build strategy
-      jsonPath: .status.pipeline.buildStrategy
+      jsonPath: .status.build.buildStrategy
       name: Build strategy
       type: string
     - description: The default publish strategy
-      jsonPath: .status.pipeline.publishStrategy
+      jsonPath: .status.build.publishStrategy
       name: Publish strategy
       type: string
     - description: The container registry address
-      jsonPath: .status.pipeline.registry.address
+      jsonPath: .status.build.registry.address
       name: Registry address
       type: string
     - description: The default runtime version
-      jsonPath: .status.pipeline.runtimeVersion
+      jsonPath: .status.build.runtimeVersion
       name: Default runtime
       type: string
     name: v1
@@ -84,9 +84,7 @@ spec:
             description: IntegrationPlatformSpec defines the desired state of IntegrationPlatform
             properties:
               build:
-                description: 'Deprecated: no longer used in Camel K version 2, maintained
-                  for backward compatibility with version 1. specify how to build
-                  the Integration/IntegrationKits'
+                description: specify how to build the Integration/IntegrationKits
                 properties:
                   PublishStrategyOptions:
                     additionalProperties:
@@ -374,251 +372,6 @@ spec:
                       type: object
                     type: array
                 type: object
-              pipeline:
-                description: specify how to build the Integration/IntegrationKits
-                properties:
-                  PublishStrategyOptions:
-                    additionalProperties:
-                      type: string
-                    description: Generic options that can used by any publish strategy
-                    type: object
-                  baseImage:
-                    description: a base image that can be used as base layer for all
-                      images. It can be useful if you want to provide some custom
-                      base image with further utility softwares
-                    type: string
-                  buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
-                    type: string
-                  buildConfiguration:
-                    description: the configuration required to build an Integration
-                      container image
-                    properties:
-                      limitCPU:
-                        description: The maximum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      limitMemory:
-                        description: The maximum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      operatorNamespace:
-                        description: The namespace where to run the builder Pod (must
-                          be the same of the operator in charge of this Build reconciliation).
-                        type: string
-                      requestCPU:
-                        description: The minimum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      requestMemory:
-                        description: The minimum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      strategy:
-                        description: the strategy to adopt
-                        enum:
-                        - routine
-                        - pod
-                        type: string
-                      toolImage:
-                        description: The container image to be used to run the build.
-                        type: string
-                    type: object
-                  maven:
-                    description: Maven configuration used to build the Camel/Camel-Quarkus
-                      applications
-                    properties:
-                      caSecrets:
-                        description: The Secrets name and key, containing the CA certificate(s)
-                          used to connect to remote Maven repositories. It can contain
-                          X.509 certificates, and PKCS#7 formatted certificate chains.
-                          A JKS formatted keystore is automatically created to store
-                          the CA certificate(s), and configured to be used as a trusted
-                          certificate(s) by the Maven commands. Note that the root
-                          CA certificates are also imported into the created keystore.
-                        items:
-                          description: SecretKeySelector selects a key of a Secret.
-                          properties:
-                            key:
-                              description: The key of the secret to select from.  Must
-                                be a valid secret key.
-                              type: string
-                            name:
-                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                TODO: Add other useful fields. apiVersion, kind, uid?'
-                              type: string
-                            optional:
-                              description: Specify whether the Secret or its key must
-                                be defined
-                              type: boolean
-                          required:
-                          - key
-                          type: object
-                        type: array
-                      cliOptions:
-                        description: The CLI options that are appended to the list
-                          of arguments for Maven commands, e.g., `-V,--no-transfer-progress,-Dstyle.color=never`.
-                          See https://maven.apache.org/ref/3.8.4/maven-embedder/cli.html.
-                        items:
-                          type: string
-                        type: array
-                      extension:
-                        description: The Maven build extensions. See https://maven.apache.org/guides/mini/guide-using-extensions.html.
-                        items:
-                          description: MavenArtifact defines a GAV (Group:Artifact:Version)
-                            Maven artifact
-                          properties:
-                            artifactId:
-                              description: Maven Artifact
-                              type: string
-                            groupId:
-                              description: Maven Group
-                              type: string
-                            version:
-                              description: Maven Version
-                              type: string
-                          required:
-                          - artifactId
-                          - groupId
-                          type: object
-                        type: array
-                      localRepository:
-                        description: The path of the local Maven repository.
-                        type: string
-                      properties:
-                        additionalProperties:
-                          type: string
-                        description: The Maven properties.
-                        type: object
-                      settings:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                      settingsSecurity:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the security of the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                    type: object
-                  maxRunningPipelines:
-                    description: the maximum amount of parallel running pipelines
-                      started by this operator instance
-                    format: int32
-                    type: integer
-                  publishStrategy:
-                    description: the strategy to adopt for publishing an Integration
-                      container image
-                    type: string
-                  registry:
-                    description: the image registry used to push/pull Integration
-                      images
-                    properties:
-                      address:
-                        description: the URI to access
-                        type: string
-                      ca:
-                        description: the configmap which stores the Certificate Authority
-                        type: string
-                      insecure:
-                        description: if the container registry is insecure (ie, http
-                          only)
-                        type: boolean
-                      organization:
-                        description: the registry organization
-                        type: string
-                      secret:
-                        description: the secret where credentials are stored
-                        type: string
-                    type: object
-                  runtimeProvider:
-                    description: the runtime used. Likely Camel Quarkus (we used to
-                      have main runtime which has been discontinued since version
-                      1.5)
-                    type: string
-                  runtimeVersion:
-                    description: the Camel K Runtime dependency version
-                    type: string
-                  timeout:
-                    description: how much time to wait before time out the pipeline
-                      process
-                    type: string
-                type: object
               profile:
                 description: the profile you wish to use. It will apply certain traits
                   which are required by the specific profile chosen. It usually relates
@@ -1968,9 +1721,7 @@ spec:
             description: IntegrationPlatformStatus defines the observed state of IntegrationPlatform
             properties:
               build:
-                description: 'Deprecated: no longer used in Camel K version 2, maintained
-                  for backward compatibility with version 1. specify how to build
-                  the Integration/IntegrationKits'
+                description: specify how to build the Integration/IntegrationKits
                 properties:
                   PublishStrategyOptions:
                     additionalProperties:
@@ -2306,251 +2057,6 @@ spec:
               phase:
                 description: defines in what phase the IntegrationPlatform is found
                 type: string
-              pipeline:
-                description: specify how to build the Integration/IntegrationKits
-                properties:
-                  PublishStrategyOptions:
-                    additionalProperties:
-                      type: string
-                    description: Generic options that can used by any publish strategy
-                    type: object
-                  baseImage:
-                    description: a base image that can be used as base layer for all
-                      images. It can be useful if you want to provide some custom
-                      base image with further utility softwares
-                    type: string
-                  buildCatalogToolTimeout:
-                    description: the timeout (in seconds) to use when creating the
-                      build tools container image
-                    type: string
-                  buildConfiguration:
-                    description: the configuration required to build an Integration
-                      container image
-                    properties:
-                      limitCPU:
-                        description: The maximum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      limitMemory:
-                        description: The maximum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      operatorNamespace:
-                        description: The namespace where to run the builder Pod (must
-                          be the same of the operator in charge of this Build reconciliation).
-                        type: string
-                      requestCPU:
-                        description: The minimum amount of CPU required. Only used
-                          for `pod` strategy
-                        type: string
-                      requestMemory:
-                        description: The minimum amount of memory required. Only used
-                          for `pod` strategy
-                        type: string
-                      strategy:
-                        description: the strategy to adopt
-                        enum:
-                        - routine
-                        - pod
-                        type: string
-                      toolImage:
-                        description: The container image to be used to run the build.
-                        type: string
-                    type: object
-                  maven:
-                    description: Maven configuration used to build the Camel/Camel-Quarkus
-                      applications
-                    properties:
-                      caSecrets:
-                        description: The Secrets name and key, containing the CA certificate(s)
-                          used to connect to remote Maven repositories. It can contain
-                          X.509 certificates, and PKCS#7 formatted certificate chains.
-                          A JKS formatted keystore is automatically created to store
-                          the CA certificate(s), and configured to be used as a trusted
-                          certificate(s) by the Maven commands. Note that the root
-                          CA certificates are also imported into the created keystore.
-                        items:
-                          description: SecretKeySelector selects a key of a Secret.
-                          properties:
-                            key:
-                              description: The key of the secret to select from.  Must
-                                be a valid secret key.
-                              type: string
-                            name:
-                              description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                TODO: Add other useful fields. apiVersion, kind, uid?'
-                              type: string
-                            optional:
-                              description: Specify whether the Secret or its key must
-                                be defined
-                              type: boolean
-                          required:
-                          - key
-                          type: object
-                        type: array
-                      cliOptions:
-                        description: The CLI options that are appended to the list
-                          of arguments for Maven commands, e.g., `-V,--no-transfer-progress,-Dstyle.color=never`.
-                          See https://maven.apache.org/ref/3.8.4/maven-embedder/cli.html.
-                        items:
-                          type: string
-                        type: array
-                      extension:
-                        description: The Maven build extensions. See https://maven.apache.org/guides/mini/guide-using-extensions.html.
-                        items:
-                          description: MavenArtifact defines a GAV (Group:Artifact:Version)
-                            Maven artifact
-                          properties:
-                            artifactId:
-                              description: Maven Artifact
-                              type: string
-                            groupId:
-                              description: Maven Group
-                              type: string
-                            version:
-                              description: Maven Version
-                              type: string
-                          required:
-                          - artifactId
-                          - groupId
-                          type: object
-                        type: array
-                      localRepository:
-                        description: The path of the local Maven repository.
-                        type: string
-                      properties:
-                        additionalProperties:
-                          type: string
-                        description: The Maven properties.
-                        type: object
-                      settings:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                      settingsSecurity:
-                        description: A reference to the ConfigMap or Secret key that
-                          contains the security of the Maven settings.
-                        properties:
-                          configMapKeyRef:
-                            description: Selects a key of a ConfigMap.
-                            properties:
-                              key:
-                                description: The key to select.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the ConfigMap or its
-                                  key must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                          secretKeyRef:
-                            description: Selects a key of a secret.
-                            properties:
-                              key:
-                                description: The key of the secret to select from.  Must
-                                  be a valid secret key.
-                                type: string
-                              name:
-                                description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
-                                  TODO: Add other useful fields. apiVersion, kind,
-                                  uid?'
-                                type: string
-                              optional:
-                                description: Specify whether the Secret or its key
-                                  must be defined
-                                type: boolean
-                            required:
-                            - key
-                            type: object
-                        type: object
-                    type: object
-                  maxRunningPipelines:
-                    description: the maximum amount of parallel running pipelines
-                      started by this operator instance
-                    format: int32
-                    type: integer
-                  publishStrategy:
-                    description: the strategy to adopt for publishing an Integration
-                      container image
-                    type: string
-                  registry:
-                    description: the image registry used to push/pull Integration
-                      images
-                    properties:
-                      address:
-                        description: the URI to access
-                        type: string
-                      ca:
-                        description: the configmap which stores the Certificate Authority
-                        type: string
-                      insecure:
-                        description: if the container registry is insecure (ie, http
-                          only)
-                        type: boolean
-                      organization:
-                        description: the registry organization
-                        type: string
-                      secret:
-                        description: the secret where credentials are stored
-                        type: string
-                    type: object
-                  runtimeProvider:
-                    description: the runtime used. Likely Camel Quarkus (we used to
-                      have main runtime which has been discontinued since version
-                      1.5)
-                    type: string
-                  runtimeVersion:
-                    description: the Camel K Runtime dependency version
-                    type: string
-                  timeout:
-                    description: how much time to wait before time out the pipeline
-                      process
-                    type: string
-                type: object
               profile:
                 description: the profile you wish to use. It will apply certain traits
                   which are required by the specific profile chosen. It usually relates
diff --git a/pkg/apis/camel/v1/build_types.go b/pkg/apis/camel/v1/build_types.go
index 4c309e997..e928c66c9 100644
--- a/pkg/apis/camel/v1/build_types.go
+++ b/pkg/apis/camel/v1/build_types.go
@@ -25,16 +25,29 @@ import (
 // NOTE: json tags are required.  Any new fields you add must have json tags for the fields to be serialized.
 // Important: Run "make generate-deepcopy" to regenerate code after modifying this file
 
-// PipelineSpec defines the Pipeline to be execute
-type PipelineSpec struct {
-	// The sequence of Pipeline tasks to be performed.
+// BuildSpec defines the list of tasks to be execute for a Build. From Camel K version 2, it would be more appropiate
+// to think it as pipeline.
+type BuildSpec struct {
+	// The sequence of tasks (pipeline) to be performed.
 	Tasks []Task `json:"tasks,omitempty"`
-	// Timeout defines the Pipeline maximum execution duration.
-	// The Pipeline deadline is set to the Pipeline start time plus the Timeout duration.
-	// If the Pipeline deadline is exceeded, the Pipeline context is canceled,
+	// The configuration that should be used to perform the Build.
+	// Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+	Configuration BuildConfiguration `json:"configuration,omitempty"`
+	// The container image to be used to run the build.
+	// Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+	ToolImage string `json:"toolImage,omitempty"`
+	// The namespace where to run the builder Pod (must be the same of the operator in charge of this Build reconciliation).
+	// Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+	BuilderPodNamespace string `json:"operatorNamespace,omitempty"`
+	// Timeout defines the Build maximum execution duration.
+	// The Build deadline is set to the Build start time plus the Timeout duration.
+	// If the Build deadline is exceeded, the Build context is canceled,
 	// and its phase set to BuildPhaseFailed.
 	// +kubebuilder:validation:Format=duration
 	Timeout metav1.Duration `json:"timeout,omitempty"`
+	// the maximum amount of parallel running builds started by this operator instance
+	// Deprecated: no longer in use in Camel K 2 - maintained for backward compatibility
+	MaxRunningBuilds int32 `json:"maxRunningBuilds,omitempty"`
 }
 
 // Task represents the abstract task. Only one of the task should be configured to represent the specific task chosen.
@@ -240,8 +253,8 @@ type Build struct {
 	metav1.TypeMeta   `json:",inline"`
 	metav1.ObjectMeta `json:"metadata,omitempty"`
 
-	Spec   PipelineSpec `json:"spec,omitempty"`
-	Status BuildStatus  `json:"status,omitempty"`
+	Spec   BuildSpec   `json:"spec,omitempty"`
+	Status BuildStatus `json:"status,omitempty"`
 }
 
 // +kubebuilder:object:root=true
diff --git a/pkg/apis/camel/v1/integrationplatform_types.go b/pkg/apis/camel/v1/integrationplatform_types.go
index 7a3d7ea77..a22b3802c 100644
--- a/pkg/apis/camel/v1/integrationplatform_types.go
+++ b/pkg/apis/camel/v1/integrationplatform_types.go
@@ -32,11 +32,8 @@ type IntegrationPlatformSpec struct {
 	// the profile you wish to use. It will apply certain traits which are required by the specific profile chosen.
 	// It usually relates the Cluster with the optional definition of special profiles (ie, Knative)
 	Profile TraitProfile `json:"profile,omitempty"`
-	// Deprecated: no longer used in Camel K version 2, maintained for backward compatibility with version 1.
 	// specify how to build the Integration/IntegrationKits
 	Build IntegrationPlatformBuildSpec `json:"build,omitempty"`
-	// specify how to build the Integration/IntegrationKits
-	Pipeline IntegrationPlatformPipelineSpec `json:"pipeline,omitempty"`
 	// list of traits to be executed for all the Integration/IntegrationKits built from this IntegrationPlatform
 	Traits Traits `json:"traits,omitempty"`
 	// Deprecated:
@@ -71,10 +68,10 @@ type IntegrationPlatformStatus struct {
 // +kubebuilder:subresource:status
 // +kubebuilder:storageversion
 // +kubebuilder:printcolumn:name="Phase",type=string,JSONPath=`.status.phase`,description="The integration platform phase"
-// +kubebuilder:printcolumn:name="Build strategy",type=string,JSONPath=`.status.pipeline.buildStrategy`,description="The default build strategy"
-// +kubebuilder:printcolumn:name="Publish strategy",type=string,JSONPath=`.status.pipeline.publishStrategy`,description="The default publish strategy"
-// +kubebuilder:printcolumn:name="Registry address",type=string,JSONPath=`.status.pipeline.registry.address`,description="The container registry address"
-// +kubebuilder:printcolumn:name="Default runtime",type=string,JSONPath=`.status.pipeline.runtimeVersion`,description="The default runtime version"
+// +kubebuilder:printcolumn:name="Build strategy",type=string,JSONPath=`.status.build.buildStrategy`,description="The default build strategy"
+// +kubebuilder:printcolumn:name="Publish strategy",type=string,JSONPath=`.status.build.publishStrategy`,description="The default publish strategy"
+// +kubebuilder:printcolumn:name="Registry address",type=string,JSONPath=`.status.build.registry.address`,description="The container registry address"
+// +kubebuilder:printcolumn:name="Default runtime",type=string,JSONPath=`.status.build.runtimeVersion`,description="The default runtime version"
 
 // IntegrationPlatform is the resource used to drive the Camel K operator behavior.
 // It defines the behavior of all Custom Resources (`IntegrationKit`, `Integration`, `Kamelet`) in the given namespace.
@@ -110,10 +107,9 @@ const (
 // AllIntegrationPlatformClusters --
 var AllIntegrationPlatformClusters = []IntegrationPlatformCluster{IntegrationPlatformClusterOpenShift, IntegrationPlatformClusterKubernetes}
 
-// IntegrationPlatformBuildSpec contains platform related pipeline information.
+// IntegrationPlatformBuildSpec contains platform related build information.
 // This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
 // You can define the build strategy, the image registry to use and the Maven configuration to adopt.
-// Deprecated: use IntegrationPlatformPipelineSpec instead.
 type IntegrationPlatformBuildSpec struct {
 	// the configuration required to build an Integration container image
 	BuildConfiguration BuildConfiguration `json:"buildConfiguration,omitempty"`
@@ -140,35 +136,6 @@ type IntegrationPlatformBuildSpec struct {
 	MaxRunningBuilds int32 `json:"maxRunningBuilds,omitempty"`
 }
 
-// IntegrationPlatformPipelineSpec contains platform related pipeline information.
-// This configuration can be used to tune the behavior of the Integration/IntegrationKit image builds.
-// You can define the build strategy, the image registry to use and the Maven configuration to adopt.
-type IntegrationPlatformPipelineSpec struct {
-	// the configuration required to build an Integration container image
-	BuildConfiguration BuildConfiguration `json:"buildConfiguration,omitempty"`
-	// the strategy to adopt for publishing an Integration container image
-	PublishStrategy IntegrationPlatformBuildPublishStrategy `json:"publishStrategy,omitempty"`
-	// the Camel K Runtime dependency version
-	RuntimeVersion string `json:"runtimeVersion,omitempty"`
-	// the runtime used. Likely Camel Quarkus (we used to have main runtime which has been discontinued since version 1.5)
-	RuntimeProvider RuntimeProvider `json:"runtimeProvider,omitempty"`
-	// a base image that can be used as base layer for all images.
-	// It can be useful if you want to provide some custom base image with further utility softwares
-	BaseImage string `json:"baseImage,omitempty"`
-	// the image registry used to push/pull Integration images
-	Registry RegistrySpec `json:"registry,omitempty"`
-	// the timeout (in seconds) to use when creating the build tools container image
-	BuildCatalogToolTimeout *metav1.Duration `json:"buildCatalogToolTimeout,omitempty"`
-	// how much time to wait before time out the pipeline process
-	Timeout *metav1.Duration `json:"timeout,omitempty"`
-	// Maven configuration used to build the Camel/Camel-Quarkus applications
-	Maven MavenSpec `json:"maven,omitempty"`
-	// Generic options that can used by any publish strategy
-	PublishStrategyOptions map[string]string `json:"PublishStrategyOptions,omitempty"`
-	// the maximum amount of parallel running pipelines started by this operator instance
-	MaxRunningPipelines int32 `json:"maxRunningPipelines,omitempty"`
-}
-
 // IntegrationPlatformKameletSpec define the behavior for all the Kamelets controller by the IntegrationPlatform
 type IntegrationPlatformKameletSpec struct {
 	// remote repository used to retrieve Kamelet catalog
diff --git a/pkg/apis/camel/v1/integrationplatform_types_support.go b/pkg/apis/camel/v1/integrationplatform_types_support.go
index 62a5588e8..599f40ef7 100644
--- a/pkg/apis/camel/v1/integrationplatform_types_support.go
+++ b/pkg/apis/camel/v1/integrationplatform_types_support.go
@@ -174,7 +174,7 @@ func (in *IntegrationPlatformStatus) RemoveCondition(condType IntegrationPlatfor
 }
 
 // IsOptionEnabled tells if provided option key is present in PublishStrategyOptions and enabled
-func (b IntegrationPlatformPipelineSpec) IsOptionEnabled(option string) bool {
+func (b IntegrationPlatformBuildSpec) IsOptionEnabled(option string) bool {
 	//Key defined in builder/kaniko.go
 	if enabled, ok := b.PublishStrategyOptions[option]; ok {
 		res, err := strconv.ParseBool(enabled)
@@ -187,7 +187,7 @@ func (b IntegrationPlatformPipelineSpec) IsOptionEnabled(option string) bool {
 }
 
 // AddOption add a publish strategy option
-func (b *IntegrationPlatformPipelineSpec) AddOption(option string, value string) {
+func (b *IntegrationPlatformBuildSpec) AddOption(option string, value string) {
 	options := b.PublishStrategyOptions
 	if options == nil {
 		options = make(map[string]string)
@@ -197,7 +197,7 @@ func (b *IntegrationPlatformPipelineSpec) AddOption(option string, value string)
 }
 
 // GetTimeout returns the specified duration or a default one
-func (b IntegrationPlatformPipelineSpec) GetTimeout() metav1.Duration {
+func (b IntegrationPlatformBuildSpec) GetTimeout() metav1.Duration {
 	if b.Timeout == nil {
 		return metav1.Duration{}
 	}
@@ -205,7 +205,7 @@ func (b IntegrationPlatformPipelineSpec) GetTimeout() metav1.Duration {
 }
 
 // GetBuildCatalogToolTimeout returns the specified duration or a default one
-func (b IntegrationPlatformPipelineSpec) GetBuildCatalogToolTimeout() metav1.Duration {
+func (b IntegrationPlatformBuildSpec) GetBuildCatalogToolTimeout() metav1.Duration {
 	if b.BuildCatalogToolTimeout == nil {
 		return metav1.Duration{}
 	}
diff --git a/pkg/apis/camel/v1/zz_generated.deepcopy.go b/pkg/apis/camel/v1/zz_generated.deepcopy.go
index f43cacaa4..e7d79c4dd 100644
--- a/pkg/apis/camel/v1/zz_generated.deepcopy.go
+++ b/pkg/apis/camel/v1/zz_generated.deepcopy.go
@@ -174,6 +174,30 @@ func (in *BuildList) DeepCopyObject() runtime.Object {
 	return nil
 }
 
+// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
+func (in *BuildSpec) DeepCopyInto(out *BuildSpec) {
+	*out = *in
+	if in.Tasks != nil {
+		in, out := &in.Tasks, &out.Tasks
+		*out = make([]Task, len(*in))
+		for i := range *in {
+			(*in)[i].DeepCopyInto(&(*out)[i])
+		}
+	}
+	out.Configuration = in.Configuration
+	out.Timeout = in.Timeout
+}
+
+// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BuildSpec.
+func (in *BuildSpec) DeepCopy() *BuildSpec {
+	if in == nil {
+		return nil
+	}
+	out := new(BuildSpec)
+	in.DeepCopyInto(out)
+	return out
+}
+
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *BuildStatus) DeepCopyInto(out *BuildStatus) {
 	*out = *in
@@ -1401,46 +1425,10 @@ func (in *IntegrationPlatformList) DeepCopyObject() runtime.Object {
 	return nil
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *IntegrationPlatformPipelineSpec) DeepCopyInto(out *IntegrationPlatformPipelineSpec) {
-	*out = *in
-	out.BuildConfiguration = in.BuildConfiguration
-	out.Registry = in.Registry
-	if in.BuildCatalogToolTimeout != nil {
-		in, out := &in.BuildCatalogToolTimeout, &out.BuildCatalogToolTimeout
-		*out = new(metav1.Duration)
-		**out = **in
-	}
-	if in.Timeout != nil {
-		in, out := &in.Timeout, &out.Timeout
-		*out = new(metav1.Duration)
-		**out = **in
-	}
-	in.Maven.DeepCopyInto(&out.Maven)
-	if in.PublishStrategyOptions != nil {
-		in, out := &in.PublishStrategyOptions, &out.PublishStrategyOptions
-		*out = make(map[string]string, len(*in))
-		for key, val := range *in {
-			(*out)[key] = val
-		}
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IntegrationPlatformPipelineSpec.
-func (in *IntegrationPlatformPipelineSpec) DeepCopy() *IntegrationPlatformPipelineSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(IntegrationPlatformPipelineSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *IntegrationPlatformSpec) DeepCopyInto(out *IntegrationPlatformSpec) {
 	*out = *in
 	in.Build.DeepCopyInto(&out.Build)
-	in.Pipeline.DeepCopyInto(&out.Pipeline)
 	in.Traits.DeepCopyInto(&out.Traits)
 	if in.Configuration != nil {
 		in, out := &in.Configuration, &out.Configuration
@@ -2192,29 +2180,6 @@ func (in *PipeStatus) DeepCopy() *PipeStatus {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *PipelineSpec) DeepCopyInto(out *PipelineSpec) {
-	*out = *in
-	if in.Tasks != nil {
-		in, out := &in.Tasks, &out.Tasks
-		*out = make([]Task, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-	out.Timeout = in.Timeout
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineSpec.
-func (in *PipelineSpec) DeepCopy() *PipelineSpec {
-	if in == nil {
-		return nil
-	}
-	out := new(PipelineSpec)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in PluginProperties) DeepCopyInto(out *PluginProperties) {
 	{
diff --git a/pkg/builder/builder_test.go b/pkg/builder/builder_test.go
index f1f7fa723..8ff60bd54 100644
--- a/pkg/builder/builder_test.go
+++ b/pkg/builder/builder_test.go
@@ -51,7 +51,7 @@ func TestFailure(t *testing.T) {
 	registerSteps(steps)
 
 	build := &v1.Build{
-		Spec: v1.PipelineSpec{
+		Spec: v1.BuildSpec{
 			Tasks: []v1.Task{
 				{
 					Builder: &v1.BuilderTask{
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/build.go b/pkg/client/camel/applyconfiguration/camel/v1/build.go
index 5cb419e90..7f4dbc514 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/build.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/build.go
@@ -30,8 +30,8 @@ import (
 type BuildApplyConfiguration struct {
 	v1.TypeMetaApplyConfiguration    `json:",inline"`
 	*v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"`
-	Spec                             *PipelineSpecApplyConfiguration `json:"spec,omitempty"`
-	Status                           *BuildStatusApplyConfiguration  `json:"status,omitempty"`
+	Spec                             *BuildSpecApplyConfiguration   `json:"spec,omitempty"`
+	Status                           *BuildStatusApplyConfiguration `json:"status,omitempty"`
 }
 
 // Build constructs an declarative configuration of the Build type for use with
@@ -206,7 +206,7 @@ func (b *BuildApplyConfiguration) ensureObjectMetaApplyConfigurationExists() {
 // WithSpec sets the Spec field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Spec field is set to the value of the last call.
-func (b *BuildApplyConfiguration) WithSpec(value *PipelineSpecApplyConfiguration) *BuildApplyConfiguration {
+func (b *BuildApplyConfiguration) WithSpec(value *BuildSpecApplyConfiguration) *BuildApplyConfiguration {
 	b.Spec = value
 	return b
 }
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformspec.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformspec.go
index 12e4a4611..7baaa7bbd 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformspec.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformspec.go
@@ -26,13 +26,12 @@ import (
 // IntegrationPlatformSpecApplyConfiguration represents an declarative configuration of the IntegrationPlatformSpec type for use
 // with apply.
 type IntegrationPlatformSpecApplyConfiguration struct {
-	Cluster       *v1.IntegrationPlatformCluster                     `json:"cluster,omitempty"`
-	Profile       *v1.TraitProfile                                   `json:"profile,omitempty"`
-	Build         *IntegrationPlatformBuildSpecApplyConfiguration    `json:"build,omitempty"`
-	Pipeline      *IntegrationPlatformPipelineSpecApplyConfiguration `json:"pipeline,omitempty"`
-	Traits        *TraitsApplyConfiguration                          `json:"traits,omitempty"`
-	Configuration []ConfigurationSpecApplyConfiguration              `json:"configuration,omitempty"`
-	Kamelet       *IntegrationPlatformKameletSpecApplyConfiguration  `json:"kamelet,omitempty"`
+	Cluster       *v1.IntegrationPlatformCluster                    `json:"cluster,omitempty"`
+	Profile       *v1.TraitProfile                                  `json:"profile,omitempty"`
+	Build         *IntegrationPlatformBuildSpecApplyConfiguration   `json:"build,omitempty"`
+	Traits        *TraitsApplyConfiguration                         `json:"traits,omitempty"`
+	Configuration []ConfigurationSpecApplyConfiguration             `json:"configuration,omitempty"`
+	Kamelet       *IntegrationPlatformKameletSpecApplyConfiguration `json:"kamelet,omitempty"`
 }
 
 // IntegrationPlatformSpecApplyConfiguration constructs an declarative configuration of the IntegrationPlatformSpec type for use with
@@ -65,14 +64,6 @@ func (b *IntegrationPlatformSpecApplyConfiguration) WithBuild(value *Integration
 	return b
 }
 
-// WithPipeline sets the Pipeline field in the declarative configuration to the given value
-// and returns the receiver, so that objects can be built by chaining "With" function invocations.
-// If called multiple times, the Pipeline field is set to the value of the last call.
-func (b *IntegrationPlatformSpecApplyConfiguration) WithPipeline(value *IntegrationPlatformPipelineSpecApplyConfiguration) *IntegrationPlatformSpecApplyConfiguration {
-	b.Pipeline = value
-	return b
-}
-
 // WithTraits sets the Traits field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Traits field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformstatus.go b/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformstatus.go
index c95398665..c14284f7d 100644
--- a/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformstatus.go
+++ b/pkg/client/camel/applyconfiguration/camel/v1/integrationplatformstatus.go
@@ -64,14 +64,6 @@ func (b *IntegrationPlatformStatusApplyConfiguration) WithBuild(value *Integrati
 	return b
 }
 
-// WithPipeline sets the Pipeline field in the declarative configuration to the given value
-// and returns the receiver, so that objects can be built by chaining "With" function invocations.
-// If called multiple times, the Pipeline field is set to the value of the last call.
-func (b *IntegrationPlatformStatusApplyConfiguration) WithPipeline(value *IntegrationPlatformPipelineSpecApplyConfiguration) *IntegrationPlatformStatusApplyConfiguration {
-	b.Pipeline = value
-	return b
-}
-
 // WithTraits sets the Traits field in the declarative configuration to the given value
 // and returns the receiver, so that objects can be built by chaining "With" function invocations.
 // If called multiple times, the Traits field is set to the value of the last call.
diff --git a/pkg/client/camel/applyconfiguration/utils.go b/pkg/client/camel/applyconfiguration/utils.go
index d9aaef778..1e0497534 100644
--- a/pkg/client/camel/applyconfiguration/utils.go
+++ b/pkg/client/camel/applyconfiguration/utils.go
@@ -48,6 +48,8 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
 		return &camelv1.BuildConfigurationApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("BuilderTask"):
 		return &camelv1.BuilderTaskApplyConfiguration{}
+	case v1.SchemeGroupVersion.WithKind("BuildSpec"):
+		return &camelv1.BuildSpecApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("BuildStatus"):
 		return &camelv1.BuildStatusApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("CamelArtifact"):
@@ -126,8 +128,6 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
 		return &camelv1.IntegrationPlatformKameletRepositorySpecApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("IntegrationPlatformKameletSpec"):
 		return &camelv1.IntegrationPlatformKameletSpecApplyConfiguration{}
-	case v1.SchemeGroupVersion.WithKind("IntegrationPlatformPipelineSpec"):
-		return &camelv1.IntegrationPlatformPipelineSpecApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("IntegrationPlatformSpec"):
 		return &camelv1.IntegrationPlatformSpecApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("IntegrationPlatformStatus"):
@@ -166,8 +166,6 @@ func ForKind(kind schema.GroupVersionKind) interface{} {
 		return &camelv1.PipeApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("PipeCondition"):
 		return &camelv1.PipeConditionApplyConfiguration{}
-	case v1.SchemeGroupVersion.WithKind("PipelineSpec"):
-		return &camelv1.PipelineSpecApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("PipeSpec"):
 		return &camelv1.PipeSpecApplyConfiguration{}
 	case v1.SchemeGroupVersion.WithKind("PipeStatus"):
diff --git a/pkg/cmd/describe_platform.go b/pkg/cmd/describe_platform.go
index be84b5fa5..9b716d8a5 100644
--- a/pkg/cmd/describe_platform.go
+++ b/pkg/cmd/describe_platform.go
@@ -108,17 +108,17 @@ func (command *describePlatformCommandOptions) describeIntegrationPlatform(cmd *
 }
 
 func getPlatformBaseImage(spec v1.IntegrationPlatformSpec) string {
-	return spec.Pipeline.BaseImage
+	return spec.Build.BaseImage
 }
 
 func getPlatformRuntimeVersion(spec v1.IntegrationPlatformSpec) string {
-	return spec.Pipeline.RuntimeVersion
+	return spec.Build.RuntimeVersion
 }
 
 func getPlatformMavenLocalRepository(spec v1.IntegrationPlatformSpec) string {
-	return spec.Pipeline.Maven.LocalRepository
+	return spec.Build.Maven.LocalRepository
 }
 
 func getPlatformPublishStrategy(spec v1.IntegrationPlatformSpec) string {
-	return string(spec.Pipeline.PublishStrategy)
+	return string(spec.Build.PublishStrategy)
 }
diff --git a/pkg/cmd/install.go b/pkg/cmd/install.go
index a777d41e0..738d9a092 100644
--- a/pkg/cmd/install.go
+++ b/pkg/cmd/install.go
@@ -193,7 +193,7 @@ type installCmdOptions struct {
 	MavenCASecret               string   `mapstructure:"maven-ca-secret"`
 	MavenCLIOptions             []string `mapstructure:"maven-cli-options"`
 	HealthPort                  int32    `mapstructure:"health-port"`
-	MaxRunningPipelines         int32    `mapstructure:"max-running-pipelines"`
+	MaxRunningBuilds            int32    `mapstructure:"max-running-pipelines"`
 	Monitoring                  bool     `mapstructure:"monitoring"`
 	MonitoringPort              int32    `mapstructure:"monitoring-port"`
 	TraitProfile                string   `mapstructure:"trait-profile"`
@@ -473,21 +473,21 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 	}
 
 	if registrySecretName != "" {
-		platform.Spec.Pipeline.Registry.Secret = registrySecretName
+		platform.Spec.Build.Registry.Secret = registrySecretName
 	}
 
 	if len(o.MavenProperties) > 0 {
-		platform.Spec.Pipeline.Maven.Properties = make(map[string]string)
+		platform.Spec.Build.Maven.Properties = make(map[string]string)
 		for _, property := range o.MavenProperties {
 			kv := strings.Split(property, "=")
 			if len(kv) == 2 {
-				platform.Spec.Pipeline.Maven.Properties[kv[0]] = kv[1]
+				platform.Spec.Build.Maven.Properties[kv[0]] = kv[1]
 			}
 		}
 	}
 
 	if size := len(o.MavenExtensions); size > 0 {
-		platform.Spec.Pipeline.Maven.Extension = make([]v1.MavenArtifact, 0, size)
+		platform.Spec.Build.Maven.Extension = make([]v1.MavenArtifact, 0, size)
 		for _, extension := range o.MavenExtensions {
 			gav := strings.Split(extension, ":")
 			if len(gav) != 2 && len(gav) != 3 {
@@ -501,29 +501,29 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 			if len(gav) == 3 {
 				ext.Version = gav[2]
 			}
-			platform.Spec.Pipeline.Maven.Extension = append(platform.Spec.Pipeline.Maven.Extension, ext)
+			platform.Spec.Build.Maven.Extension = append(platform.Spec.Build.Maven.Extension, ext)
 		}
 	}
 
 	if o.MavenLocalRepository != "" {
-		platform.Spec.Pipeline.Maven.LocalRepository = o.MavenLocalRepository
+		platform.Spec.Build.Maven.LocalRepository = o.MavenLocalRepository
 	}
 
 	if len(o.MavenCLIOptions) > 0 {
-		platform.Spec.Pipeline.Maven.CLIOptions = o.MavenCLIOptions
+		platform.Spec.Build.Maven.CLIOptions = o.MavenCLIOptions
 	}
 
 	if o.RuntimeVersion != "" {
-		platform.Spec.Pipeline.RuntimeVersion = o.RuntimeVersion
+		platform.Spec.Build.RuntimeVersion = o.RuntimeVersion
 	}
 	if o.BaseImage != "" {
-		platform.Spec.Pipeline.BaseImage = o.BaseImage
+		platform.Spec.Build.BaseImage = o.BaseImage
 	}
 	if o.BuildStrategy != "" {
-		platform.Spec.Pipeline.BuildConfiguration.Strategy = v1.BuildStrategy(o.BuildStrategy)
+		platform.Spec.Build.BuildConfiguration.Strategy = v1.BuildStrategy(o.BuildStrategy)
 	}
 	if o.BuildPublishStrategy != "" {
-		platform.Spec.Pipeline.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategy(o.BuildPublishStrategy)
+		platform.Spec.Build.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategy(o.BuildPublishStrategy)
 	}
 	if o.BuildTimeout != "" {
 		d, err := time.ParseDuration(o.BuildTimeout)
@@ -531,12 +531,12 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 			return nil, err
 		}
 
-		platform.Spec.Pipeline.Timeout = &metav1.Duration{
+		platform.Spec.Build.Timeout = &metav1.Duration{
 			Duration: d,
 		}
 	}
-	if o.MaxRunningPipelines > 0 {
-		platform.Spec.Pipeline.MaxRunningPipelines = o.MaxRunningPipelines
+	if o.MaxRunningBuilds > 0 {
+		platform.Spec.Build.MaxRunningBuilds = o.MaxRunningBuilds
 	}
 
 	if o.TraitProfile != "" {
@@ -552,7 +552,7 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 		if err != nil {
 			return nil, err
 		}
-		platform.Spec.Pipeline.Maven.Settings.ConfigMapKeyRef = &corev1.ConfigMapKeySelector{
+		platform.Spec.Build.Maven.Settings.ConfigMapKeyRef = &corev1.ConfigMapKeySelector{
 			LocalObjectReference: corev1.LocalObjectReference{
 				Name: platform.Name + "-maven-settings",
 			},
@@ -565,7 +565,7 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 		if err != nil {
 			return nil, err
 		}
-		platform.Spec.Pipeline.Maven.Settings = mavenSettings
+		platform.Spec.Build.Maven.Settings = mavenSettings
 	}
 
 	if o.MavenCASecret != "" {
@@ -573,7 +573,7 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 		if err != nil {
 			return nil, err
 		}
-		platform.Spec.Pipeline.Maven.CASecrets = append(platform.Spec.Pipeline.Maven.CASecrets, *secret)
+		platform.Spec.Build.Maven.CASecrets = append(platform.Spec.Build.Maven.CASecrets, *secret)
 	}
 
 	if o.ClusterType != "" {
@@ -584,7 +584,7 @@ func (o *installCmdOptions) setupIntegrationPlatform(c client.Client, namespace
 		}
 	}
 	if len(o.BuildPublishStrategyOptions) > 0 {
-		if err = o.addBuildPublishStrategyOptions(&platform.Spec.Pipeline); err != nil {
+		if err = o.addBuildPublishStrategyOptions(&platform.Spec.Build); err != nil {
 			return nil, err
 		}
 	}
@@ -774,8 +774,8 @@ func (o *installCmdOptions) validate(_ *cobra.Command, _ []string) error {
 	return result
 }
 
-// addBuildPublishStrategyOptions parses and adds all the build publish strategy options to the given IntegrationPlatformPipelineSpec.
-func (o *installCmdOptions) addBuildPublishStrategyOptions(pipeline *v1.IntegrationPlatformPipelineSpec) error {
+// addBuildPublishStrategyOptions parses and adds all the build publish strategy options to the given IntegrationPlatformBuildSpec.
+func (o *installCmdOptions) addBuildPublishStrategyOptions(pipeline *v1.IntegrationPlatformBuildSpec) error {
 	for _, option := range o.BuildPublishStrategyOptions {
 		kv := strings.Split(option, "=")
 		if len(kv) == 2 {
diff --git a/pkg/cmd/promote_test.go b/pkg/cmd/promote_test.go
index 9c7c52f0d..d63543902 100644
--- a/pkg/cmd/promote_test.go
+++ b/pkg/cmd/promote_test.go
@@ -55,11 +55,11 @@ func addTestPromoteCmd(options RootCmdOptions, rootCmd *cobra.Command) *promoteC
 func TestIntegrationNotCompatible(t *testing.T) {
 	srcPlatform := v1.NewIntegrationPlatform("default", platform.DefaultPlatformName)
 	srcPlatform.Status.Version = defaults.Version
-	srcPlatform.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+	srcPlatform.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	srcPlatform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	dstPlatform := v1.NewIntegrationPlatform("prod-namespace", platform.DefaultPlatformName)
 	dstPlatform.Status.Version = "0.0.1"
-	dstPlatform.Status.Pipeline.RuntimeVersion = "0.0.1"
+	dstPlatform.Status.Build.RuntimeVersion = "0.0.1"
 	dstPlatform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	defaultIntegration := nominalIntegration("my-it-test")
 	srcCatalog := createTestCamelCatalog(srcPlatform)
@@ -78,11 +78,11 @@ func TestIntegrationNotCompatible(t *testing.T) {
 func TestIntegrationDryRun(t *testing.T) {
 	srcPlatform := v1.NewIntegrationPlatform("default", platform.DefaultPlatformName)
 	srcPlatform.Status.Version = defaults.Version
-	srcPlatform.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+	srcPlatform.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	srcPlatform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	dstPlatform := v1.NewIntegrationPlatform("prod-namespace", platform.DefaultPlatformName)
 	dstPlatform.Status.Version = defaults.Version
-	dstPlatform.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+	dstPlatform.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	dstPlatform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	defaultIntegration := nominalIntegration("my-it-test")
 	srcCatalog := createTestCamelCatalog(srcPlatform)
@@ -116,11 +116,11 @@ func nominalIntegration(name string) v1.Integration {
 func TestPipeDryRun(t *testing.T) {
 	srcPlatform := v1.NewIntegrationPlatform("default", platform.DefaultPlatformName)
 	srcPlatform.Status.Version = defaults.Version
-	srcPlatform.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+	srcPlatform.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	srcPlatform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	dstPlatform := v1.NewIntegrationPlatform("prod-namespace", platform.DefaultPlatformName)
 	dstPlatform.Status.Version = defaults.Version
-	dstPlatform.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+	dstPlatform.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	dstPlatform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	defaultKB := nominalPipe("my-kb-test")
 	defaultIntegration := nominalIntegration("my-kb-test")
@@ -157,6 +157,6 @@ func nominalPipe(name string) v1.Pipe {
 
 func createTestCamelCatalog(platform v1.IntegrationPlatform) v1.CamelCatalog {
 	c := v1.NewCamelCatalog(platform.Namespace, defaults.DefaultRuntimeVersion)
-	c.Spec = v1.CamelCatalogSpec{Runtime: v1.RuntimeSpec{Provider: platform.Status.Pipeline.RuntimeProvider, Version: platform.Status.Pipeline.RuntimeVersion}}
+	c.Spec = v1.CamelCatalogSpec{Runtime: v1.RuntimeSpec{Provider: platform.Status.Build.RuntimeProvider, Version: platform.Status.Build.RuntimeVersion}}
 	return c
 }
diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index 1df538f17..c2da4f6ad 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -842,12 +842,12 @@ func (o *runCmdOptions) getPlatform(cmd *cobra.Command, c client.Client, it *v1.
 	if err != nil {
 		return nil, err
 	}
-	if ca := pl.Status.Pipeline.Registry.CA; ca != "" {
+	if ca := pl.Status.Build.Registry.CA; ca != "" {
 		o.PrintfVerboseOutf(cmd, "We've noticed the image registry is configured with a custom certificate [%s] \n", ca)
 		o.PrintVerboseOut(cmd, "Please make sure Kamel CLI is configured to use it or the operation will fail.")
 		o.PrintVerboseOut(cmd, "More information can be found here https://nodejs.org/api/cli.html#cli_node_extra_ca_certs_file")
 	}
-	if secret := pl.Status.Pipeline.Registry.Secret; secret != "" {
+	if secret := pl.Status.Build.Registry.Secret; secret != "" {
 		o.PrintfVerboseOutf(cmd, "We've noticed the image registry is configured with a Secret [%s] \n", secret)
 		o.PrintVerboseOut(cmd, "Please configure Docker authentication correctly or the operation will fail (by default it's $HOME/.docker/config.json).")
 		o.PrintVerboseOut(cmd, "More information can be found here https://docs.docker.com/engine/reference/commandline/login/")
@@ -969,7 +969,7 @@ func (o *runCmdOptions) getRegistry(platform *v1.IntegrationPlatform) string {
 	if registry != "" {
 		return registry
 	}
-	return platform.Status.Pipeline.Registry.Address
+	return platform.Status.Build.Registry.Address
 }
 
 func (o *runCmdOptions) skipChecksums() bool {
@@ -1269,7 +1269,7 @@ func writeChecksumToFile(filepath string, hash hash.Hash) error {
 }
 
 func (o *runCmdOptions) getSpectrumOptions(platform *v1.IntegrationPlatform, cmd *cobra.Command) spectrum.Options {
-	insecure := platform.Status.Pipeline.Registry.Insecure
+	insecure := platform.Status.Build.Registry.Insecure
 	var stdout io.Writer
 	if o.Verbose {
 		stdout = cmd.OutOrStdout()
@@ -1294,7 +1294,7 @@ func getArtifactHTTPPath(dependency maven.Dependency, platform *v1.IntegrationPl
 	// Some vendors don't allow '/' or '.' in repository name so let's replace them with '_'
 	artifactHTTPPath = strings.ReplaceAll(artifactHTTPPath, "/", "_")
 	artifactHTTPPath = strings.ReplaceAll(artifactHTTPPath, ".", "_")
-	organization := platform.Status.Pipeline.Registry.Organization
+	organization := platform.Status.Build.Registry.Organization
 	if organization == "" {
 		organization = ns
 	}
diff --git a/pkg/cmd/run_test.go b/pkg/cmd/run_test.go
index 49d530f00..1efbfd112 100644
--- a/pkg/cmd/run_test.go
+++ b/pkg/cmd/run_test.go
@@ -69,7 +69,7 @@ func initializeRunCmdOptionsWithOutput(t *testing.T) (*runCmdOptions, *cobra.Com
 	t.Helper()
 	defaultIntegrationPlatform := v1.NewIntegrationPlatform("default", platform.DefaultPlatformName)
 	c := v1.NewCamelCatalog(defaultIntegrationPlatform.Namespace, defaults.DefaultRuntimeVersion)
-	c.Spec = v1.CamelCatalogSpec{Runtime: v1.RuntimeSpec{Provider: defaultIntegrationPlatform.Status.Pipeline.RuntimeProvider, Version: defaultIntegrationPlatform.Status.Pipeline.RuntimeVersion}}
+	c.Spec = v1.CamelCatalogSpec{Runtime: v1.RuntimeSpec{Provider: defaultIntegrationPlatform.Status.Build.RuntimeProvider, Version: defaultIntegrationPlatform.Status.Build.RuntimeVersion}}
 	fakeClient, _ := test.NewFakeClient(&defaultIntegrationPlatform, &c)
 
 	options, rootCmd := kamelTestPreAddCommandInitWithClient(fakeClient)
diff --git a/pkg/cmd/version.go b/pkg/cmd/version.go
index 2524afad8..94607b4f1 100644
--- a/pkg/cmd/version.go
+++ b/pkg/cmd/version.go
@@ -143,12 +143,12 @@ func operatorInfo(ctx context.Context, c client.Client, namespace string) (map[s
 
 	infos["Name"] = platform.Name
 	infos["Version"] = platform.Status.Version
-	infos["Publish strategy"] = string(platform.Status.Pipeline.PublishStrategy)
-	infos["Runtime version"] = platform.Status.Pipeline.RuntimeVersion
-	infos["Registry address"] = platform.Status.Pipeline.Registry.Address
+	infos["Publish strategy"] = string(platform.Status.Build.PublishStrategy)
+	infos["Runtime version"] = platform.Status.Build.RuntimeVersion
+	infos["Registry address"] = platform.Status.Build.Registry.Address
 	infos["Git commit"] = platform.Status.Info["gitCommit"]
 
-	catalog, err := camel.LoadCatalog(ctx, c, namespace, v1.RuntimeSpec{Version: platform.Status.Pipeline.RuntimeVersion, Provider: platform.Status.Pipeline.RuntimeProvider})
+	catalog, err := camel.LoadCatalog(ctx, c, namespace, v1.RuntimeSpec{Version: platform.Status.Build.RuntimeVersion, Provider: platform.Status.Build.RuntimeProvider})
 	if err != nil {
 		return nil, err
 	}
diff --git a/pkg/cmd/version_test.go b/pkg/cmd/version_test.go
index d4d3a2215..053e0dae8 100644
--- a/pkg/cmd/version_test.go
+++ b/pkg/cmd/version_test.go
@@ -85,10 +85,10 @@ func TestVersionClientVerbose(t *testing.T) {
 func TestOperatorVersionVerbose(t *testing.T) {
 	platform := v1.NewIntegrationPlatform("default", platform.DefaultPlatformName)
 	platform.Status.Version = defaults.Version
-	platform.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+	platform.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	platform.Status.Phase = v1.IntegrationPlatformPhaseReady
 	catalog := v1.NewCamelCatalog(platform.Namespace, defaults.DefaultRuntimeVersion)
-	catalog.Spec = v1.CamelCatalogSpec{Runtime: v1.RuntimeSpec{Provider: platform.Status.Pipeline.RuntimeProvider, Version: platform.Status.Pipeline.RuntimeVersion}}
+	catalog.Spec = v1.CamelCatalogSpec{Runtime: v1.RuntimeSpec{Provider: platform.Status.Build.RuntimeProvider, Version: platform.Status.Build.RuntimeVersion}}
 	// mocked catalog versions
 	catalog.Spec.Runtime.Metadata = map[string]string{
 		"camel-quarkus.version": "2.16.0",
diff --git a/pkg/controller/build/build_controller.go b/pkg/controller/build/build_controller.go
index 065337a37..33fe525d8 100644
--- a/pkg/controller/build/build_controller.go
+++ b/pkg/controller/build/build_controller.go
@@ -147,7 +147,7 @@ func (r *reconcileBuild) Reconcile(ctx context.Context, request reconcile.Reques
 		return reconcile.Result{}, err
 	}
 	buildMonitor := Monitor{
-		maxRunningBuilds: ip.Status.Pipeline.MaxRunningPipelines,
+		maxRunningBuilds: ip.Status.Build.MaxRunningBuilds,
 	}
 
 	switch instance.BuilderConfiguration().Strategy {
diff --git a/pkg/controller/build/build_monitor_test.go b/pkg/controller/build/build_monitor_test.go
index f9755108f..0dd4ee2d3 100644
--- a/pkg/controller/build/build_monitor_test.go
+++ b/pkg/controller/build/build_monitor_test.go
@@ -227,7 +227,7 @@ func newBuildWithLayoutInPhase(namespace string, name string, layout string, pha
 				v1.IntegrationKitLayoutLabel: layout,
 			},
 		},
-		Spec: v1.PipelineSpec{
+		Spec: v1.BuildSpec{
 			Tasks: []v1.Task{
 				{
 					Builder: &v1.BuilderTask{
diff --git a/pkg/controller/catalog/initialize.go b/pkg/controller/catalog/initialize.go
index efe414461..98d4ddfbe 100644
--- a/pkg/controller/catalog/initialize.go
+++ b/pkg/controller/catalog/initialize.go
@@ -67,7 +67,7 @@ func (action *initializeAction) Handle(ctx context.Context, catalog *v1.CamelCat
 	}
 
 	// Make basic options for building image in the registry
-	options, err := makeSpectrumOptions(ctx, action.client, platform.Namespace, platform.Status.Pipeline.Registry)
+	options, err := makeSpectrumOptions(ctx, action.client, platform.Namespace, platform.Status.Build.Registry)
 	if err != nil {
 		return catalog, err
 	}
@@ -79,7 +79,7 @@ func initialize(options spectrum.Options, ip *v1.IntegrationPlatform, catalog *v
 	target := catalog.DeepCopy()
 	imageName := fmt.Sprintf(
 		"%s/camel-k-runtime-%s-builder:%s",
-		ip.Status.Pipeline.Registry.Address,
+		ip.Status.Build.Registry.Address,
 		catalog.Spec.Runtime.Provider,
 		strings.ToLower(catalog.Spec.Runtime.Version),
 	)
@@ -116,7 +116,7 @@ func initialize(options spectrum.Options, ip *v1.IntegrationPlatform, catalog *v
 	options.Base = catalog.Spec.GetQuarkusToolingImage()
 	options.Target = imageName
 
-	err := buildRuntimeBuilderWithTimeout(options, ip.Status.Pipeline.GetBuildCatalogToolTimeout().Duration)
+	err := buildRuntimeBuilderWithTimeout(options, ip.Status.Build.GetBuildCatalogToolTimeout().Duration)
 
 	if err != nil {
 		target.Status.Phase = v1.CamelCatalogPhaseError
diff --git a/pkg/controller/integrationkit/build.go b/pkg/controller/integrationkit/build.go
index 4d12b781e..24cf949a7 100644
--- a/pkg/controller/integrationkit/build.go
+++ b/pkg/controller/integrationkit/build.go
@@ -99,8 +99,8 @@ func (action *buildAction) handleBuildSubmitted(ctx context.Context, kit *v1.Int
 			annotations[v1.OperatorIDAnnotation] = operatorID
 		}
 
-		timeout := env.Platform.Status.Pipeline.GetTimeout()
-		if layout := labels[v1.IntegrationKitLayoutLabel]; env.Platform.Spec.Pipeline.Timeout == nil && layout == v1.IntegrationKitLayoutNative {
+		timeout := env.Platform.Status.Build.GetTimeout()
+		if layout := labels[v1.IntegrationKitLayoutLabel]; env.Platform.Spec.Build.Timeout == nil && layout == v1.IntegrationKitLayoutNative {
 			// Increase the timeout to a sensible default
 			timeout = metav1.Duration{
 				Duration: 10 * time.Minute,
@@ -113,10 +113,10 @@ func (action *buildAction) handleBuildSubmitted(ctx context.Context, kit *v1.Int
 		buildConfig := v1.BuilderConfigurationTasks(env.Pipeline)
 		if buildConfig.IsEmpty() {
 			// default to IntegrationPlatform configuration
-			buildConfig = &env.Platform.Status.Pipeline.BuildConfiguration
+			buildConfig = &env.Platform.Status.Build.BuildConfiguration
 		} else if buildConfig.Strategy == "" {
 			// we always need to define a strategy, so we default to platform if none
-			buildConfig.Strategy = env.Platform.Status.Pipeline.BuildConfiguration.Strategy
+			buildConfig.Strategy = env.Platform.Status.Build.BuildConfiguration.Strategy
 		}
 
 		// nolint: contextcheck
@@ -149,7 +149,7 @@ func (action *buildAction) handleBuildSubmitted(ctx context.Context, kit *v1.Int
 				Labels:      labels,
 				Annotations: annotations,
 			},
-			Spec: v1.PipelineSpec{
+			Spec: v1.BuildSpec{
 				Tasks:   env.Pipeline,
 				Timeout: timeout,
 			},
diff --git a/pkg/controller/integrationplatform/initialize.go b/pkg/controller/integrationplatform/initialize.go
index 7a888762b..a38274bdb 100644
--- a/pkg/controller/integrationplatform/initialize.go
+++ b/pkg/controller/integrationplatform/initialize.go
@@ -69,8 +69,8 @@ func (action *initializeAction) Handle(ctx context.Context, platform *v1.Integra
 	if err = platformutil.ConfigureDefaults(ctx, action.client, platform, true); err != nil {
 		return nil, err
 	}
-	if platform.Status.Pipeline.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
-		cacheEnabled := platform.Status.Pipeline.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
+	if platform.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
+		cacheEnabled := platform.Status.Build.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
 		if cacheEnabled {
 			// Create the persistent volume claim used by the Kaniko cache
 			action.L.Info("Create persistent volume claim")
@@ -121,7 +121,7 @@ func createPersistentVolumeClaim(ctx context.Context, client client.Client, plat
 	if err != nil {
 		return err
 	}
-	pvcName := platform.Status.Pipeline.PublishStrategyOptions[builder.KanikoPVCName]
+	pvcName := platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
 	pvc := &corev1.PersistentVolumeClaim{
 		TypeMeta: metav1.TypeMeta{
 			APIVersion: corev1.SchemeGroupVersion.String(),
diff --git a/pkg/controller/integrationplatform/initialize_test.go b/pkg/controller/integrationplatform/initialize_test.go
index 75b4ae720..158815b03 100644
--- a/pkg/controller/integrationplatform/initialize_test.go
+++ b/pkg/controller/integrationplatform/initialize_test.go
@@ -53,7 +53,7 @@ func TestTimeouts_Default(t *testing.T) {
 	assert.Nil(t, err)
 	assert.NotNil(t, answer)
 
-	assert.Equal(t, 5*time.Minute, answer.Status.Pipeline.GetTimeout().Duration)
+	assert.Equal(t, 5*time.Minute, answer.Status.Build.GetTimeout().Duration)
 }
 
 func TestTimeouts_MavenComputedFromBuild(t *testing.T) {
@@ -66,7 +66,7 @@ func TestTimeouts_MavenComputedFromBuild(t *testing.T) {
 	timeout, err := time.ParseDuration("1m1ms")
 	assert.Nil(t, err)
 
-	ip.Spec.Pipeline.Timeout = &metav1.Duration{
+	ip.Spec.Build.Timeout = &metav1.Duration{
 		Duration: timeout,
 	}
 
@@ -83,7 +83,7 @@ func TestTimeouts_MavenComputedFromBuild(t *testing.T) {
 	assert.Nil(t, err)
 	assert.NotNil(t, answer)
 
-	assert.Equal(t, 1*time.Minute, answer.Status.Pipeline.GetTimeout().Duration)
+	assert.Equal(t, 1*time.Minute, answer.Status.Build.GetTimeout().Duration)
 }
 
 func TestTimeouts_Truncated(t *testing.T) {
@@ -96,7 +96,7 @@ func TestTimeouts_Truncated(t *testing.T) {
 	bt, err := time.ParseDuration("5m1ms")
 	assert.Nil(t, err)
 
-	ip.Spec.Pipeline.Timeout = &metav1.Duration{
+	ip.Spec.Build.Timeout = &metav1.Duration{
 		Duration: bt,
 	}
 
@@ -113,5 +113,5 @@ func TestTimeouts_Truncated(t *testing.T) {
 	assert.Nil(t, err)
 	assert.NotNil(t, answer)
 
-	assert.Equal(t, 5*time.Minute, answer.Status.Pipeline.GetTimeout().Duration)
+	assert.Equal(t, 5*time.Minute, answer.Status.Build.GetTimeout().Duration)
 }
diff --git a/pkg/controller/integrationplatform/kaniko_cache.go b/pkg/controller/integrationplatform/kaniko_cache.go
index c463a8725..f82ef1d52 100644
--- a/pkg/controller/integrationplatform/kaniko_cache.go
+++ b/pkg/controller/integrationplatform/kaniko_cache.go
@@ -38,10 +38,10 @@ func createKanikoCacheWarmerPod(ctx context.Context, client client.Client, platf
 	// See:
 	// - https://kubernetes.io/docs/concepts/storage/persistent-volumes/#node-affinity
 	// - https://kubernetes.io/docs/concepts/storage/volumes/#local
-	pvcName := platform.Status.Pipeline.PublishStrategyOptions[builder.KanikoPVCName]
+	pvcName := platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
 
 	var warmerImage string
-	if image, found := platform.Status.Pipeline.PublishStrategyOptions[builder.KanikoWarmerImage]; found {
+	if image, found := platform.Status.Build.PublishStrategyOptions[builder.KanikoWarmerImage]; found {
 		warmerImage = image
 	} else {
 		warmerImage = fmt.Sprintf("%s:v%s", builder.KanikoDefaultWarmerImageName, defaults.KanikoVersion)
@@ -66,7 +66,7 @@ func createKanikoCacheWarmerPod(ctx context.Context, client client.Client, platf
 					Image: warmerImage,
 					Args: []string{
 						"--cache-dir=" + builder.KanikoCacheDir,
-						"--image=" + platform.Status.Pipeline.BaseImage,
+						"--image=" + platform.Status.Build.BaseImage,
 					},
 					VolumeMounts: []corev1.VolumeMount{
 						{
diff --git a/pkg/install/operator.go b/pkg/install/operator.go
index 807762257..54c2a1af5 100644
--- a/pkg/install/operator.go
+++ b/pkg/install/operator.go
@@ -643,7 +643,7 @@ func NewPlatform(
 	if !skipRegistrySetup {
 		// Let's apply registry settings whether it's OpenShift or not
 		// Some OpenShift variants such as Microshift might not have a built-in registry
-		pl.Spec.Pipeline.Registry = registry
+		pl.Spec.Build.Registry = registry
 
 		if !isOpenShift && registry.Address == "" {
 			// This operation should be done here in the installer
@@ -664,11 +664,11 @@ func NewPlatform(
 				return nil, errors.New("cannot find a registry where to push images")
 			}
 
-			pl.Spec.Pipeline.Registry.Address = *address
-			pl.Spec.Pipeline.Registry.Insecure = true
-			if pl.Spec.Pipeline.PublishStrategy == "" {
+			pl.Spec.Build.Registry.Address = *address
+			pl.Spec.Build.Registry.Insecure = true
+			if pl.Spec.Build.PublishStrategy == "" {
 				// Use spectrum in insecure dev clusters by default
-				pl.Spec.Pipeline.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategySpectrum
+				pl.Spec.Build.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategySpectrum
 			}
 		}
 	}
diff --git a/pkg/platform/defaults.go b/pkg/platform/defaults.go
index 31ad980f8..e33b8a371 100644
--- a/pkg/platform/defaults.go
+++ b/pkg/platform/defaults.go
@@ -72,18 +72,18 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
 		}
 	}
 
-	if p.Status.Pipeline.PublishStrategy == "" {
+	if p.Status.Build.PublishStrategy == "" {
 		if p.Status.Cluster == v1.IntegrationPlatformClusterOpenShift {
-			p.Status.Pipeline.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategyS2I
+			p.Status.Build.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategyS2I
 		} else {
-			p.Status.Pipeline.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategySpectrum
+			p.Status.Build.PublishStrategy = v1.IntegrationPlatformBuildPublishStrategySpectrum
 		}
-		log.Debugf("Integration Platform %s [%s]: setting publishing strategy %s", p.Name, p.Namespace, p.Status.Pipeline.PublishStrategy)
+		log.Debugf("Integration Platform %s [%s]: setting publishing strategy %s", p.Name, p.Namespace, p.Status.Build.PublishStrategy)
 	}
 
-	if p.Status.Pipeline.BuildConfiguration.Strategy == "" {
-		p.Status.Pipeline.BuildConfiguration.Strategy = v1.BuildStrategyPod
-		log.Debugf("Integration Platform %s [%s]: setting build strategy %s", p.Name, p.Namespace, p.Status.Pipeline.BuildConfiguration.Strategy)
+	if p.Status.Build.BuildConfiguration.Strategy == "" {
+		p.Status.Build.BuildConfiguration.Strategy = v1.BuildStrategyPod
+		log.Debugf("Integration Platform %s [%s]: setting build strategy %s", p.Name, p.Namespace, p.Status.Build.BuildConfiguration.Strategy)
 	}
 
 	err := setPlatformDefaults(p, verbose)
@@ -91,7 +91,7 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
 		return err
 	}
 
-	if p.Status.Pipeline.BuildConfiguration.Strategy == v1.BuildStrategyPod {
+	if p.Status.Build.BuildConfiguration.Strategy == v1.BuildStrategyPod {
 		if err := CreateBuilderServiceAccount(ctx, c, p); err != nil {
 			return fmt.Errorf("cannot ensure service account is present: %w", err)
 		}
@@ -102,12 +102,12 @@ func ConfigureDefaults(ctx context.Context, c client.Client, p *v1.IntegrationPl
 		return err
 	}
 
-	if verbose && p.Status.Pipeline.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategyS2I && p.Status.Pipeline.Registry.Address == "" {
+	if verbose && p.Status.Build.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategyS2I && p.Status.Build.Registry.Address == "" {
 		log.Log.Info("No registry specified for publishing images")
 	}
 
-	if verbose && p.Status.Pipeline.GetTimeout().Duration != 0 {
-		log.Log.Infof("Maven Timeout set to %s", p.Status.Pipeline.GetTimeout().Duration)
+	if verbose && p.Status.Build.GetTimeout().Duration != 0 {
+		log.Log.Infof("Maven Timeout set to %s", p.Status.Build.GetTimeout().Duration)
 	}
 
 	return nil
@@ -131,11 +131,11 @@ func CreateBuilderServiceAccount(ctx context.Context, client client.Client, p *v
 
 func configureRegistry(ctx context.Context, c client.Client, p *v1.IntegrationPlatform, verbose bool) error {
 	if p.Status.Cluster == v1.IntegrationPlatformClusterOpenShift &&
-		p.Status.Pipeline.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategyS2I &&
-		p.Status.Pipeline.Registry.Address == "" {
+		p.Status.Build.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategyS2I &&
+		p.Status.Build.Registry.Address == "" {
 		log.Debugf("Integration Platform %s [%s]: setting registry address", p.Name, p.Namespace)
 		// Default to using OpenShift internal container images registry when using a strategy other than S2I
-		p.Status.Pipeline.Registry.Address = "image-registry.openshift-image-registry.svc:5000"
+		p.Status.Build.Registry.Address = "image-registry.openshift-image-registry.svc:5000"
 
 		// OpenShift automatically injects the service CA certificate into the service-ca.crt key on the ConfigMap
 		cm, err := createServiceCaBundleConfigMap(ctx, c, p)
@@ -143,10 +143,10 @@ func configureRegistry(ctx context.Context, c client.Client, p *v1.IntegrationPl
 			return err
 		}
 		log.Debugf("Integration Platform %s [%s]: setting registry certificate authority", p.Name, p.Namespace)
-		p.Status.Pipeline.Registry.CA = cm.Name
+		p.Status.Build.Registry.CA = cm.Name
 
 		// Default to using the registry secret that's configured for the builder service account
-		if p.Status.Pipeline.Registry.Secret == "" {
+		if p.Status.Build.Registry.Secret == "" {
 			log.Debugf("Integration Platform %s [%s]: setting registry secret", p.Name, p.Namespace)
 			// Bind the required role to push images to the registry
 			err := createBuilderRegistryRoleBinding(ctx, c, p)
@@ -162,24 +162,24 @@ func configureRegistry(ctx context.Context, c client.Client, p *v1.IntegrationPl
 			// We may want to read the secret keys instead of relying on the secret name scheme
 			for _, secret := range sa.Secrets {
 				if strings.Contains(secret.Name, "camel-k-builder-dockercfg") {
-					p.Status.Pipeline.Registry.Secret = secret.Name
+					p.Status.Build.Registry.Secret = secret.Name
 
 					break
 				}
 			}
 		}
 	}
-	if p.Status.Pipeline.Registry.Address == "" {
+	if p.Status.Build.Registry.Address == "" {
 		// try KEP-1755
 		address, err := image.GetRegistryAddress(ctx, c)
 		if err != nil && verbose {
 			log.Error(err, "Cannot find a registry where to push images via KEP-1755")
 		} else if err == nil && address != nil {
-			p.Status.Pipeline.Registry.Address = *address
+			p.Status.Build.Registry.Address = *address
 		}
 	}
 
-	log.Debugf("Final Registry Address: %s", p.Status.Pipeline.Registry.Address)
+	log.Debugf("Final Registry Address: %s", p.Status.Build.Registry.Address)
 	return nil
 }
 
@@ -215,60 +215,60 @@ func applyPlatformSpec(source *v1.IntegrationPlatform, target *v1.IntegrationPla
 		target.Status.Profile = source.Status.Profile
 	}
 
-	if target.Status.Pipeline.PublishStrategy == "" {
-		target.Status.Pipeline.PublishStrategy = source.Status.Pipeline.PublishStrategy
+	if target.Status.Build.PublishStrategy == "" {
+		target.Status.Build.PublishStrategy = source.Status.Build.PublishStrategy
 	}
-	if target.Status.Pipeline.PublishStrategyOptions == nil {
+	if target.Status.Build.PublishStrategyOptions == nil {
 		log.Debugf("Integration Platform %s [%s]: setting publish strategy options", target.Name, target.Namespace)
-		target.Status.Pipeline.PublishStrategyOptions = source.Status.Pipeline.PublishStrategyOptions
+		target.Status.Build.PublishStrategyOptions = source.Status.Build.PublishStrategyOptions
 	}
-	if target.Status.Pipeline.BuildConfiguration.Strategy == "" {
-		target.Status.Pipeline.BuildConfiguration.Strategy = source.Status.Pipeline.BuildConfiguration.Strategy
+	if target.Status.Build.BuildConfiguration.Strategy == "" {
+		target.Status.Build.BuildConfiguration.Strategy = source.Status.Build.BuildConfiguration.Strategy
 	}
 
-	if target.Status.Pipeline.RuntimeVersion == "" {
+	if target.Status.Build.RuntimeVersion == "" {
 		log.Debugf("Integration Platform %s [%s]: setting runtime version", target.Name, target.Namespace)
-		target.Status.Pipeline.RuntimeVersion = source.Status.Pipeline.RuntimeVersion
+		target.Status.Build.RuntimeVersion = source.Status.Build.RuntimeVersion
 	}
-	if target.Status.Pipeline.BaseImage == "" {
+	if target.Status.Build.BaseImage == "" {
 		log.Debugf("Integration Platform %s [%s]: setting base image", target.Name, target.Namespace)
-		target.Status.Pipeline.BaseImage = source.Status.Pipeline.BaseImage
+		target.Status.Build.BaseImage = source.Status.Build.BaseImage
 	}
 
-	if target.Status.Pipeline.Maven.LocalRepository == "" {
+	if target.Status.Build.Maven.LocalRepository == "" {
 		log.Debugf("Integration Platform %s [%s]: setting local repository", target.Name, target.Namespace)
-		target.Status.Pipeline.Maven.LocalRepository = source.Status.Pipeline.Maven.LocalRepository
+		target.Status.Build.Maven.LocalRepository = source.Status.Build.Maven.LocalRepository
 	}
 
-	if len(source.Status.Pipeline.Maven.CLIOptions) > 0 && len(target.Status.Pipeline.Maven.CLIOptions) == 0 {
+	if len(source.Status.Build.Maven.CLIOptions) > 0 && len(target.Status.Build.Maven.CLIOptions) == 0 {
 		log.Debugf("Integration Platform %s [%s]: setting CLI options", target.Name, target.Namespace)
-		target.Status.Pipeline.Maven.CLIOptions = make([]string, len(source.Status.Pipeline.Maven.CLIOptions))
-		copy(target.Status.Pipeline.Maven.CLIOptions, source.Status.Pipeline.Maven.CLIOptions)
+		target.Status.Build.Maven.CLIOptions = make([]string, len(source.Status.Build.Maven.CLIOptions))
+		copy(target.Status.Build.Maven.CLIOptions, source.Status.Build.Maven.CLIOptions)
 	}
 
-	if len(source.Status.Pipeline.Maven.Properties) > 0 {
+	if len(source.Status.Build.Maven.Properties) > 0 {
 		log.Debugf("Integration Platform %s [%s]: setting Maven properties", target.Name, target.Namespace)
-		if len(target.Status.Pipeline.Maven.Properties) == 0 {
-			target.Status.Pipeline.Maven.Properties = make(map[string]string, len(source.Status.Pipeline.Maven.Properties))
+		if len(target.Status.Build.Maven.Properties) == 0 {
+			target.Status.Build.Maven.Properties = make(map[string]string, len(source.Status.Build.Maven.Properties))
 		}
 
-		for key, val := range source.Status.Pipeline.Maven.Properties {
+		for key, val := range source.Status.Build.Maven.Properties {
 			// only set unknown properties on target
-			if _, ok := target.Status.Pipeline.Maven.Properties[key]; !ok {
-				target.Status.Pipeline.Maven.Properties[key] = val
+			if _, ok := target.Status.Build.Maven.Properties[key]; !ok {
+				target.Status.Build.Maven.Properties[key] = val
 			}
 		}
 	}
 
-	if len(source.Status.Pipeline.Maven.Extension) > 0 && len(target.Status.Pipeline.Maven.Extension) == 0 {
+	if len(source.Status.Build.Maven.Extension) > 0 && len(target.Status.Build.Maven.Extension) == 0 {
 		log.Debugf("Integration Platform %s [%s]: setting Maven extensions", target.Name, target.Namespace)
-		target.Status.Pipeline.Maven.Extension = make([]v1.MavenArtifact, len(source.Status.Pipeline.Maven.Extension))
-		copy(target.Status.Pipeline.Maven.Extension, source.Status.Pipeline.Maven.Extension)
+		target.Status.Build.Maven.Extension = make([]v1.MavenArtifact, len(source.Status.Build.Maven.Extension))
+		copy(target.Status.Build.Maven.Extension, source.Status.Build.Maven.Extension)
 	}
 
-	if target.Status.Pipeline.Registry.Address == "" && source.Status.Pipeline.Registry.Address != "" {
+	if target.Status.Build.Registry.Address == "" && source.Status.Build.Registry.Address != "" {
 		log.Debugf("Integration Platform %s [%s]: setting registry", target.Name, target.Namespace)
-		source.Status.Pipeline.Registry.DeepCopyInto(&target.Status.Pipeline.Registry)
+		source.Status.Build.Registry.DeepCopyInto(&target.Status.Build.Registry)
 	}
 
 	if err := target.Status.Traits.Merge(source.Status.Traits); err != nil {
@@ -278,15 +278,15 @@ func applyPlatformSpec(source *v1.IntegrationPlatform, target *v1.IntegrationPla
 	}
 
 	// Build timeout
-	if target.Status.Pipeline.Timeout == nil {
+	if target.Status.Build.Timeout == nil {
 		log.Debugf("Integration Platform %s [%s]: setting build timeout", target.Name, target.Namespace)
-		target.Status.Pipeline.Timeout = source.Status.Pipeline.Timeout
+		target.Status.Build.Timeout = source.Status.Build.Timeout
 	}
 
 	// Catalog tools build timeout
-	if target.Status.Pipeline.BuildCatalogToolTimeout == nil {
+	if target.Status.Build.BuildCatalogToolTimeout == nil {
 		log.Debugf("Integration Platform %s [%s]: setting build camel catalog tool timeout", target.Name, target.Namespace)
-		target.Status.Pipeline.BuildCatalogToolTimeout = source.Status.Pipeline.BuildCatalogToolTimeout
+		target.Status.Build.BuildCatalogToolTimeout = source.Status.Build.BuildCatalogToolTimeout
 	}
 
 	if len(target.Status.Kamelet.Repositories) == 0 {
@@ -296,88 +296,88 @@ func applyPlatformSpec(source *v1.IntegrationPlatform, target *v1.IntegrationPla
 }
 
 func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
-	if p.Status.Pipeline.PublishStrategyOptions == nil {
+	if p.Status.Build.PublishStrategyOptions == nil {
 		log.Debugf("Integration Platform %s [%s]: setting publish strategy options", p.Name, p.Namespace)
-		p.Status.Pipeline.PublishStrategyOptions = map[string]string{}
+		p.Status.Build.PublishStrategyOptions = map[string]string{}
 	}
-	if p.Status.Pipeline.RuntimeVersion == "" {
+	if p.Status.Build.RuntimeVersion == "" {
 		log.Debugf("Integration Platform %s [%s]: setting runtime version", p.Name, p.Namespace)
-		p.Status.Pipeline.RuntimeVersion = defaults.DefaultRuntimeVersion
+		p.Status.Build.RuntimeVersion = defaults.DefaultRuntimeVersion
 	}
-	if p.Status.Pipeline.BaseImage == "" {
+	if p.Status.Build.BaseImage == "" {
 		log.Debugf("Integration Platform %s [%s]: setting base image", p.Name, p.Namespace)
-		p.Status.Pipeline.BaseImage = defaults.BaseImage()
+		p.Status.Build.BaseImage = defaults.BaseImage()
 	}
-	if p.Status.Pipeline.Maven.LocalRepository == "" {
+	if p.Status.Build.Maven.LocalRepository == "" {
 		log.Debugf("Integration Platform %s [%s]: setting local repository", p.Name, p.Namespace)
-		p.Status.Pipeline.Maven.LocalRepository = defaults.LocalRepository
+		p.Status.Build.Maven.LocalRepository = defaults.LocalRepository
 	}
-	if len(p.Status.Pipeline.Maven.CLIOptions) == 0 {
+	if len(p.Status.Build.Maven.CLIOptions) == 0 {
 		log.Debugf("Integration Platform %s [%s]: setting CLI options", p.Name, p.Namespace)
-		p.Status.Pipeline.Maven.CLIOptions = []string{
+		p.Status.Build.Maven.CLIOptions = []string{
 			"-V",
 			"--no-transfer-progress",
 			"-Dstyle.color=never",
 		}
 	}
-	if _, ok := p.Status.Pipeline.PublishStrategyOptions[builder.KanikoPVCName]; !ok {
+	if _, ok := p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]; !ok {
 		log.Debugf("Integration Platform %s [%s]: setting publish strategy options", p.Name, p.Namespace)
-		p.Status.Pipeline.PublishStrategyOptions[builder.KanikoPVCName] = p.Name
+		p.Status.Build.PublishStrategyOptions[builder.KanikoPVCName] = p.Name
 	}
 
 	// Build timeout
-	if p.Status.Pipeline.GetTimeout().Duration == 0 {
-		p.Status.Pipeline.Timeout = &metav1.Duration{
+	if p.Status.Build.GetTimeout().Duration == 0 {
+		p.Status.Build.Timeout = &metav1.Duration{
 			Duration: 5 * time.Minute,
 		}
 	} else {
-		d := p.Status.Pipeline.GetTimeout().Duration.Truncate(time.Second)
+		d := p.Status.Build.GetTimeout().Duration.Truncate(time.Second)
 
-		if verbose && p.Status.Pipeline.GetTimeout().Duration != d {
-			log.Log.Infof("Build timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Pipeline.GetTimeout().Duration, d)
+		if verbose && p.Status.Build.GetTimeout().Duration != d {
+			log.Log.Infof("Build timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Build.GetTimeout().Duration, d)
 		}
 
 		log.Debugf("Integration Platform %s [%s]: setting build timeout", p.Name, p.Namespace)
-		p.Status.Pipeline.Timeout = &metav1.Duration{
+		p.Status.Build.Timeout = &metav1.Duration{
 			Duration: d,
 		}
 	}
 
 	// Catalog tools build timeout
-	if p.Status.Pipeline.GetBuildCatalogToolTimeout().Duration == 0 {
+	if p.Status.Build.GetBuildCatalogToolTimeout().Duration == 0 {
 		log.Debugf("Integration Platform %s [%s]: setting default build camel catalog tool timeout (1 minute)", p.Name, p.Namespace)
-		p.Status.Pipeline.BuildCatalogToolTimeout = &metav1.Duration{
+		p.Status.Build.BuildCatalogToolTimeout = &metav1.Duration{
 			Duration: 1 * time.Minute,
 		}
 	} else {
-		d := p.Status.Pipeline.GetBuildCatalogToolTimeout().Duration.Truncate(time.Second)
+		d := p.Status.Build.GetBuildCatalogToolTimeout().Duration.Truncate(time.Second)
 
-		if verbose && p.Status.Pipeline.GetBuildCatalogToolTimeout().Duration != d {
-			log.Log.Infof("Build catalog tools timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Pipeline.GetBuildCatalogToolTimeout().Duration, d)
+		if verbose && p.Status.Build.GetBuildCatalogToolTimeout().Duration != d {
+			log.Log.Infof("Build catalog tools timeout minimum unit is sec (configured: %s, truncated: %s)", p.Status.Build.GetBuildCatalogToolTimeout().Duration, d)
 		}
 
 		log.Debugf("Integration Platform %s [%s]: setting build catalog tools timeout", p.Name, p.Namespace)
-		p.Status.Pipeline.BuildCatalogToolTimeout = &metav1.Duration{
+		p.Status.Build.BuildCatalogToolTimeout = &metav1.Duration{
 			Duration: d,
 		}
 	}
 
-	if p.Status.Pipeline.MaxRunningPipelines <= 0 {
+	if p.Status.Build.MaxRunningBuilds <= 0 {
 		log.Debugf("Integration Platform %s [%s]: setting max running builds", p.Name, p.Namespace)
-		if p.Status.Pipeline.BuildConfiguration.Strategy == v1.BuildStrategyRoutine {
-			p.Status.Pipeline.MaxRunningPipelines = 3
-		} else if p.Status.Pipeline.BuildConfiguration.Strategy == v1.BuildStrategyPod {
-			p.Status.Pipeline.MaxRunningPipelines = 10
+		if p.Status.Build.BuildConfiguration.Strategy == v1.BuildStrategyRoutine {
+			p.Status.Build.MaxRunningBuilds = 3
+		} else if p.Status.Build.BuildConfiguration.Strategy == v1.BuildStrategyPod {
+			p.Status.Build.MaxRunningBuilds = 10
 		}
 	}
 
-	_, cacheEnabled := p.Status.Pipeline.PublishStrategyOptions[builder.KanikoBuildCacheEnabled]
-	if p.Status.Pipeline.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko && !cacheEnabled {
+	_, cacheEnabled := p.Status.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled]
+	if p.Status.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko && !cacheEnabled {
 		// Default to disabling Kaniko cache warmer
 		// Using the cache warmer pod seems unreliable with the current Kaniko version
 		// and requires relying on a persistent volume.
 		defaultKanikoBuildCache := "false"
-		p.Status.Pipeline.PublishStrategyOptions[builder.KanikoBuildCacheEnabled] = defaultKanikoBuildCache
+		p.Status.Build.PublishStrategyOptions[builder.KanikoBuildCacheEnabled] = defaultKanikoBuildCache
 		if verbose {
 			log.Log.Infof("Kaniko cache set to %s", defaultKanikoBuildCache)
 		}
@@ -392,10 +392,10 @@ func setPlatformDefaults(p *v1.IntegrationPlatform, verbose bool) error {
 	setStatusAdditionalInfo(p)
 
 	if verbose {
-		log.Log.Infof("RuntimeVersion set to %s", p.Status.Pipeline.RuntimeVersion)
-		log.Log.Infof("BaseImage set to %s", p.Status.Pipeline.BaseImage)
-		log.Log.Infof("LocalRepository set to %s", p.Status.Pipeline.Maven.LocalRepository)
-		log.Log.Infof("Timeout set to %s", p.Status.Pipeline.GetTimeout())
+		log.Log.Infof("RuntimeVersion set to %s", p.Status.Build.RuntimeVersion)
+		log.Log.Infof("BaseImage set to %s", p.Status.Build.BaseImage)
+		log.Log.Infof("LocalRepository set to %s", p.Status.Build.Maven.LocalRepository)
+		log.Log.Infof("Timeout set to %s", p.Status.Build.GetTimeout())
 	}
 
 	return nil
@@ -405,9 +405,9 @@ func setStatusAdditionalInfo(platform *v1.IntegrationPlatform) {
 	platform.Status.Info = make(map[string]string)
 
 	log.Debugf("Integration Platform %s [%s]: setting build publish strategy", platform.Name, platform.Namespace)
-	if platform.Spec.Pipeline.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah {
+	if platform.Spec.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyBuildah {
 		platform.Status.Info["buildahVersion"] = defaults.BuildahVersion
-	} else if platform.Spec.Pipeline.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
+	} else if platform.Spec.Build.PublishStrategy == v1.IntegrationPlatformBuildPublishStrategyKaniko {
 		platform.Status.Info["kanikoVersion"] = defaults.KanikoVersion
 	}
 	log.Debugf("Integration Platform %s [%s]: setting status info", platform.Name, platform.Namespace)
diff --git a/pkg/platform/defaults_test.go b/pkg/platform/defaults_test.go
index b91a4c574..c90b2008d 100644
--- a/pkg/platform/defaults_test.go
+++ b/pkg/platform/defaults_test.go
@@ -37,7 +37,7 @@ func TestApplyGlobalPlatformSpec(t *testing.T) {
 			Namespace: "ns",
 		},
 		Spec: v1.IntegrationPlatformSpec{
-			Pipeline: v1.IntegrationPlatformPipelineSpec{
+			Build: v1.IntegrationPlatformBuildSpec{
 				BuildConfiguration: v1.BuildConfiguration{
 					Strategy: v1.BuildStrategyRoutine,
 				},
@@ -81,12 +81,12 @@ func TestApplyGlobalPlatformSpec(t *testing.T) {
 
 	assert.Equal(t, v1.IntegrationPlatformClusterOpenShift, ip.Status.Cluster)
 	assert.Equal(t, v1.TraitProfileOpenShift, ip.Status.Profile)
-	assert.Equal(t, v1.BuildStrategyRoutine, ip.Status.Pipeline.BuildConfiguration.Strategy)
+	assert.Equal(t, v1.BuildStrategyRoutine, ip.Status.Build.BuildConfiguration.Strategy)
 
-	// TODO assert.True(t, ip.Status.Pipeline.MaxRunningPipelines == 3) // default for build strategy routine
+	// TODO assert.True(t, ip.Status.Build.MaxRunningBuilds == 3) // default for build strategy routine
 
-	assert.Equal(t, len(global.Status.Pipeline.Maven.CLIOptions), len(ip.Status.Pipeline.Maven.CLIOptions))
-	assert.Equal(t, global.Status.Pipeline.Maven.CLIOptions, ip.Status.Pipeline.Maven.CLIOptions)
+	assert.Equal(t, len(global.Status.Build.Maven.CLIOptions), len(ip.Status.Build.Maven.CLIOptions))
+	assert.Equal(t, global.Status.Build.Maven.CLIOptions, ip.Status.Build.Maven.CLIOptions)
 
 	assert.NotNil(t, ip.Status.Traits)
 	assert.NotNil(t, ip.Status.Traits.Logging)
@@ -95,9 +95,9 @@ func TestApplyGlobalPlatformSpec(t *testing.T) {
 	assert.Equal(t, corev1.PullAlways, ip.Status.Traits.Container.ImagePullPolicy)
 	assert.Equal(t, "0.1", ip.Status.Traits.Container.LimitCPU)
 
-	assert.Equal(t, 2, len(ip.Status.Pipeline.Maven.Properties))
-	assert.Equal(t, "global_value1", ip.Status.Pipeline.Maven.Properties["global_prop1"])
-	assert.Equal(t, "global_value2", ip.Status.Pipeline.Maven.Properties["global_prop2"])
+	assert.Equal(t, 2, len(ip.Status.Build.Maven.Properties))
+	assert.Equal(t, "global_value1", ip.Status.Build.Maven.Properties["global_prop1"])
+	assert.Equal(t, "global_value2", ip.Status.Build.Maven.Properties["global_prop2"])
 }
 
 func TestRetainLocalPlatformSpec(t *testing.T) {
@@ -107,7 +107,7 @@ func TestRetainLocalPlatformSpec(t *testing.T) {
 			Namespace: "ns",
 		},
 		Spec: v1.IntegrationPlatformSpec{
-			Pipeline: v1.IntegrationPlatformPipelineSpec{
+			Build: v1.IntegrationPlatformBuildSpec{
 				BuildConfiguration: v1.BuildConfiguration{
 					Strategy: v1.BuildStrategyRoutine,
 				},
@@ -144,7 +144,7 @@ func TestRetainLocalPlatformSpec(t *testing.T) {
 			Namespace: "ns",
 		},
 		Spec: v1.IntegrationPlatformSpec{
-			Pipeline: v1.IntegrationPlatformPipelineSpec{
+			Build: v1.IntegrationPlatformBuildSpec{
 				BuildConfiguration: v1.BuildConfiguration{
 					Strategy: v1.BuildStrategyPod,
 				},
@@ -171,12 +171,12 @@ func TestRetainLocalPlatformSpec(t *testing.T) {
 
 	assert.Equal(t, v1.IntegrationPlatformClusterKubernetes, ip.Status.Cluster)
 	assert.Equal(t, v1.TraitProfileKnative, ip.Status.Profile)
-	assert.Equal(t, v1.BuildStrategyPod, ip.Status.Pipeline.BuildConfiguration.Strategy)
+	assert.Equal(t, v1.BuildStrategyPod, ip.Status.Build.BuildConfiguration.Strategy)
 
-	// TODO assert.True(t, ip.Status.Pipeline.MaxRunningPipelines == 1)
+	// TODO assert.True(t, ip.Status.Build.MaxRunningBuilds == 1)
 
-	assert.Equal(t, len(global.Status.Pipeline.Maven.CLIOptions), len(ip.Status.Pipeline.Maven.CLIOptions))
-	assert.Equal(t, global.Status.Pipeline.Maven.CLIOptions, ip.Status.Pipeline.Maven.CLIOptions)
+	assert.Equal(t, len(global.Status.Build.Maven.CLIOptions), len(ip.Status.Build.Maven.CLIOptions))
+	assert.Equal(t, global.Status.Build.Maven.CLIOptions, ip.Status.Build.Maven.CLIOptions)
 
 	assert.NotNil(t, ip.Status.Traits)
 	assert.NotNil(t, ip.Status.Traits.Logging)
@@ -185,8 +185,8 @@ func TestRetainLocalPlatformSpec(t *testing.T) {
 	assert.Equal(t, corev1.PullAlways, ip.Status.Traits.Container.ImagePullPolicy)
 	assert.Equal(t, "0.1", ip.Status.Traits.Container.LimitCPU)
 
-	assert.Equal(t, 3, len(ip.Status.Pipeline.Maven.Properties))
-	assert.Equal(t, "global_value1", ip.Status.Pipeline.Maven.Properties["global_prop1"])
-	assert.Equal(t, "local_value2", ip.Status.Pipeline.Maven.Properties["global_prop2"])
-	assert.Equal(t, "local_value1", ip.Status.Pipeline.Maven.Properties["local_prop1"])
+	assert.Equal(t, 3, len(ip.Status.Build.Maven.Properties))
+	assert.Equal(t, "global_value1", ip.Status.Build.Maven.Properties["global_prop1"])
+	assert.Equal(t, "local_value2", ip.Status.Build.Maven.Properties["global_prop2"])
+	assert.Equal(t, "local_value1", ip.Status.Build.Maven.Properties["local_prop1"])
 }
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index 317ecd4d6..d1a9c2492 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -81,16 +81,16 @@ func (t *builderTrait) Apply(e *Environment) error {
 	}
 
 	// Publishing task
-	switch e.Platform.Status.Pipeline.PublishStrategy {
+	switch e.Platform.Status.Build.PublishStrategy {
 	case v1.IntegrationPlatformBuildPublishStrategySpectrum:
 		e.Pipeline = append(e.Pipeline, v1.Task{Spectrum: &v1.SpectrumTask{
 			BaseTask: v1.BaseTask{
 				Name: "spectrum",
 			},
 			PublishTask: v1.PublishTask{
-				BaseImage: e.Platform.Status.Pipeline.BaseImage,
+				BaseImage: e.Platform.Status.Build.BaseImage,
 				Image:     getImageName(e),
-				Registry:  e.Platform.Status.Pipeline.Registry,
+				Registry:  e.Platform.Status.Build.Registry,
 			},
 		}})
 
@@ -105,14 +105,14 @@ func (t *builderTrait) Apply(e *Environment) error {
 	case v1.IntegrationPlatformBuildPublishStrategyBuildah:
 		var platform string
 		var found bool
-		if platform, found = e.Platform.Status.Pipeline.PublishStrategyOptions[builder.BuildahPlatform]; !found {
+		if platform, found = e.Platform.Status.Build.PublishStrategyOptions[builder.BuildahPlatform]; !found {
 			platform = ""
 			t.L.Infof("Attribute platform for buildah not found, default from host will be used!")
 		} else {
 			t.L.Infof("User defined %s platform, will be used from buildah!", platform)
 		}
 		var executorImage string
-		if image, found := e.Platform.Status.Pipeline.PublishStrategyOptions[builder.BuildahImage]; found {
+		if image, found := e.Platform.Status.Build.PublishStrategyOptions[builder.BuildahImage]; found {
 			executorImage = image
 			t.L.Infof("User defined executor image %s will be used for buildah", image)
 		}
@@ -123,18 +123,18 @@ func (t *builderTrait) Apply(e *Environment) error {
 			},
 			PublishTask: v1.PublishTask{
 				Image:    getImageName(e),
-				Registry: e.Platform.Status.Pipeline.Registry,
+				Registry: e.Platform.Status.Build.Registry,
 			},
 			Verbose:       t.Verbose,
 			ExecutorImage: executorImage,
 		}})
 	//nolint: staticcheck,nolintlint
 	case v1.IntegrationPlatformBuildPublishStrategyKaniko:
-		persistentVolumeClaim := e.Platform.Status.Pipeline.PublishStrategyOptions[builder.KanikoPVCName]
-		cacheEnabled := e.Platform.Status.Pipeline.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
+		persistentVolumeClaim := e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoPVCName]
+		cacheEnabled := e.Platform.Status.Build.IsOptionEnabled(builder.KanikoBuildCacheEnabled)
 
 		var executorImage string
-		if image, found := e.Platform.Status.Pipeline.PublishStrategyOptions[builder.KanikoExecutorImage]; found {
+		if image, found := e.Platform.Status.Build.PublishStrategyOptions[builder.KanikoExecutorImage]; found {
 			executorImage = image
 			t.L.Infof("User defined executor image %s will be used for kaniko", image)
 		}
@@ -145,7 +145,7 @@ func (t *builderTrait) Apply(e *Environment) error {
 			},
 			PublishTask: v1.PublishTask{
 				Image:    getImageName(e),
-				Registry: e.Platform.Status.Pipeline.Registry,
+				Registry: e.Platform.Status.Build.Registry,
 			},
 			Cache: v1.KanikoTaskCache{
 				Enabled:               &cacheEnabled,
@@ -160,7 +160,7 @@ func (t *builderTrait) Apply(e *Environment) error {
 
 func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
 	maven := v1.MavenBuildSpec{
-		MavenSpec: e.Platform.Status.Pipeline.Maven,
+		MavenSpec: e.Platform.Status.Build.Maven,
 	}
 	// Add Maven repositories defined in the IntegrationKit
 	for _, repo := range e.IntegrationKit.Spec.Repositories {
@@ -202,7 +202,7 @@ func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
 			Name: "builder",
 		},
 		Configuration: buildConfig,
-		BaseImage:     e.Platform.Status.Pipeline.BaseImage,
+		BaseImage:     e.Platform.Status.Build.BaseImage,
 		Runtime:       e.CamelCatalog.Runtime,
 		Dependencies:  e.IntegrationKit.Spec.Dependencies,
 		Maven:         maven,
@@ -237,11 +237,11 @@ func (t *builderTrait) builderTask(e *Environment) (*v1.BuilderTask, error) {
 }
 
 func getImageName(e *Environment) string {
-	organization := e.Platform.Status.Pipeline.Registry.Organization
+	organization := e.Platform.Status.Build.Registry.Organization
 	if organization == "" {
 		organization = e.Platform.Namespace
 	}
-	return e.Platform.Status.Pipeline.Registry.Address + "/" + organization + "/camel-k-" + e.IntegrationKit.Name + ":" + e.IntegrationKit.ResourceVersion
+	return e.Platform.Status.Build.Registry.Address + "/" + organization + "/camel-k-" + e.IntegrationKit.Name + ":" + e.IntegrationKit.ResourceVersion
 }
 
 func (t *builderTrait) customTasks() []v1.Task {
diff --git a/pkg/trait/builder_test.go b/pkg/trait/builder_test.go
index 7bd87d41d..d9ea2c8ce 100644
--- a/pkg/trait/builder_test.go
+++ b/pkg/trait/builder_test.go
@@ -130,7 +130,7 @@ func createBuilderTestEnv(cluster v1.IntegrationPlatformCluster, strategy v1.Int
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: cluster,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy:        strategy,
 					Registry:               v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:         defaults.DefaultRuntimeVersion,
diff --git a/pkg/trait/camel.go b/pkg/trait/camel.go
index 49c43ede1..8974b7879 100644
--- a/pkg/trait/camel.go
+++ b/pkg/trait/camel.go
@@ -122,10 +122,10 @@ func (t *camelTrait) loadOrCreateCatalog(e *Environment, runtimeVersion string)
 		// the required versions (camel and runtime) are not expressed as
 		// semver constraints
 		if exactVersionRegexp.MatchString(runtimeVersion) {
-			ctx, cancel := context.WithTimeout(e.Ctx, e.Platform.Status.Pipeline.GetTimeout().Duration)
+			ctx, cancel := context.WithTimeout(e.Ctx, e.Platform.Status.Build.GetTimeout().Duration)
 			defer cancel()
 			catalog, err = camel.GenerateCatalog(ctx, e.Client,
-				ns, e.Platform.Status.Pipeline.Maven, runtime, []maven.Dependency{})
+				ns, e.Platform.Status.Build.Maven, runtime, []maven.Dependency{})
 			if err != nil {
 				return err
 			}
@@ -257,8 +257,8 @@ func determineRuntimeVersion(e *Environment) string {
 	if e.IntegrationKit != nil && e.IntegrationKit.Status.RuntimeVersion != "" {
 		return e.IntegrationKit.Status.RuntimeVersion
 	}
-	if e.Platform != nil && e.Platform.Status.Pipeline.RuntimeVersion != "" {
-		return e.Platform.Status.Pipeline.RuntimeVersion
+	if e.Platform != nil && e.Platform.Status.Build.RuntimeVersion != "" {
+		return e.Platform.Status.Build.RuntimeVersion
 	}
 	return ""
 }
diff --git a/pkg/trait/container_probes_test.go b/pkg/trait/container_probes_test.go
index b7da7b4e7..f7d58a4f0 100644
--- a/pkg/trait/container_probes_test.go
+++ b/pkg/trait/container_probes_test.go
@@ -50,7 +50,7 @@ func newTestProbesEnv(t *testing.T, integration *v1.Integration) Environment {
 			Status: v1.IntegrationPlatformStatus{
 				Phase: v1.IntegrationPlatformPhaseReady,
 				IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
-					Pipeline: v1.IntegrationPlatformPipelineSpec{
+					Build: v1.IntegrationPlatformBuildSpec{
 						RuntimeVersion: catalog.Runtime.Version,
 					},
 				},
diff --git a/pkg/trait/container_test.go b/pkg/trait/container_test.go
index 464c0003f..de1c29fe8 100644
--- a/pkg/trait/container_test.go
+++ b/pkg/trait/container_test.go
@@ -69,7 +69,7 @@ func TestContainerWithDefaults(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -135,7 +135,7 @@ func TestContainerWithCustomName(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -200,7 +200,7 @@ func TestContainerWithCustomImage(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -279,7 +279,7 @@ func TestContainerWithCustomImageAndIntegrationKit(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -324,7 +324,7 @@ func TestContainerWithImagePullPolicy(t *testing.T) {
 		},
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},
diff --git a/pkg/trait/cron_test.go b/pkg/trait/cron_test.go
index 9b4107c4d..dc00b2032 100644
--- a/pkg/trait/cron_test.go
+++ b/pkg/trait/cron_test.go
@@ -263,7 +263,7 @@ func TestCronDeps(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -342,7 +342,7 @@ func TestCronDepsFallback(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -421,7 +421,7 @@ func TestCronWithActiveDeadline(t *testing.T) {
 		},
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},
@@ -504,7 +504,7 @@ func TestCronWithBackoffLimit(t *testing.T) {
 		},
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},
diff --git a/pkg/trait/environment_test.go b/pkg/trait/environment_test.go
index 1822b17bc..75f2d421d 100644
--- a/pkg/trait/environment_test.go
+++ b/pkg/trait/environment_test.go
@@ -220,7 +220,7 @@ func mockEnvironment(catalog *camel.RuntimeCatalog) Environment {
 			},
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},
diff --git a/pkg/trait/istio_test.go b/pkg/trait/istio_test.go
index fe15f1a06..d3cf638f4 100644
--- a/pkg/trait/istio_test.go
+++ b/pkg/trait/istio_test.go
@@ -61,7 +61,7 @@ func NewIstioTestEnv(t *testing.T, d *appsv1.Deployment, s *serving.Service, ena
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
 				Profile: v1.TraitProfileKnative,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},
diff --git a/pkg/trait/knative_service_test.go b/pkg/trait/knative_service_test.go
index adfbc719c..6db7760d7 100644
--- a/pkg/trait/knative_service_test.go
+++ b/pkg/trait/knative_service_test.go
@@ -101,7 +101,7 @@ func TestKnativeService(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -229,7 +229,7 @@ func TestKnativeServiceWithCustomContainerName(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -313,7 +313,7 @@ func TestKnativeServiceWithRest(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -380,7 +380,7 @@ func TestKnativeServiceNotApplicable(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -491,7 +491,7 @@ func createKnativeServiceTestEnvironment(t *testing.T, trait *traitv1.KnativeSer
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterKubernetes,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},
diff --git a/pkg/trait/knative_test.go b/pkg/trait/knative_test.go
index 6592b0af6..b94abd157 100644
--- a/pkg/trait/knative_test.go
+++ b/pkg/trait/knative_test.go
@@ -87,7 +87,7 @@ func TestKnativeEnvConfigurationFromTrait(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 				},
@@ -207,7 +207,7 @@ func TestKnativeEnvConfigurationFromSource(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 				},
@@ -395,7 +395,7 @@ func NewFakeEnvironment(t *testing.T, source v1.SourceSpec) Environment {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
diff --git a/pkg/trait/logging_test.go b/pkg/trait/logging_test.go
index d95c2b7b1..288cbfe21 100644
--- a/pkg/trait/logging_test.go
+++ b/pkg/trait/logging_test.go
@@ -84,7 +84,7 @@ func createLoggingTestEnv(t *testing.T, color bool, json bool, jsonPrettyPrint b
 			Status: v1.IntegrationPlatformStatus{
 				Phase: v1.IntegrationPlatformPhaseReady,
 				IntegrationPlatformSpec: v1.IntegrationPlatformSpec{
-					Pipeline: v1.IntegrationPlatformPipelineSpec{
+					Build: v1.IntegrationPlatformBuildSpec{
 						RuntimeVersion: c.Runtime.Version,
 					},
 				},
diff --git a/pkg/trait/mount_test.go b/pkg/trait/mount_test.go
index 45afc51b9..199597d9f 100644
--- a/pkg/trait/mount_test.go
+++ b/pkg/trait/mount_test.go
@@ -172,7 +172,7 @@ func getNominalEnv(t *testing.T, traitCatalog *Catalog) *Environment {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
diff --git a/pkg/trait/openapi.go b/pkg/trait/openapi.go
index dde67e6f6..5f2f8dc30 100644
--- a/pkg/trait/openapi.go
+++ b/pkg/trait/openapi.go
@@ -219,12 +219,12 @@ func (t *openAPITrait) createNewOpenAPIConfigMap(e *Environment, resource v1.Dat
 	}
 
 	mc := maven.NewContext(tmpDir)
-	mc.LocalRepository = e.Platform.Status.Pipeline.Maven.LocalRepository
-	mc.AdditionalArguments = e.Platform.Status.Pipeline.Maven.CLIOptions
+	mc.LocalRepository = e.Platform.Status.Build.Maven.LocalRepository
+	mc.AdditionalArguments = e.Platform.Status.Build.Maven.CLIOptions
 	mc.AddArgument("-Dopenapi.spec=" + in)
 	mc.AddArgument("-Ddsl.out=" + out)
 
-	if settings, err := kubernetes.ResolveValueSource(e.Ctx, e.Client, e.Platform.Namespace, &e.Platform.Status.Pipeline.Maven.Settings); err != nil {
+	if settings, err := kubernetes.ResolveValueSource(e.Ctx, e.Client, e.Platform.Namespace, &e.Platform.Status.Build.Maven.Settings); err != nil {
 		return err
 	} else if settings != "" {
 		mc.UserSettings = []byte(settings)
@@ -239,7 +239,7 @@ func (t *openAPITrait) createNewOpenAPIConfigMap(e *Environment, resource v1.Dat
 		return err
 	}
 	mc.GlobalSettings = data
-	secrets := e.Platform.Status.Pipeline.Maven.CASecrets
+	secrets := e.Platform.Status.Build.Maven.CASecrets
 
 	if secrets != nil {
 		certsData, err := kubernetes.GetSecretsRefData(e.Ctx, e.Client, e.Platform.Namespace, secrets)
@@ -258,7 +258,7 @@ func (t *openAPITrait) createNewOpenAPIConfigMap(e *Environment, resource v1.Dat
 		)
 	}
 
-	ctx, cancel := context.WithTimeout(e.Ctx, e.Platform.Status.Pipeline.GetTimeout().Duration)
+	ctx, cancel := context.WithTimeout(e.Ctx, e.Platform.Status.Build.GetTimeout().Duration)
 	defer cancel()
 	err = project.Command(mc).Do(ctx)
 	if err != nil {
diff --git a/pkg/trait/pull_secret.go b/pkg/trait/pull_secret.go
index 2e4938435..640d9a341 100644
--- a/pkg/trait/pull_secret.go
+++ b/pkg/trait/pull_secret.go
@@ -55,7 +55,7 @@ func (t *pullSecretTrait) Configure(e *Environment) (bool, error) {
 
 	if pointer.BoolDeref(t.Auto, true) {
 		if t.SecretName == "" {
-			secret := e.Platform.Status.Pipeline.Registry.Secret
+			secret := e.Platform.Status.Build.Registry.Secret
 			if secret != "" {
 				key := ctrl.ObjectKey{Namespace: e.Platform.Namespace, Name: secret}
 				obj := corev1.Secret{}
diff --git a/pkg/trait/quarkus.go b/pkg/trait/quarkus.go
index fb78962ba..23f011ae0 100644
--- a/pkg/trait/quarkus.go
+++ b/pkg/trait/quarkus.go
@@ -314,14 +314,14 @@ func (t *quarkusTrait) applyWhenBuildSubmitted(e *Environment) error {
 		}
 		steps = append(steps, builder.Image.NativeImageContext)
 		// Spectrum does not rely on Dockerfile to assemble the image
-		if e.Platform.Status.Pipeline.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategySpectrum {
+		if e.Platform.Status.Build.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategySpectrum {
 			steps = append(steps, builder.Image.ExecutableDockerfile)
 		}
 	} else {
 		build.Maven.Properties["quarkus.package.type"] = string(traitv1.FastJarPackageType)
 		steps = append(steps, builder.Quarkus.ComputeQuarkusDependencies, builder.Image.IncrementalImageContext)
 		// Spectrum does not rely on Dockerfile to assemble the image
-		if e.Platform.Status.Pipeline.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategySpectrum {
+		if e.Platform.Status.Build.PublishStrategy != v1.IntegrationPlatformBuildPublishStrategySpectrum {
 			steps = append(steps, builder.Image.JvmDockerfile)
 		}
 	}
diff --git a/pkg/trait/registry.go b/pkg/trait/registry.go
index 395363210..508fa1905 100644
--- a/pkg/trait/registry.go
+++ b/pkg/trait/registry.go
@@ -63,7 +63,7 @@ func (t *registryTrait) Configure(e *Environment) (bool, error) {
 }
 
 func (t *registryTrait) Apply(e *Environment) error {
-	registryAddress := e.Platform.Status.Pipeline.Registry.Address
+	registryAddress := e.Platform.Status.Build.Registry.Address
 	if registryAddress == "" && e.Platform.Status.Cluster == v1.IntegrationPlatformClusterOpenShift {
 		registryAddress = "image-registry.openshift-image-registry.svc:5000"
 	}
@@ -71,8 +71,8 @@ func (t *registryTrait) Apply(e *Environment) error {
 		return errors.New("could not figure out Image Registry URL, please set it manually")
 	}
 	build := getBuilderTask(e.Pipeline)
-	registryCa := e.Platform.Status.Pipeline.Registry.CA
-	registrySecret := e.Platform.Status.Pipeline.Registry.Secret
+	registryCa := e.Platform.Status.Build.Registry.CA
+	registrySecret := e.Platform.Status.Build.Registry.Secret
 	if e.Platform.Status.Cluster == v1.IntegrationPlatformClusterOpenShift {
 		if registryCa == "" {
 			ca, err := getOpenShiftImageRegistryCA(e)
@@ -107,7 +107,7 @@ func (t *registryTrait) Apply(e *Environment) error {
 }
 
 func addRegistryAndExtensionToMaven(registryAddress string, build *v1.BuilderTask, platform *v1.IntegrationPlatform) {
-	organization := platform.Status.Pipeline.Registry.Organization
+	organization := platform.Status.Build.Registry.Organization
 	if organization == "" {
 		organization = platform.Namespace
 	}
diff --git a/pkg/trait/route_test.go b/pkg/trait/route_test.go
index a02df9251..73697cbfc 100644
--- a/pkg/trait/route_test.go
+++ b/pkg/trait/route_test.go
@@ -160,7 +160,7 @@ func createTestRouteEnvironment(t *testing.T, name string) *Environment {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
diff --git a/pkg/trait/service_test.go b/pkg/trait/service_test.go
index 0f7c8d6c1..6de827890 100644
--- a/pkg/trait/service_test.go
+++ b/pkg/trait/service_test.go
@@ -92,7 +92,7 @@ func TestServiceWithDefaults(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -201,7 +201,7 @@ func TestService(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -288,7 +288,7 @@ func TestServiceWithCustomContainerName(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -379,7 +379,7 @@ func TestServiceWithNodePort(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -473,7 +473,7 @@ func TestServiceWithKnativeServiceEnabled(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -536,7 +536,7 @@ func TestServicesWithKnativeProfile(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
@@ -600,7 +600,7 @@ func TestServiceWithKnativeServiceDisabledInIntegrationPlatform(t *testing.T) {
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: v1.IntegrationPlatformClusterOpenShift,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					PublishStrategy: v1.IntegrationPlatformBuildPublishStrategyS2I,
 					Registry:        v1.RegistrySpec{Address: "registry"},
 					RuntimeVersion:  catalog.Runtime.Version,
diff --git a/pkg/trait/trait_test.go b/pkg/trait/trait_test.go
index 91cca3b00..df38dc472 100644
--- a/pkg/trait/trait_test.go
+++ b/pkg/trait/trait_test.go
@@ -529,7 +529,7 @@ func createTestEnv(t *testing.T, cluster v1.IntegrationPlatformCluster, script s
 		Platform: &v1.IntegrationPlatform{
 			Spec: v1.IntegrationPlatformSpec{
 				Cluster: cluster,
-				Pipeline: v1.IntegrationPlatformPipelineSpec{
+				Build: v1.IntegrationPlatformBuildSpec{
 					RuntimeVersion: catalog.Runtime.Version,
 				},
 			},