Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Further improvement of buildpack URIs support #979

Merged
merged 18 commits into from
Jan 7, 2021
Merged

Conversation

jromero
Copy link
Member

@jromero jromero commented Dec 4, 2020

Summary

This PR applies the same logic for parsing buildpack URIs to multiple entrypoints/declarations.

  • pack create-builder with builder.toml
  • pack builder create with builder.toml
  • pack build with project.toml
  • pack build with --buildpack flag
  • pack package-buildpack with package.toml

Output

Before

❯ cat builders/alpine/builder.toml
# Buildpacks to include in builder
[[buildpacks]]
id = "samples/java-maven"
version = "0.0.1"
uri = "../../buildpacks/java-maven"

[[buildpacks]]
id = "samples/kotlin-gradle"
version = "0.0.1"
uri = "../../buildpacks/kotlin-gradle"

[[buildpacks]]
uri = "cnbs/sample-package:hello-universe"

# Order used for detection
[[order]]
[[order.group]]
id = "samples/java-maven"
version = "0.0.1"

[[order]]
[[order.group]]
id = "samples/kotlin-gradle"
version = "0.0.1"

[[order]]
[[order.group]]
id = "samples/hello-universe"
version = "0.0.1"

# Stack that will be used by the builder
[stack]
id = "io.buildpacks.samples.stacks.alpine"
run-image = "cnbs/sample-stack-run:alpine"
build-image = "cnbs/sample-stack-build:alpine"

samples on  main [!] on ☁️ jromero@pivotal.io
❯ pack create-builder my-builder -c builders/alpine/builder.toml -v
Pulling image cnbs/sample-stack-run:alpine
alpine: Pulling from cnbs/sample-stack-run
Digest: sha256:eb15ae52be6b06fb1de4749055713cda0aed23a76a88084ef7c19d45630d3008
Status: Image is up to date for cnbs/sample-stack-run:alpine
Pulling image cnbs/sample-stack-build:alpine
alpine: Pulling from cnbs/sample-stack-build
Digest: sha256:ad1cc1514c2b33ffa13ce4a15ef2810b7fb4982edefe140fa9ead9b3a8f43f1d
Status: Image is up to date for cnbs/sample-stack-build:alpine
Creating builder my-builder from build-image cnbs/sample-stack-build:alpine
Using cached version of https://github.com/buildpacks/lifecycle/releases/download/v0.9.3/lifecycle-v0.9.3+linux.x86-64.tgz
Looking up buildpack samples/java-maven@0.0.1
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/java-maven
Looking up buildpack samples/kotlin-gradle@0.0.1
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/kotlin-gradle
Looking up buildpack
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/builders/alpine/cnbs/sample-package:hello-universe
ERROR: failed to add buildpacks to builder: inspecting buildpack blob: read blob at path '/Users/jromero/dev/buildpacks/samples/builders/alpine/cnbs/sample-package:hello-universe': stat /Users/jromero/dev/buildpacks/samples/builders/alpine/cnbs/sample-package:hello-universe: no such file or directory

After

❯ cat builders/alpine/builder.toml
# Buildpacks to include in builder
[[buildpacks]]
id = "samples/java-maven"
version = "0.0.1"
uri = "../../buildpacks/java-maven"

[[buildpacks]]
id = "samples/kotlin-gradle"
version = "0.0.1"
uri = "../../buildpacks/kotlin-gradle"

[[buildpacks]]
uri = "cnbs/sample-package:hello-universe"

# Order used for detection
[[order]]
[[order.group]]
id = "samples/java-maven"
version = "0.0.1"

[[order]]
[[order.group]]
id = "samples/kotlin-gradle"
version = "0.0.1"

[[order]]
[[order.group]]
id = "samples/hello-universe"
version = "0.0.1"

# Stack that will be used by the builder
[stack]
id = "io.buildpacks.samples.stacks.alpine"
run-image = "cnbs/sample-stack-run:alpine"
build-image = "cnbs/sample-stack-build:alpine"

