Skip to content

Improve error message around "inconsistent vendoring" for vendored apps #24

@kvedurmu

Description

@kvedurmu

There have been some recent updates made to the Go Mod Vendor Buildpack and Dep Ensure Buildpacks to fail detection if a vendor directory exists (i.e the app is vendored). This means that if I'm using the language family Go buildpack and build an app using dep or go modules that's vendored, it should detect on go-dist and go-build. While the changes that were made are reasonable, it's now possible for builds to fail with an "inconsistent vendoring" error because I might not have vendored my app with the same version of Go used to build the app, that's rather hard to make sense of.

Here's an example of this.

pack build vendored-go-modules --buildpack gcr.io/paketo-buildpacks/go -v
Pulling image gcr.io/paketo-buildpacks/builder:full-cf
full-cf: Pulling from paketo-buildpacks/builder
Digest: sha256:a644524b74ce5e6f6aa061e4ca3da49c8ac763ba2a504accafbd3846a4b49505
Status: Image is up to date for gcr.io/paketo-buildpacks/builder:full-cf
Selected run image mirror index.docker.io/paketobuildpacks/run:full-cnb-cf
Pulling image index.docker.io/paketobuildpacks/run:full-cnb-cf
full-cnb-cf: Pulling from paketobuildpacks/run
Digest: sha256:5bfb17205e2f528b91e10db7adca72c9e1689e189fad23cf5ab8793fc1b7201e
Status: Image is up to date for paketobuildpacks/run:full-cnb-cf
Pulling image gcr.io/paketo-buildpacks/go
latest: Pulling from paketo-buildpacks/go
51721ff70849: Pull complete
c4e4389e75e1: Pull complete
d66019a3339b: Pull complete
775c8ad70a39: Pull complete
ef125ae8f7da: Pull complete
94e84e81ba0b: Pull complete
Digest: sha256:ac834dc641d631ae87ee091ec917ac7b6915633b5ff7ab4bc3c4c44623a4b342
Status: Downloaded newer image for gcr.io/paketo-buildpacks/go:latest
Adding buildpack paketo-buildpacks/go version 0.0.11 to builder
Adding buildpack paketo-buildpacks/dep version 0.0.155 to builder
Adding buildpack paketo-buildpacks/dep-ensure version 0.0.12 to builder
Adding buildpack paketo-buildpacks/go-build version 0.0.15 to builder
Adding buildpack paketo-buildpacks/go-dist version 0.0.193 to builder
Adding buildpack paketo-buildpacks/go-mod-vendor version 0.0.148 to builder
Setting custom order
Creating builder with the following buildpacks:
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
-> paketo-buildpacks/[email protected]
Using build cache volume pack-cache-8ab2ea616a9c.build
===> DETECTING
======== Output: paketo-buildpacks/[email protected] ========
failed
======== Results ========
pass: paketo-buildpacks/[email protected]
fail: paketo-buildpacks/[email protected]
pass: paketo-buildpacks/[email protected]
======== Output: paketo-buildpacks/[email protected] ========
failed
======== Results ========
pass: paketo-buildpacks/[email protected]
pass: paketo-buildpacks/[email protected]
fail: paketo-buildpacks/[email protected]
pass: paketo-buildpacks/[email protected]
======== Results ========
pass: paketo-buildpacks/[email protected]
pass: paketo-buildpacks/[email protected]
Resolving plan... (try #1)
paketo-buildpacks/go-dist  0.0.193
paketo-buildpacks/go-build 0.0.15
===> ANALYZING
Analyzing image "ccf1ab065b680aa3c4d0ba641972213c5044dc7a8fbcc3e686b464eb88747852"
Restoring metadata for "paketo-buildpacks/go-dist:go" from cache
Writing layer metadata for "paketo-buildpacks/go-dist:go"
Restoring metadata for "paketo-buildpacks/go-build:targets" from app image
Writing layer metadata for "paketo-buildpacks/go-build:targets"
Restoring metadata for "paketo-buildpacks/go-build:gocache" from cache
Writing layer metadata for "paketo-buildpacks/go-build:gocache"
===> RESTORING
Restoring data for "paketo-buildpacks/go-dist:go" from cache
Restoring data for "paketo-buildpacks/go-build:gocache" from cache
Retrieving data for "sha256:d99c22e4554f92a43a180c4ff03cc25f55f54e084fcaa4be403ea9b1c21c01c1"
Retrieving data for "sha256:9a25daa69bcd4e66076b83759b94addc9078fdf5d90f2989e819449c3022815f"
===> BUILDING
Go Distribution Buildpack 0.0.193
  Resolving Go version
    Candidate version sources (in priority order):
      <unknown> -> ""
    Selected Go version (using <unknown>): 1.14.6
  Reusing cached layer /layers/paketo-buildpacks_go-dist/go
Go Build Buildpack 0.0.15
  Executing build process
    Running 'go build -o /layers/paketo-buildpacks_go-build/targets/bin -buildmode pie -mod vendor .'
      Failed after 22ms
        go: inconsistent vendoring in /workspace:
        	github.com/BurntSushi/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        	github.com/satori/[email protected]: is explicitly required in go.mod, but not marked as explicit in vendor/modules.txt
        run 'go mod vendor' to sync, or use -mod=mod or -mod=readonly to ignore the vendor directory
failed to execute 'go build': exit status 1
ERROR: failed to build: exit status 1
ERROR: failed with status code: 7

Relevant PRs:
paketo-buildpacks/go-mod-vendor#83
paketo-buildpacks/dep-ensure#14

Proposal
Could we look into improving the error message here? Perhaps could be as simple as a message underneath like "Was your app vendored using Go Version "

cc @sophiewigmore @ForestEckhardt

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementA new feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions