Skip to content
This repository has been archived by the owner on Feb 9, 2024. It is now read-only.

[7.0.x] custom planet containers #1982

Merged
merged 14 commits into from Oct 1, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
82 changes: 47 additions & 35 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion Gopkg.toml
Expand Up @@ -158,7 +158,7 @@ ignored = [
[[override]]
name = "github.com/docker/distribution"
# take dependency on the same version helm/kubernetes depend on
revision = "edc3ab29cdff8694dd6feb85cfeb4b5f1b38ed9c"
version = "=v2.7.1"

[[constraint]]
name = "github.com/opencontainers/selinux"
Expand Down Expand Up @@ -327,3 +327,7 @@ ignored = [
[[override]]
name = "github.com/ghodss/yaml"
revision = "c7ce16629ff4cd059ed96ed06419dd3856fd3577"

[[override]]
name = "github.com/fsouza/go-dockerclient"
version = "=v1.6.5"
6 changes: 5 additions & 1 deletion build.assets/robotest/run.sh
Expand Up @@ -55,7 +55,11 @@ export EXTRA_VOLUME_MOUNTS=$(build_volume_mounts)
tele=$GRAVITY_BUILDDIR/tele
mkdir -p $UPGRADE_FROM_DIR
for release in ${!UPGRADE_MAP[@]}; do
$tele pull telekube:$release --output=$UPGRADE_FROM_DIR/telekube_$release.tar --state-dir $GRAVITY_BUILDDIR/.robotest --hub=https://get.gravitational.io:443 --token="$GET_GRAVITATIONAL_IO_APIKEY"
$tele pull telekube:$release \
--output=$UPGRADE_FROM_DIR/telekube_$release.tar \
--state-dir $GRAVITY_BUILDDIR/.robotest \
--hub=https://get.gravitational.io:443 \
--token="$GET_GRAVITATIONAL_IO_APIKEY"
done

docker pull $ROBOTEST_REPO
Expand Down
2 changes: 1 addition & 1 deletion e
Submodule e updated from a0a111 to fe1d01
2 changes: 1 addition & 1 deletion lib/app/dependency.go
Expand Up @@ -160,7 +160,7 @@ func (r GetDependenciesRequest) getDependencies(app Application, state *state) e
// only the top-level runtime package is pulled
// Ignore the error, since here we're only interested if a custom package
// has been defined
if runtimePackage, _ := app.Manifest.DefaultRuntimePackage(); runtimePackage != nil {
if runtimePackage, _ := app.Manifest.RuntimePackage(); runtimePackage != nil {
logger.WithField("pkg", runtimePackage.String()).Debug("Default runtime package.")
state.runtimePackage = runtimePackage
}
Expand Down
12 changes: 6 additions & 6 deletions lib/app/service/app.go
Expand Up @@ -905,9 +905,9 @@ func (r *applications) checkImportRequirements(manifest *schema.Manifest, req *a
req.PackageVersion = manifest.Metadata.ResourceVersion
}

// check dependencies-packages
for _, dep := range manifest.Dependencies.Packages {
locator, err := r.processMetadata(dep.Locator)
// check package dependencies
for _, dep := range manifest.Dependencies.GetPackages() {
locator, err := r.processMetadata(dep)
if err != nil {
return trace.Wrap(err)
}
Expand All @@ -920,9 +920,9 @@ func (r *applications) checkImportRequirements(manifest *schema.Manifest, req *a
}
}

// check dependencies-apps
for _, dep := range manifest.Dependencies.Apps {
locator, err := r.processMetadata(dep.Locator)
// check application dependencies
for _, dep := range manifest.Dependencies.GetApps() {
locator, err := r.processMetadata(dep)
if err != nil {
return trace.Wrap(err)
}
Expand Down
6 changes: 3 additions & 3 deletions lib/app/service/test/builder.go
Expand Up @@ -221,20 +221,20 @@ systemOptions:
CreateApplicationFromData(apps, locator, items, c)
}

func CreatePackage(packages pack.PackageService, locator loc.Locator, files []*archive.Item, c *C) *pack.PackageEnvelope {
func CreatePackage(packages pack.PackageService, locator loc.Locator, files []*archive.Item, c *C, opts ...pack.PackageOption) *pack.PackageEnvelope {
input := CreatePackageData(files, c)

c.Assert(packages.UpsertRepository(locator.Repository, time.Time{}), IsNil)

app, err := packages.CreatePackage(locator, &input)
app, err := packages.CreatePackage(locator, &input, opts...)
c.Assert(err, IsNil)
c.Assert(app, NotNil)

envelope, err := packages.ReadPackageEnvelope(locator)
c.Assert(err, IsNil)
c.Assert(envelope, NotNil)
c.Assert(envelope.SizeBytes, Not(Equals), int64(0))
c.Logf("created package %v", envelope)
c.Logf("Created package %v.", envelope)
return envelope
}

Expand Down
46 changes: 23 additions & 23 deletions lib/builder/build.go
Expand Up @@ -31,77 +31,77 @@ import (
)

// Build builds the standalone application installer using the provided builder
func Build(ctx context.Context, builder *Builder) error {
func (b *Builder) Build(ctx context.Context) error {
err := checkBuildEnv()
if err != nil {
return trace.Wrap(err)
}

locator := builder.Locator()
if builder.OutPath == "" {
builder.OutPath = fmt.Sprintf("%v-%v.tar", locator.Name, locator.Version)
if _, err := os.Stat(builder.OutPath); err == nil && !builder.Overwrite {
locator := b.Locator()
if b.OutPath == "" {
b.OutPath = fmt.Sprintf("%v-%v.tar", locator.Name, locator.Version)
if _, err := os.Stat(b.OutPath); err == nil && !b.Overwrite {
return trace.BadParameter("tarball %v already exists, please remove "+
"it first or provide -f (--overwrite) flag to overwrite it", builder.OutPath)
"it first or provide -f (--overwrite) flag to overwrite it", b.OutPath)
}
}

switch builder.Manifest.Kind {
switch b.Manifest.Kind {
case schema.KindBundle, schema.KindCluster:
builder.NextStep("Building cluster image %v %v",
b.NextStep("Building cluster image %v %v",
locator.Name, locator.Version)
case schema.KindApplication:
builder.NextStep("Building application image %v %v",
b.NextStep("Building application image %v %v",
locator.Name, locator.Version)
default:
return trace.BadParameter("unknown manifest kind %q",
builder.Manifest.Kind)
b.Manifest.Kind)
}

switch builder.Manifest.Kind {
switch b.Manifest.Kind {
case schema.KindBundle, schema.KindCluster:
builder.NextStep("Selecting base image version")
runtimeVersion, err := builder.SelectRuntime()
b.NextStep("Selecting base image version")
runtimeVersion, err := b.SelectRuntime()
if err != nil {
return trace.Wrap(err)
}
err = builder.checkVersion(runtimeVersion)
err = b.checkVersion(runtimeVersion)
if err != nil {
return trace.Wrap(err)
}
err = builder.SyncPackageCache(ctx, *runtimeVersion, builder.UpgradeVia...)
err = b.SyncPackageCache(ctx, *runtimeVersion, b.UpgradeVia...)
if err != nil {
return trace.Wrap(err)
}
}

builder.NextStep("Embedding application container images")
b.NextStep("Embedding application container images")
vendorDir, err := ioutil.TempDir("", "vendor")
if err != nil {
return trace.Wrap(err)
}
defer os.RemoveAll(vendorDir)
stream, err := builder.Vendor(ctx, vendorDir)
stream, err := b.Vendor(ctx, vendorDir)
if err != nil {
return trace.Wrap(err)
}
defer stream.Close()

builder.NextStep("Creating application")
application, err := builder.CreateApplication(stream)
b.NextStep("Creating application")
application, err := b.CreateApplication(stream)
if err != nil {
return trace.Wrap(err)
}

builder.NextStep("Generating the cluster image")
installer, err := builder.GenerateInstaller(*application)
b.NextStep("Generating the cluster image")
installer, err := b.GenerateInstaller(*application)
if err != nil {
return trace.Wrap(err)
}
defer installer.Close()

builder.NextStep("Saving the image as %v", builder.OutPath)
err = builder.WriteInstaller(installer)
b.NextStep("Saving the image as %v", b.OutPath)
err = b.WriteInstaller(installer)
if err != nil {
return trace.Wrap(err)
}
Expand Down