From 0f5d7f23324c1ab3130438d974a17d0b944dcbb4 Mon Sep 17 00:00:00 2001 From: Natalie Arellano Date: Wed, 23 Aug 2023 15:02:47 -0400 Subject: [PATCH 1/3] Remove backwards compatible glue for unsupported buildpack API 0.2 Signed-off-by: Natalie Arellano --- buildpack.md | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/buildpack.md b/buildpack.md index 41badd3..baaa790 100644 --- a/buildpack.md +++ b/buildpack.md @@ -1242,47 +1242,3 @@ If the `bom` array is used, the buildpack: When the build is complete, a legacy build BOM describing the build container MAY be generated for auditing purposes. If generated, this legacy build BOM MUST contain all `bom` entries in each `build.toml` at the end of each `/bin/build` execution, in adherence with the process and data format outlined in the [Platform Interface Specification](platform.md) for legacy BOM formats. - -### Build Plan (TOML) `requires.version` Key - -_Deprecated in Buildpack API 0.3._ - -The `requires.version` and `or.requires.version` keys are deprecated. - -```toml -[[requires]] -name = "" -version = "" - -[[or.requires]] -name = "" -version = "dependency version>" -``` - -To upgrade, buildpack authors SHOULD set `requires.version` as `requires.metadata.version` and `or.requires.version` as `or.requires.metadata.version`. - -```toml -[[requires]] -name = "" - -[requires.metadata] -version = "" - -[[or.requires]] -name = "" - -[or.requires.metadata] -version = "" -``` - -If `requires.version` and `requires.metadata.version` or `or.requires.version` and `or.requires.metadata.version` are both defined then lifecycle will fail. - -For backwards compatibility, the lifecycle will produce a Buildpack Plan (TOML) that puts `version` in `entries.metadata` as long as `version` does not exist in `requires.metadata`. - -```toml -[[entries]] -name = "" - -[entries.metadata] -version = "" -``` From 43c7cd9950bdf720f390445c1b6d4d336d2b63d6 Mon Sep 17 00:00:00 2001 From: Ralf Pannemans Date: Tue, 9 Jan 2024 12:47:39 +0100 Subject: [PATCH 2/3] Changes for image extension build contexts Signed-off-by: Ralf Pannemans Co-authored-by: Philipp Stehle Co-authored-by: Pavel Busko Co-authored-by: Ralf Pannemans --- image_extension.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/image_extension.md b/image_extension.md index f4e939a..bb1edae 100644 --- a/image_extension.md +++ b/image_extension.md @@ -89,9 +89,27 @@ Correspondingly, each `/bin/generate` executable: - MAY log output from the build process to `stdout`. - MAY emit error, warning, or debug messages to `stderr`. - MAY write either or both of `build.Dockerfile` and `run.Dockerfile` to the `` directory. This file MUST adhere to the requirements listed below. +- MAY create the following folders in the `` directory with an arbitrary content: + + either: + + - `context` + + or the image-specific folders: + + - `context.run` + - `context.build` - MAY write key-value pairs to `/extend-config.toml` that are provided as build args to build.Dockerfile when extending the build image. - MUST NOT write SBOM (Software-Bill-of-Materials) files as described in the [Software-Bill-of-Materials](#software-bill-of-materials) section. +#### Context Folders + +- The `/context` folder MUST NOT be created together with any combination of the image-specific folders. +- If the folder `/context` is present it will be set as the build context during the `extend` phase of the build and run images. +- If the folder `/context.run` is present it will be set as the build context during the `extend` phase of the run image only. +- If the folder `/context.build` is present it will be set as the build context during the `extend` phase of the build image only. +- If none of these folders is not present, the build context defaults to the `` folder. + #### Dockerfile Requirements A `run.Dockerfile` From 88050e72d593334195a9deadc70f7883810b4f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20von=20L=C3=B6wenstein?= Date: Fri, 2 Feb 2024 15:31:42 +0000 Subject: [PATCH 3/3] Remove `experimental` mark on extensions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jan von Löwenstein --- buildpack.md | 2 +- image_extension.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildpack.md b/buildpack.md index 41badd3..4aa3584 100644 --- a/buildpack.md +++ b/buildpack.md @@ -103,7 +103,7 @@ A **component buildpack** is a buildpack containing `/bin/detect` and `/bin/buil A **composite buildpack** is a buildpack containing an order definition in `buildpack.toml`. Composite buildpacks do not contain `/bin/detect` or `/bin/build` executables. They MUST be [resolvable](#order-resolution) into a collection of component buildpacks. -An **image extension** (**experimental**) is a directory containing an `extension.toml`. Extensions generate Dockerfiles that can be used to define the runtime base image, prior to buildpack execution. Extensions implement the [Image Extension Interface](image-extension.md). Extensions are always "component": their `extension.toml` cannot contain an order definition. +An **image extension** is a directory containing an `extension.toml`. Extensions generate Dockerfiles that can be used to define the runtime base image, prior to buildpack execution. Extensions implement the [Image Extension Interface](image-extension.md). Extensions are always "component": their `extension.toml` cannot contain an order definition. **Resolving an order** is the process by which an order (which may contain image extensions, component buildpacks, or composite buildpacks) is evaluated together with application source code to produce an optional group of image extensions and a required group of component buildpacks that can be used to build the application. This process is known as **detection**. During detection, the `/bin/detect` executable for each image extension (if present) and the `/bin/detect` executable for each component buildpack is invoked. diff --git a/image_extension.md b/image_extension.md index f4e939a..af32258 100644 --- a/image_extension.md +++ b/image_extension.md @@ -1,4 +1,4 @@ -# Image Extension Interface Specification (**experimental**) +# Image Extension Interface Specification This document specifies the interface between a lifecycle program and one or more image extensions.