Skip to content

Commit 7c5f256

Browse files
authored
Merge pull request cds-hooks#617 from buildpacks/update-migration
Clarify and expand on implications of upgrading to Platform API 0.10
2 parents 432bc8d + 98b8ab5 commit 7c5f256

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

content/docs/reference/spec/migration/buildpack-api-0.8-0.9.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Hand-in-hand with shell removal is the introduction of overridable process argum
2222

2323
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).
2424

25-
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).
25+
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).
2626

2727
### Image extensions are supported (experimental)
2828

content/docs/reference/spec/migration/platform-api-0.9-0.10.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ docker run --entrypoint from-newer-buildpack my-image user-1 user-2
3838

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

41+
#### Implications of upgrading
42+
43+
For processes from newer buildpacks, upgrading the platform (without changing anything else) will change the command invocation for end-users.
44+
45+
As an example, the following on Platform API version 0.9:
46+
47+
```
48+
docker run --entrypoint from-newer-buildpack my-image user-1 user-2
49+
```
50+
51+
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.
52+
4153
#### Older buildpacks
4254

4355
Process types contributed by older buildpacks (Buildpack API 0.8 and below) do not have overridable process arguments. Looking at metadata.toml:
@@ -51,7 +63,7 @@ args = ["always-1", "always-2"]
5163
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:
5264

5365
```
54-
docker run --entrypoint from-newer-buildpack my-image
66+
docker run --entrypoint from-older-buildpack my-image
5567
```
5668

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

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

77+
#### Implications of upgrading
78+
79+
For processes from older buildpacks, upgrading the platform will not change the command invocation.
80+
6581
### Image extensions are supported (experimental)
6682

6783
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.

0 commit comments

Comments
 (0)