samples on  main [!] on ☁️ jromero@pivotal.io
❯ pack-dev create-builder my-builder -c builders/alpine/builder.toml -v
Warning: Command 'pack create-builder' has been deprecated, please use 'pack builder create' instead
Pulling image cnbs/sample-stack-run:alpine
alpine: Pulling from cnbs/sample-stack-run
Digest: sha256:eb15ae52be6b06fb1de4749055713cda0aed23a76a88084ef7c19d45630d3008
Status: Image is up to date for cnbs/sample-stack-run:alpine
Pulling image cnbs/sample-stack-build:alpine
alpine: Pulling from cnbs/sample-stack-build
Digest: sha256:ad1cc1514c2b33ffa13ce4a15ef2810b7fb4982edefe140fa9ead9b3a8f43f1d
Status: Image is up to date for cnbs/sample-stack-build:alpine
Creating builder my-builder from build-image cnbs/sample-stack-build:alpine
Using cached version of https://github.com/buildpacks/lifecycle/releases/download/v0.9.3/lifecycle-v0.9.3+linux.x86-64.tgz
Looking up buildpack samples/java-maven@0.0.1
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/java-maven
Looking up buildpack samples/kotlin-gradle@0.0.1
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/kotlin-gradle
Looking up buildpack cnbs/sample-package:hello-universe
Downloading buildpack from image: cnbs/sample-package:hello-universe
Pulling image cnbs/sample-package:hello-universe
hello-universe: Pulling from cnbs/sample-package
Digest: sha256:7f0a86fdd00bf15de5d06930fe704e03eeead2b368ab282f68aa793033609270
Status: Image is up to date for cnbs/sample-package:hello-universe
Creating builder with the following buildpacks:
-> samples/java-maven@0.0.1
-> samples/kotlin-gradle@0.0.1
-> samples/hello-universe@0.0.1
-> samples/hello-moon@0.0.1
-> samples/hello-world@0.0.1
Successfully created builder image my-builder
Tip: Run pack build <image-name> --builder my-builder to use this builder

samples on  main [!] on ☁️ jromero@pivotal.io took 7s
❯ pack-dev builder create my-builder -c builders/alpine/builder.toml -v
Pulling image cnbs/sample-stack-run:alpine
alpine: Pulling from cnbs/sample-stack-run
Digest: sha256:eb15ae52be6b06fb1de4749055713cda0aed23a76a88084ef7c19d45630d3008
Status: Image is up to date for cnbs/sample-stack-run:alpine
Pulling image cnbs/sample-stack-build:alpine
alpine: Pulling from cnbs/sample-stack-build
Digest: sha256:ad1cc1514c2b33ffa13ce4a15ef2810b7fb4982edefe140fa9ead9b3a8f43f1d
Status: Image is up to date for cnbs/sample-stack-build:alpine
Creating builder my-builder from build-image cnbs/sample-stack-build:alpine
Using cached version of https://github.com/buildpacks/lifecycle/releases/download/v0.9.3/lifecycle-v0.9.3+linux.x86-64.tgz
Looking up buildpack samples/java-maven@0.0.1
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/java-maven
Looking up buildpack samples/kotlin-gradle@0.0.1
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/kotlin-gradle
Looking up buildpack cnbs/sample-package:hello-universe
Downloading buildpack from image: cnbs/sample-package:hello-universe
Pulling image cnbs/sample-package:hello-universe
hello-universe: Pulling from cnbs/sample-package
Digest: sha256:7f0a86fdd00bf15de5d06930fe704e03eeead2b368ab282f68aa793033609270
Status: Image is up to date for cnbs/sample-package:hello-universe
Creating builder with the following buildpacks:
-> samples/java-maven@0.0.1
-> samples/kotlin-gradle@0.0.1
-> samples/hello-universe@0.0.1
-> samples/hello-moon@0.0.1
-> samples/hello-world@0.0.1
Successfully created builder image my-builder
Tip: Run pack build <image-name> --builder my-builder to use this builder

