buildpacks / tekton-integration

Buildpacks + Tekton
22 stars 3 forks source link

Build fails if no process types defined ("ERROR: failed to export: determining entrypoint: tried to set web to default but it doesn't exist") #41

Open edmorley opened 3 months ago

edmorley commented 3 months ago

The CNB spec permits there being no process types in an image (due to no buildpacks having set a process type): https://github.com/buildpacks/spec/blob/main/buildpack.md#launchtoml-toml

Accordingly, the Pack CLI also permits this. eg:

$ git clone https://github.com/heroku/python-getting-started && cd $_
$ rm Procfile  # emulate the user not having defined any process types
$ pack build --builder heroku/heroku:22 python-test
...
===> EXPORTING
Adding layer 'heroku/python:dependencies'
Adding layer 'heroku/python:python'
Adding layer 'buildpacksio/lifecycle:launch.sbom'
Adding 1/1 app layer(s)
Adding layer 'buildpacksio/lifecycle:launcher'
Adding layer 'buildpacksio/lifecycle:config'
Adding label 'io.buildpacks.lifecycle.metadata'
Adding label 'io.buildpacks.build.metadata'
Adding label 'io.buildpacks.project.metadata'
no default process type
Saving python-test...
*** Images (401af57dbb7e):
      python-test
Adding cache layer 'heroku/python:pip-cache'
Adding cache layer 'heroku/python:python'
Successfully built image python-test

However, if Tekton tries to perform a build where no process types were defined, it errors:

===> EXPORTING
Adding layer 'heroku/python:dependencies'
Adding layer 'heroku/python:python'
Adding layer 'buildpacksio/lifecycle:launch.sbom'
Adding 1/1 app layer(s)
Adding layer 'buildpacksio/lifecycle:launcher'
Adding layer 'buildpacksio/lifecycle:config'
Adding label 'io.buildpacks.lifecycle.metadata'
Adding label 'io.buildpacks.build.metadata'
Adding label 'io.buildpacks.project.metadata'
ERROR: failed to export: determining entrypoint: tried to set web to default but it doesn't exist

This was reported in: https://github.com/heroku/buildpacks-python/issues/196

It seems the Tekton integration is not currently spec compliant.