Skip to content

Commit

Permalink
Merge branch 'master' into feature/635-google-builder
Browse files Browse the repository at this point in the history
  • Loading branch information
jromero authored May 19, 2020
2 parents eef774f + 66872c4 commit 738e287
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 11 deletions.
28 changes: 25 additions & 3 deletions builder/config_reader_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,41 @@ func testConfig(t *testing.T, when spec.G, it spec.S) {
it.Before(func() {
h.AssertNil(t, ioutil.WriteFile(builderConfigPath, []byte(`
[[buildpacks]]
id = "some.buildpack"
id = "buildpack/1"
version = "0.0.1"
uri = "https://example.com/buildpack-1.tgz"
[[buildpacks]]
image = "example.com/buildpack:2"
[[buildpacks]]
uri = "https://example.com/buildpack-3.tgz"
[[order]]
[[order.group]]
id = "some.buildpack"
id = "buildpack/1"
`), 0666))
})

it("returns a builder config", func() {
builderConfig, warns, err := builder.ReadConfig(builderConfigPath)
h.AssertNil(t, err)
h.AssertEq(t, len(warns), 0)
h.AssertEq(t, builderConfig.Buildpacks[0].ID, "some.buildpack")

h.AssertEq(t, builderConfig.Buildpacks[0].ID, "buildpack/1")
h.AssertEq(t, builderConfig.Buildpacks[0].Version, "0.0.1")
h.AssertEq(t, builderConfig.Buildpacks[0].URI, "https://example.com/buildpack-1.tgz")
h.AssertEq(t, builderConfig.Buildpacks[0].ImageName, "")

h.AssertEq(t, builderConfig.Buildpacks[1].ID, "")
h.AssertEq(t, builderConfig.Buildpacks[1].URI, "")
h.AssertEq(t, builderConfig.Buildpacks[1].ImageName, "example.com/buildpack:2")

h.AssertEq(t, builderConfig.Buildpacks[2].ID, "")
h.AssertEq(t, builderConfig.Buildpacks[2].URI, "https://example.com/buildpack-3.tgz")
h.AssertEq(t, builderConfig.Buildpacks[2].ImageName, "")

h.AssertEq(t, builderConfig.Order[0].Group[0].ID, "buildpack/1")
})
})

Expand Down
23 changes: 15 additions & 8 deletions create_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,10 @@ import (
"github.com/buildpacks/imgutil"
"github.com/pkg/errors"

"github.com/buildpacks/pack/internal/buildpack"
"github.com/buildpacks/pack/internal/buildpackage"

pubbldr "github.com/buildpacks/pack/builder"
"github.com/buildpacks/pack/internal/builder"
"github.com/buildpacks/pack/internal/buildpack"
"github.com/buildpacks/pack/internal/buildpackage"
"github.com/buildpacks/pack/internal/dist"
"github.com/buildpacks/pack/internal/image"
"github.com/buildpacks/pack/internal/layer"
Expand All @@ -34,19 +33,19 @@ func (c *Client) CreateBuilder(ctx context.Context, opts CreateBuilderOptions) e
return err
}

builder, err := c.createBaseBuilder(ctx, opts)
bldr, err := c.createBaseBuilder(ctx, opts)
if err != nil {
return errors.Wrap(err, "failed to create builder")
}

if err := c.addBuildpacksToBuilder(ctx, opts, builder); err != nil {
if err := c.addBuildpacksToBuilder(ctx, opts, bldr); err != nil {
return errors.Wrap(err, "failed to add buildpacks to builder")
}

builder.SetOrder(opts.Config.Order)
builder.SetStack(opts.Config.Stack)
bldr.SetOrder(opts.Config.Order)
bldr.SetStack(opts.Config.Stack)

return builder.Save(c.logger)
return bldr.Save(c.logger)
}

func (c *Client) validateConfig(ctx context.Context, opts CreateBuilderOptions) error {
Expand Down Expand Up @@ -176,6 +175,8 @@ func (c *Client) fetchLifecycle(ctx context.Context, config pubbldr.LifecycleCon

func (c *Client) addBuildpacksToBuilder(ctx context.Context, opts CreateBuilderOptions, bldr *builder.Builder) error {
for _, b := range opts.Config.Buildpacks {
c.logger.Debugf("Looking up buildpack %s", style.Symbol(b.FullName()))

locator := b.URI
if locator == "" && b.ImageName != "" {
locator = b.ImageName
Expand All @@ -189,6 +190,8 @@ func (c *Client) addBuildpacksToBuilder(ctx context.Context, opts CreateBuilderO
var bps []dist.Buildpack
switch locatorType {
case buildpack.RegistryLocator:
c.logger.Debugf("Downloading buildpack from registry: %s", style.Symbol(b.URI))

registryCache, err := c.getRegistry(c.logger, opts.Registry)
if err != nil {
return errors.Wrapf(err, "invalid registry '%s'", opts.Registry)
Expand All @@ -206,13 +209,17 @@ func (c *Client) addBuildpacksToBuilder(ctx context.Context, opts CreateBuilderO

bps = append([]dist.Buildpack{mainBP}, depBPs...)
case buildpack.PackageLocator:
c.logger.Debugf("Downloading buildpack from image: %s", style.Symbol(b.ImageName))

mainBP, depBPs, err := extractPackagedBuildpacks(ctx, b.ImageName, c.imageFetcher, opts.Publish, opts.NoPull)
if err != nil {
return err
}

bps = append([]dist.Buildpack{mainBP}, depBPs...)
case buildpack.URILocator:
c.logger.Debugf("Downloading buildpack from URI: %s", style.Symbol(b.URI))

err := ensureBPSupport(b.URI)
if err != nil {
return err
Expand Down
5 changes: 5 additions & 0 deletions internal/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,11 @@ func (b *Builder) SetStack(stackConfig builder.StackConfig) {

// Save saves the builder
func (b *Builder) Save(logger logging.Logger) error {
logger.Debugf("Saving builder with the following buildpacks:")
for _, bpInfo := range b.metadata.Buildpacks {
logger.Debugf("-> %s", style.Symbol(bpInfo.FullName()))
}

resolvedOrder, err := processOrder(b.metadata.Buildpacks, b.order)
if err != nil {
return errors.Wrap(err, "processing order")
Expand Down

0 comments on commit 738e287

Please sign in to comment.