feat: improved host builder .funcignore support#3624
feat: improved host builder .funcignore support#3624knative-prow[bot] merged 1 commit intoknative:mainfrom
Conversation
The host (OCI) builder walks the function root to build its data layer and applies a fixed defaultIgnored list (.git, .func, .funcignore, .gitignore). Workspace-specific directories outside that list — most commonly .jj/, which contains absolute symlinks to system sockets — trip validatedLinkTarget and make the build fail outright, with no way for the user to opt out. Read .funcignore (which the s2i builder already honors via a .s2iignore symlink) and append its patterns to defaultIgnored. Supports two pattern forms: /foo/bar root-relative; excludes that path and its descendants foo base-name; excludes any entry named 'foo' at any depth No attempt at full gitignore semantics (no globs, no negation); the goal is parity with the s2i builder and a working escape hatch for users with workspace metadata the walker can't handle.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #3624 +/- ##
==========================================
+ Coverage 55.61% 56.34% +0.73%
==========================================
Files 180 180
Lines 20549 20572 +23
==========================================
+ Hits 11429 11592 +163
+ Misses 7960 7778 -182
- Partials 1160 1202 +42
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
gauron99
left a comment
There was a problem hiding this comment.
/lgtm
/approve
as a followup, if im understanding this correctly, I think it might be nice to have a concrete way of ignoring directories with an explicit "/" at the end like "dir/". Also I think we now support s2i and host but pack builder is still lacking this feature.
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: gauron99, lkingland The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
The host (OCI) builder walks the function root to build its data layer and applies a fixed defaultIgnored list (.git, .func, .funcignore, .gitignore). Workspace-specific directories outside that list — most commonly .jj/, which contains absolute symlinks to system sockets — trip validatedLinkTarget and make the build fail, with no way for the user to opt out.
Fix is to read .funcignore (which the s2i builder already honors via a .s2iignore symlink) and append its patterns to defaultIgnored. Supports two pattern forms:
/foo/bar root-relative; excludes that path and its descendants
foo base-name; excludes any entry named 'foo' at any depth