Before

❯ cat apps/bash-script/project.toml
[project]
id = "io.buildpacks.bash-script"
name = "Bash Script"
version = "1.0.0"

[build]
exclude = [
    "README.md",
    "bash-script-buildpack"
]

[[build.buildpacks]]
uri = "bash-script-buildpack/"

[[build.buildpacks]]
uri = "cnbs/sample-package:hello-universe"

samples on  main [!] on ☁️ jromero@pivotal.io
❯ pack build my-app -B cnbs/sample-builder:bionic -p apps/bash-script/ -v
Using project descriptor located at apps/bash-script/project.toml
Builder cnbs/sample-builder:bionic is untrusted
As a result, the phases of the lifecycle which require root access will be run in separate trusted ephemeral containers.
For more information, see https://medium.com/buildpacks/faster-more-secure-builds-with-pack-0-11-0-4d0c633ca619
Pulling image index.docker.io/cnbs/sample-builder:bionic
bionic: Pulling from cnbs/sample-builder
Digest: sha256:969b680d103e5bd6af29ed3aa493f0ce8a4bf38af8ec2d3a1eeeb40dc3c4cab8
Status: Image is up to date for cnbs/sample-builder:bionic
Selected run image mirror index.docker.io/cnbs/sample-stack-run:bionic from local config
Pulling image index.docker.io/cnbs/sample-stack-run:bionic
bionic: Pulling from cnbs/sample-stack-run
Digest: sha256:68494686140812b5794534111c2a5f0d98369d3e6a5373e7f025545d4e101c8b
Status: Image is up to date for cnbs/sample-stack-run:bionic
ERROR: failed to build: checking format: read blob at path '/Users/jromero/dev/buildpacks/samples/apps/bash-script/cnbs/sample-package:hello-universe': stat /Users/jromero/dev/buildpacks/samples/apps/bash-script/cnbs/sample-package:hello-universe: no such file or directory

After

