Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clarify and expand on implications of upgrading to Platform API 0.10 #617

Merged
merged 4 commits into from
Nov 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Hand-in-hand with shell removal is the introduction of overridable process argum

In `launch.toml`, `command` is now a list. The first element in `command` is the command, and all following entries are arguments that are always provided to the process, regardless of how the application is started. The `args` list now designates arguments that can be overridden by the end user - if supported by the platform (Platform API version 0.10 and above). For further details, see the platform [migration guide](/docs/reference/spec/migration/platform-api-0.9-0.10).

For older platforms (Platform API version 0.9 and below), arguments in `args` will be appended to arguments in `command`, negating the new functionality (but preserving compatibility).
For older platforms (Platform API version 0.9 and below), arguments in `command` will be prepended to arguments in `args`, negating the new functionality (but preserving compatibility).
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Means the same thing but is more accurate


### Image extensions are supported (experimental)

Expand Down
18 changes: 17 additions & 1 deletion content/docs/reference/spec/migration/platform-api-0.9-0.10.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,18 @@ docker run --entrypoint from-newer-buildpack my-image user-1 user-2

will result in the following command invocation: `some-command always-1 always-2 user-1 user-2`.

#### Implications of upgrading

For processes from newer buildpacks, upgrading the platform (without changing anything else) will change the command invocation for end-users.

As an example, the following on Platform API version 0.9:

```
docker run --entrypoint from-newer-buildpack my-image user-1 user-2
```

will result in the following command invocation: `some-command always-1 always-2 override-1 override-2 user-1 user-2`, where overridable arguments are treated like regular arguments, and user-provided arguments are always appended. Upgrading the platform will cause `override-1` and `override-2` to be dropped, as shown above.

#### Older buildpacks

Process types contributed by older buildpacks (Buildpack API 0.8 and below) do not have overridable process arguments. Looking at metadata.toml:
Expand All @@ -51,7 +63,7 @@ args = ["always-1", "always-2"]
The `command` list will never have more than one element. `always-1` and `always-2` are arguments that are always provided to `some-command`. If no user-provided arguments are specified when the application image is launched, `always-1` and `always-2` will be provided only. If user-provided arguments are specified, these will be **appended** to the `args` list. Example:

```
docker run --entrypoint from-newer-buildpack my-image
docker run --entrypoint from-older-buildpack my-image
Copy link
Member Author

@natalieparellano natalieparellano Sep 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixing an oops

```

will result in the following command invocation: `some-command always-1 always-2`. However:
Expand All @@ -62,6 +74,10 @@ docker run --entrypoint from-older-buildpack my-image user-1 user-2

will result in the following command invocation: `some-command always-1 always-2 user-1 user-2`.

#### Implications of upgrading

For processes from older buildpacks, upgrading the platform will not change the command invocation.

### Image extensions are supported (experimental)

Platform 0.10 introduces image extensions as experimental components for customizing build and run-time base images (see [here](/docs/features/dockerfiles) for more information). Image extensions output Dockerfiles which are applied by the lifecycle using [kaniko][https://github.com/GoogleContainerTools/kaniko], a tool for building container images in Kubernetes, as a library.
Expand Down
Loading