@@ -32,22 +32,19 @@ features that are added to the still-actively-developed v3 buildpacks.
32
32
33
33
### Overview
34
34
35
- Cloud Foundry integration with CNBs will be executed over at least two phases.
36
-
37
- In the first phase, the Paketo buildpacks will be "shimmed" to work with Cloud
38
- Foundry's existing v2 buildpack interface. These shimmed Paketo buildpacks will
39
- be bundled with select [ CNB lifecycle] ( https://github.com/buildpacks/lifecycle )
40
- binaries and lightweight orchestration binaries. At build time, the Cloud
41
- Foundry [ buildpack lifecycle] ( https://github.com/cloudfoundry/buildpackapplifecycle )
35
+ Cloud Foundry integration with CNBs will be executed over multiple phases.
36
+
37
+ In the first phase (the focus of this RFC), the Paketo buildpacks will be
38
+ "shimmed" to work with Cloud Foundry's existing v2 buildpack interface. These
39
+ shimmed Paketo buildpacks will be bundled with select
40
+ [ CNB lifecycle] ( https://github.com/buildpacks/lifecycle ) binaries and
41
+ lightweight orchestration binaries. At build time, the Cloud Foundry
42
+ [ buildpack lifecycle] ( https://github.com/cloudfoundry/buildpackapplifecycle )
42
43
will invoke the orchestration binaries, which will map the v2 build process to
43
44
the v3 build process.
44
45
45
- In the second phase, unmodified Paketo buildpacks will be natively supported by
46
- Cloud Foundry. This will be implemented by integrating the buildpack shim logic
47
- into a Cloud Foundry lifecycle.
48
-
49
- Depending on learnings from the first two phases of CNB integration or other
50
- factors, there may be additional phases of work, however these additional
46
+ Based on learnings from the first phase of CNB integration and other
47
+ factors, there will likely be additional phases of work, however these additional
51
48
phases are not covered by this RFC.
52
49
53
50
Notably, this proposal does NOT include building or running OCI images on Cloud
@@ -72,7 +69,7 @@ Cloud Foundry with OCI images, container registries, etc.
72
69
73
70
### High Level Implementation
74
71
75
- In phase one, Cloud Foundry will produce a series of experimental shimmed
72
+ Cloud Foundry will produce a series of experimental shimmed
76
73
buildpacks that include:
77
74
1 . A Paketo CNB
78
75
1 . Select executables from the CNB lifecycle
@@ -104,9 +101,6 @@ For a proof of concept of shimmed buildpacks, see @ryanmoran's
104
101
externally at first will allow for more rapid iteration, without disrupting the
105
102
core Cloud Foundry runtime.
106
103
107
- During phase two, the shim logic will be integrated into the Cloud Foundry
108
- lifecycle itself, allowing for "native" Paketo buildpack support. The details
109
- of this integration will be decided once phase one is complete.
110
104
111
105
### Shim at Build Time
112
106
@@ -195,27 +189,49 @@ is as follows (in rough priority order):
195
189
1 . ` php_cnb_release `
196
190
1 . ` rust_cnb_release `
197
191
198
- It is not required to shim all buildpacks during phase 1 of this project.
199
- Depending on the effort to shim buildpacks and other factors, it may make sense
200
- to move to native CNB support before all Paketo buildpacks are shimmed. During
201
- phase 2, the above BOSH release repositories will be converted to unshimmed
202
- BOSH releases of the corresponding Paketo buildpacks .
192
+ It is possible that not all buildpacks will be shimmed during the first phase
193
+ of this project. Depending on the effort to shim buildpacks and other factors,
194
+ it may make sense to move to later phases of CNB integration before all Paketo
195
+ buildpacks are shimmed. In such an event, a follow-on RFC will describe this
196
+ work .
203
197
204
198
The CNBs will initially be opt-in for CF Deployment operators via an
205
199
experimental ops file. Once the buildpacks have reached a suitable level of
206
- maturity and stability, likely after phase 2, they will be added to the default
200
+ maturity and stability, they will be added to the default
207
201
set of buildpacks installed as part of CF Deployment.
208
202
209
- ### Stacks
203
+ ### Possible Future Work
204
+
205
+ The following areas are not directly covered by this RFC, but suggest some of
206
+ the possible follow-on work that could be executed on in later phases of Cloud
207
+ Foundry CNB integration.
208
+
209
+ #### Support Unmodified Paketo Buildpacks
210
+
211
+ Unmodified (not shimmed) Paketo buildpacks could be natively supported by Cloud
212
+ Foundry. For instance, this could be implemented by integrating the buildpack
213
+ shim logic into a new or existing Cloud Foundry lifecycle. The details of this
214
+ integration should be covered by an additional RFC, once the first phase of CNB
215
+ integration is complete.
216
+
217
+ #### Build Apps into OCI Images
218
+
219
+ Instead of outputting droplets from the staging process, Cloud Foundry could
220
+ instead produce OCI images, consistent with other CNB platforms. This change
221
+ would have a number of architectural and operator-impacting implications, and
222
+ would need to be discussed in detail via another RFC.
223
+
224
+ #### Add Paketo Stacks
210
225
211
226
Initially, the shimmed Paketo buildpacks will be compatible with ` cflinuxfs4 ` to
212
- ease development and adoption. Paketo provides [ multiple stacks] ( https://paketo.io/docs/concepts/stacks/#what-paketo-stacks-are-available )
227
+ ease development and adoption. Paketo provides
228
+ [ multiple stacks] ( https://paketo.io/docs/concepts/stacks/#what-paketo-stacks-are-available )
213
229
that are compatible with the Paketo buildpacks. There is an opportunity to
214
- adopt some or all of the Paketo stacks into CF Deployment, in addition to the
215
- buildpacks. The Paketo buildpacks have greater cohesion with the Paketo
216
- stacks than with ` cflinuxfs4 ` , and the Paketo "base" and "tiny" stacks could
217
- offer security-conscious CF Deployment users stacks with fewer native
218
- dependencies than are currently included with ` cflinuxfs4 ` . This RFC does not
219
- cover the adoption of additional stacks into CF Deployment, but it does open
220
- the door to add these stacks in the future.
230
+ adopt some or all of the Paketo stacks into CF Deployment. The Paketo
231
+ buildpacks have greater cohesion with the Paketo stacks than with ` cflinuxfs4 ` ,
232
+ and the Paketo "base" and "tiny" stacks could offer security-conscious CF
233
+ Deployment users stacks with fewer native packages than are currently included
234
+ with ` cflinuxfs4 ` . This RFC does not cover the adoption of additional stacks
235
+ into CF Deployment, but it does open the door to add these stacks in the
236
+ future.
221
237
0 commit comments