❯ pack-dev build my-app -B cnbs/sample-builder:bionic -p apps/bash-script/ -v
Using project descriptor located at apps/bash-script/project.toml
Builder cnbs/sample-builder:bionic is untrusted
As a result, the phases of the lifecycle which require root access will be run in separate trusted ephemeral containers.
For more information, see https://medium.com/buildpacks/faster-more-secure-builds-with-pack-0-11-0-4d0c633ca619
Pulling image index.docker.io/cnbs/sample-builder:bionic
bionic: Pulling from cnbs/sample-builder
Digest: sha256:969b680d103e5bd6af29ed3aa493f0ce8a4bf38af8ec2d3a1eeeb40dc3c4cab8
Status: Image is up to date for cnbs/sample-builder:bionic
Selected run image mirror index.docker.io/cnbs/sample-stack-run:bionic from local config
Pulling image index.docker.io/cnbs/sample-stack-run:bionic
bionic: Pulling from cnbs/sample-stack-run
Digest: sha256:68494686140812b5794534111c2a5f0d98369d3e6a5373e7f025545d4e101c8b
Status: Image is up to date for cnbs/sample-stack-run:bionic
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/apps/bash-script/bash-script-buildpack
Pulling image cnbs/sample-package:hello-universe
hello-universe: Pulling from cnbs/sample-package
Digest: sha256:7f0a86fdd00bf15de5d06930fe704e03eeead2b368ab282f68aa793033609270
Status: Image is up to date for cnbs/sample-package:hello-universe
Adding buildpack samples/bash-script version 0.0.1 to builder
Adding buildpack samples/hello-universe version 0.0.1 to builder
Adding buildpack samples/hello-moon version 0.0.1 to builder
Adding buildpack samples/hello-world version 0.0.1 to builder
Setting custom order
Creating builder with the following buildpacks:
-> samples/java-maven@0.0.1
-> samples/kotlin-gradle@0.0.1
-> samples/ruby-bundler@0.0.1
-> samples/hello-universe@0.0.1
-> samples/hello-moon@0.0.1
-> samples/hello-world@0.0.1
-> samples/bash-script@0.0.1
-> samples/hello-universe@0.0.1
-> samples/hello-moon@0.0.1
-> samples/hello-world@0.0.1
buildpack samples/hello-universe@0.0.1 already exists on builder and will be overwritten
buildpack samples/hello-moon@0.0.1 already exists on builder and will be overwritten
buildpack samples/hello-world@0.0.1 already exists on builder and will be overwritten
Pulling image buildpacksio/lifecycle:0.9.3
0.9.3: Pulling from buildpacksio/lifecycle
Digest: sha256:bc253af2edf1577717618cb3a95f0f16bb18fc9e804efbcc1b85f657d931a757
Status: Image is up to date for buildpacksio/lifecycle:0.9.3
Using build cache volume pack-cache-cbd6ecf04229.build
===> DETECTING
[detector] ======== Output: samples/bash-script@0.0.1 ========
[detector] ---> Hello Bash Script buildpack
[detector]
[detector] Here are the contents of the current working directory:
[detector] .:
[detector] total 16
[detector] drwxr-xr-x 2 cnb  cnb  4096 Dec  7 20:43 .
[detector] drwxr-xr-x 1 root root 4096 Dec  7 20:43 ..
[detector] -rwxr-xr-x 1 cnb  cnb   736 Nov 13 18:43 app.sh
[detector] -rw-r--r-- 1 cnb  cnb   268 Dec  7 20:42 project.toml
[detector] ======== Results ========
[detector] pass: samples/bash-script@0.0.1
[detector] pass: samples/hello-world@0.0.1
[detector] pass: samples/hello-moon@0.0.1
[detector] Resolving plan... (try #1)
[detector] samples/bash-script 0.0.1
[detector] samples/hello-world 0.0.1
[detector] samples/hello-moon  0.0.1
===> ANALYZING
[analyzer] Analyzing image "10146d0dec54047570f1030fddb8be6df23ffc843ba17f742504f0b8911d8869"
===> RESTORING
===> BUILDING
[builder] ---> Bash Script buildpack
[builder]
[builder] Here are the contents of the current working directory:
[builder] .:
[builder] total 16
[builder] drwxr-xr-x 2 cnb  cnb  4096 Dec  7 20:43 .
[builder] drwxr-xr-x 1 root root 4096 Dec  7 20:43 ..
[builder] -rwxr-xr-x 1 cnb  cnb   736 Nov 13 18:43 app.sh
[builder] -rw-r--r-- 1 cnb  cnb   268 Dec  7 20:42 project.toml
[builder] ---> Hello World buildpack
[builder]      platform_dir files:
[builder]        /platform:
[builder]        total 12
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 .
[builder]        drwxr-xr-x 1 root root 4096 Dec  7 20:43 ..
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 env
[builder]
[builder]        /platform/env:
[builder]        total 8
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 .
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 ..
[builder]      env_dir: /platform/env
[builder]      env vars:
[builder]        declare -x CNB_BUILDPACK_DIR="/cnb/buildpacks/samples_hello-world/0.0.1"
[builder]        declare -x CNB_STACK_ID="io.buildpacks.samples.stacks.bionic"
[builder]        declare -x HOME="/home/cnb"
[builder]        declare -x HOSTNAME="cae8184bf7a3"
[builder]        declare -x OLDPWD
[builder]        declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[builder]        declare -x PWD="/workspace"
[builder]        declare -x SHLVL="1"
[builder]      layers_dir: /layers/samples_hello-world
[builder]      plan_path: /tmp/plan.269357796/samples_hello-world/plan.toml
[builder]      plan contents:
[builder]        [[entries]]
[builder]          name = "some-world"
[builder]
[builder]        [[entries]]
[builder]          name = "some-world"
[builder]          version = "0.1"
[builder]          [entries.metadata]
[builder]            version = "0.1"
[builder]            world = "Earth-616"
[builder]
[builder] ---> Done
[builder] ---> Hello Moon buildpack
[builder]      env_dir: /platform/env
[builder]      env vars:
[builder]        declare -x CNB_BUILDPACK_DIR="/cnb/buildpacks/samples_hello-moon/0.0.1"
[builder]        declare -x CNB_STACK_ID="io.buildpacks.samples.stacks.bionic"
[builder]        declare -x HOME="/home/cnb"
[builder]        declare -x HOSTNAME="cae8184bf7a3"
[builder]        declare -x OLDPWD
[builder]        declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[builder]        declare -x PWD="/workspace"
[builder]        declare -x SHLVL="1"
[builder]      layers_dir: /layers/samples_hello-moon
[builder]      plan_path: /tmp/plan.269357796/samples_hello-moon/plan.toml
[builder]      plan contents:
[builder]
[builder] ---> Done
===> EXPORTING
[exporter] no project metadata found at path 'project-metadata.toml', project metadata will not be exported
[exporter] Reusing layers from image with id '10146d0dec54047570f1030fddb8be6df23ffc843ba17f742504f0b8911d8869'
[exporter] Layer 'slice-1' SHA: sha256:1ac6bb86539de75c827cb4dcabcd05ee2e7f5c620fe5457ee2dcd51eb9f8f955
[exporter] Adding 1/1 app layer(s)
[exporter] Reusing tarball for layer "launcher" with SHA: sha256:e3e9839150af025dc07c52783618a6358a5285cd89300fe89680142f5466e4d0
[exporter] Reusing layer 'launcher'
[exporter] Layer 'launcher' SHA: sha256:e3e9839150af025dc07c52783618a6358a5285cd89300fe89680142f5466e4d0
[exporter] Reusing tarball for layer "config" with SHA: sha256:5857f9112c375f6b153a141b115816e6e1586203f9b9421241bce61cb4938893
[exporter] Adding layer 'config'
[exporter] Layer 'config' SHA: sha256:5857f9112c375f6b153a141b115816e6e1586203f9b9421241bce61cb4938893
[exporter] Reusing tarball for layer "process-types" with SHA: sha256:83d85471d9f8a3834b4e27cf701e3f0aef220cc816d9c173c7d32cd73909a590
[exporter] Reusing layer 'process-types'
[exporter] Layer 'process-types' SHA: sha256:83d85471d9f8a3834b4e27cf701e3f0aef220cc816d9c173c7d32cd73909a590
[exporter] Adding label 'io.buildpacks.lifecycle.metadata'
[exporter] Adding label 'io.buildpacks.build.metadata'
[exporter] Adding label 'io.buildpacks.project.metadata'
[exporter] Setting CNB_LAYERS_DIR=/layers
[exporter] Setting CNB_APP_DIR=/workspace
[exporter] Setting CNB_PLATFORM_API=0.4
[exporter] Setting CNB_DEPRECATION_MODE=quiet
[exporter] Prepending /cnb/process and /cnb/lifecycle to PATH
[exporter] Setting default process type 'web'
[exporter] Setting ENTRYPOINT: '/cnb/process/web'
[exporter] *** Images (bb261e9ca87b):
[exporter]       my-app
[exporter]
[exporter] *** Image ID: bb261e9ca87bb35fcb004704a272e1ea9779c24524f5eaa024947c129649557e
Successfully built image my-app

Before

❯ pack  build my-app -B cnbs/sample-builder:bionic -b cnbs/sample-package:hello-universe  -v
Builder cnbs/sample-builder:bionic is untrusted
As a result, the phases of the lifecycle which require root access will be run in separate trusted ephemeral containers.
For more information, see https://medium.com/buildpacks/faster-more-secure-builds-with-pack-0-11-0-4d0c633ca619
Pulling image index.docker.io/cnbs/sample-builder:bionic
bionic: Pulling from cnbs/sample-builder
Digest: sha256:969b680d103e5bd6af29ed3aa493f0ce8a4bf38af8ec2d3a1eeeb40dc3c4cab8
Status: Image is up to date for cnbs/sample-builder:bionic
Selected run image mirror index.docker.io/cnbs/sample-stack-run:bionic from local config
Pulling image index.docker.io/cnbs/sample-stack-run:bionic
bionic: Pulling from cnbs/sample-stack-run
Digest: sha256:68494686140812b5794534111c2a5f0d98369d3e6a5373e7f025545d4e101c8b
Status: Image is up to date for cnbs/sample-stack-run:bionic
Refreshing registry cache for github.com//buildpacks/registry-index
Validating registry cache for github.com//buildpacks/registry-index
Creating registry cache for github.com//buildpacks/registry-index
ERROR: failed to build: locating in registry cnbs/sample-package:hello-universe: reading entry: name contains illegal characters (must match [a-z0-9\-.]+)

After

Before

After

❯ pack-dev build my-app -B cnbs/sample-builder:bionic -b cnbs/sample-package:hello-universe  -v
Builder cnbs/sample-builder:bionic is untrusted
As a result, the phases of the lifecycle which require root access will be run in separate trusted ephemeral containers.
For more information, see https://medium.com/buildpacks/faster-more-secure-builds-with-pack-0-11-0-4d0c633ca619
Pulling image index.docker.io/cnbs/sample-builder:bionic
bionic: Pulling from cnbs/sample-builder
Digest: sha256:969b680d103e5bd6af29ed3aa493f0ce8a4bf38af8ec2d3a1eeeb40dc3c4cab8
Status: Image is up to date for cnbs/sample-builder:bionic
Selected run image mirror index.docker.io/cnbs/sample-stack-run:bionic from local config
Pulling image index.docker.io/cnbs/sample-stack-run:bionic
bionic: Pulling from cnbs/sample-stack-run
Digest: sha256:68494686140812b5794534111c2a5f0d98369d3e6a5373e7f025545d4e101c8b
Status: Image is up to date for cnbs/sample-stack-run:bionic
Pulling image cnbs/sample-package:hello-universe
hello-universe: Pulling from cnbs/sample-package
Digest: sha256:7f0a86fdd00bf15de5d06930fe704e03eeead2b368ab282f68aa793033609270
Status: Image is up to date for cnbs/sample-package:hello-universe
Adding buildpack samples/hello-universe version 0.0.1 to builder
Adding buildpack samples/hello-world version 0.0.1 to builder
Adding buildpack samples/hello-moon version 0.0.1 to builder
Setting custom order
Creating builder with the following buildpacks:
-> samples/java-maven@0.0.1
-> samples/kotlin-gradle@0.0.1
-> samples/ruby-bundler@0.0.1
-> samples/hello-universe@0.0.1
-> samples/hello-moon@0.0.1
-> samples/hello-world@0.0.1
-> samples/hello-universe@0.0.1
-> samples/hello-world@0.0.1
-> samples/hello-moon@0.0.1
buildpack samples/hello-universe@0.0.1 already exists on builder and will be overwritten
buildpack samples/hello-world@0.0.1 already exists on builder and will be overwritten
buildpack samples/hello-moon@0.0.1 already exists on builder and will be overwritten
Pulling image buildpacksio/lifecycle:0.9.3
0.9.3: Pulling from buildpacksio/lifecycle
Digest: sha256:bc253af2edf1577717618cb3a95f0f16bb18fc9e804efbcc1b85f657d931a757
Status: Image is up to date for buildpacksio/lifecycle:0.9.3
Using build cache volume pack-cache-cbd6ecf04229.build
===> DETECTING
[detector] ======== Results ========
[detector] pass: samples/hello-world@0.0.1
[detector] pass: samples/hello-moon@0.0.1
[detector] Resolving plan... (try #1)
[detector] samples/hello-world 0.0.1
[detector] samples/hello-moon  0.0.1
===> ANALYZING
[analyzer] Analyzing image "d7d46e75860aa2d258defd5618743cb89d0b44ad8ce6dac19dfdf515bab1cd69"
===> RESTORING
===> BUILDING
[builder] ---> Hello World buildpack
[builder]      platform_dir files:
[builder]        /platform:
[builder]        total 12
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 .
[builder]        drwxr-xr-x 1 root root 4096 Dec  7 20:47 ..
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 env
[builder]
[builder]        /platform/env:
[builder]        total 8
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 .
[builder]        drwxr-xr-x 1 root root 4096 Jan  1  1980 ..
[builder]      env_dir: /platform/env
[builder]      env vars:
[builder]        declare -x CNB_BUILDPACK_DIR="/cnb/buildpacks/samples_hello-world/0.0.1"
[builder]        declare -x CNB_STACK_ID="io.buildpacks.samples.stacks.bionic"
[builder]        declare -x HOME="/home/cnb"
[builder]        declare -x HOSTNAME="58fb82f89e16"
[builder]        declare -x OLDPWD
[builder]        declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[builder]        declare -x PWD="/workspace"
[builder]        declare -x SHLVL="1"
[builder]      layers_dir: /layers/samples_hello-world
[builder]      plan_path: /tmp/plan.167611512/samples_hello-world/plan.toml
[builder]      plan contents:
[builder]        [[entries]]
[builder]          name = "some-world"
[builder]
[builder]        [[entries]]
[builder]          name = "some-world"
[builder]          version = "0.1"
[builder]          [entries.metadata]
[builder]            version = "0.1"
[builder]            world = "Earth-616"
[builder]
[builder] ---> Done
[builder] ---> Hello Moon buildpack
[builder]      env_dir: /platform/env
[builder]      env vars:
[builder]        declare -x CNB_BUILDPACK_DIR="/cnb/buildpacks/samples_hello-moon/0.0.1"
[builder]        declare -x CNB_STACK_ID="io.buildpacks.samples.stacks.bionic"
[builder]        declare -x HOME="/home/cnb"
[builder]        declare -x HOSTNAME="58fb82f89e16"
[builder]        declare -x OLDPWD
[builder]        declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
[builder]        declare -x PWD="/workspace"
[builder]        declare -x SHLVL="1"
[builder]      layers_dir: /layers/samples_hello-moon
[builder]      plan_path: /tmp/plan.167611512/samples_hello-moon/plan.toml
[builder]      plan contents:
[builder]
[builder] ---> Done
===> EXPORTING
[exporter] no project metadata found at path 'project-metadata.toml', project metadata will not be exported
[exporter] Reusing layers from image with id 'd7d46e75860aa2d258defd5618743cb89d0b44ad8ce6dac19dfdf515bab1cd69'
[exporter] Layer 'slice-1' SHA: sha256:cd462e7f0e0de2600e63ff096d9c77f30120eef5e69db744d0dbd9d835374cf0
[exporter] Reusing 1/1 app layer(s)
[exporter] Reusing tarball for layer "launcher" with SHA: sha256:e3e9839150af025dc07c52783618a6358a5285cd89300fe89680142f5466e4d0
[exporter] Reusing layer 'launcher'
[exporter] Layer 'launcher' SHA: sha256:e3e9839150af025dc07c52783618a6358a5285cd89300fe89680142f5466e4d0
[exporter] Reusing tarball for layer "config" with SHA: sha256:ce24f1e23b071296f5749d5bbefc42a7fa0b3da09028ba14f443e995cc3f2c66
[exporter] Reusing layer 'config'
[exporter] Layer 'config' SHA: sha256:ce24f1e23b071296f5749d5bbefc42a7fa0b3da09028ba14f443e995cc3f2c66
[exporter] Adding label 'io.buildpacks.lifecycle.metadata'
[exporter] Adding label 'io.buildpacks.build.metadata'
[exporter] Adding label 'io.buildpacks.project.metadata'
[exporter] Setting CNB_LAYERS_DIR=/layers
[exporter] Setting CNB_APP_DIR=/workspace
[exporter] Setting CNB_PLATFORM_API=0.4
[exporter] Setting CNB_DEPRECATION_MODE=quiet
[exporter] Prepending /cnb/process and /cnb/lifecycle to PATH
[exporter] Warning: default process type 'web' not present in list []
[exporter] Setting ENTRYPOINT: '/cnb/lifecycle/launcher'
[exporter] *** Images (d7d46e75860a):
[exporter]       my-app
[exporter]
[exporter] *** Image ID: d7d46e75860aa2d258defd5618743cb89d0b44ad8ce6dac19dfdf515bab1cd69
Successfully built image my-app

Before

❯ cat packages/hello-universe/package.toml
[buildpack]
uri = "../../buildpacks/hello-universe/"

[[dependencies]]
uri = "../../buildpacks/hello-moon"

[[dependencies]]
uri = "cnbs/sample-package:hello-world"

samples on  main [!] on ☁️ jromero@pivotal.io
❯ pack package-buildpack my-package -c packages/hello-universe/package.toml -v
ERROR: inspecting buildpack blob: read blob at path '/Users/jromero/dev/buildpacks/samples/packages/hello-universe/cnbs/sample-package:hello-world': stat /Users/jromero/dev/buildpacks/samples/packages/hello-universe/cnbs/sample-package:hello-world: no such file or directory

After

❯ pack-dev package-buildpack my-package -c packages/hello-universe/package.toml -v
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/hello-universe
Downloading buildpack from URI: file:///Users/jromero/dev/buildpacks/samples/buildpacks/hello-moon
Downloading buildpack from image: cnbs/sample-package:hello-world
Pulling image cnbs/sample-package:hello-world
hello-world: Pulling from cnbs/sample-package
Digest: sha256:dd565891961aee35c1d89dcbc7f3edb4c05c9ed64293d8572505ab880f3178ac
Status: Image is up to date for cnbs/sample-package:hello-world
Successfully created package my-package

Documentation

  • Should this change be documented?
    • Yes, see #___
    • No

Related

Resolves #___

Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
Signed-off-by: Javier Romero <rjavier@vmware.com>
@jromero jromero added this to the 0.16.0 milestone Dec 7, 2020
@jromero jromero added the type/bug Issue that reports an unexpected behaviour. label Dec 7, 2020
@jromero jromero marked this pull request as ready for review December 7, 2020 20:53
@jromero jromero requested a review from a team as a code owner December 7, 2020 20:53
@codecov
Copy link

codecov bot commented Dec 9, 2020

Codecov Report

Merging #979 (d95cc70) into main (dfe1218) will decrease coverage by 0.17%.
The diff coverage is 68.54%.

Impacted file tree graph

@@            Coverage Diff             @@
##             main     #979      +/-   ##
==========================================
- Coverage   79.46%   79.30%   -0.16%     
==========================================
  Files         129      129              
  Lines        5637     5665      +28     
==========================================
+ Hits         4479     4492      +13     
- Misses        747      754       +7     
- Partials      411      419       +8     
Flag Coverage Δ
os_linux 79.30% <68.54%> (-0.11%) ⬇️
os_macos 76.62% <67.68%> (-0.16%) ⬇️
os_windows 100.00% <ø> (ø)
unit 79.30% <68.54%> (-0.16%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

@jromero jromero merged commit 3d165d5 into main Jan 7, 2021
@jromero jromero deleted the feature/buildpack-uris branch January 7, 2021 00:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/bug Issue that reports an unexpected behaviour.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant