Spike: Other ways to run buildpacks from Epinio
Research if we can replace the Tekton buildpack addon with something else.
The current version does not support project.toml.
- https://github.com/epinio/epinio/blob/main/docs/howtos/custom-python-builder.md
- https://github.com/buildpacks/lifecycle/issues/555
- https://github.com/paketo-buildpacks/rfcs/blob/main/text/0003-replace-buildpack-yml.md
- https://github.com/paketo-buildpacks/rfcs/blob/main/text/0026-environment-variable-configuration-of-buildpacks.md
Can we run pack in a Tekton task instead?
Running pack itself might not work on systems that aren't running docker as it has a dependency on the docker daemon.
That said, if it's an issue, we can assume a new enough kernel to allow for nested namespaces.
Tekton has been removed: https://github.com/epinio/epinio/pull/1141
Closing this
This still applies to 'lifecycle'. I wanted to note that we already build on Docker (the internal registry). And that pack uses lifecycle. If we want support for 'project.toml', we need to switch. Also we should do this before writing docs on buildpacks, as the new way is different.
This page describes what pack is supposed to be and what it offers on top of the lifecycle: https://github.com/buildpacks/spec/blob/main/platform.md#lifecycle-interface
"pack is a CLI implementation of the Platform Interface Specification" for Cloud Native Buildpacks"
At some point we should start thinking about image rebasing and such
Currently we don’t use docker to do the builds and it works fine on containerd based clusters. AFAICT, pack would not work on k3s and RKE2 clusters.
As Andrew already wrote pack relies on Docker. There is already a pack issue for additional containerd support: https://github.com/buildpacks/pack/issues/1393
We could require Docker only on the cli side, but since the Ui and and cli should be on par it would not help in our case.
As part of this spike it might be worth checking out how pack implements rebasing [of buildpack images] and supports additional buildpacks.
There are a lot of flags that you can pass to the lifecycle command. I'd imagine that we can get all the same functionality as pack without needing to use it as an intermediate.
Since the Buildpack issue is staling you can still customize the build via BP_ env vars, with the epinio manifest.