// ShowBaseImage will show details about the base BOSH images func (f *Fissile) ShowBaseImage(repository string) error { dockerManager, err := docker.NewImageManager() if err != nil { return fmt.Errorf("Error connecting to docker: %s", err.Error()) } comp, err := compilator.NewCompilator(dockerManager, "", "", repository, compilation.UbuntuBase, f.Version, false, f.UI) if err != nil { return fmt.Errorf("Error creating a new compilator: %s", err.Error()) } image, err := dockerManager.FindImage(comp.BaseImageName()) if err != nil { return fmt.Errorf("Error looking up base image %s: %s", comp.BaseImageName(), err.Error()) } f.UI.Printf("\nCompilation Layer: %s\n", color.GreenString(comp.BaseImageName())) f.UI.Printf("ID: %s\n", color.GreenString(image.ID)) f.UI.Printf("Virtual Size: %sMB\n", color.YellowString("%.2f", float64(image.VirtualSize)/(1024*1024))) baseImageName := builder.GetBaseImageName(repository, f.Version) image, err = dockerManager.FindImage(baseImageName) f.UI.Printf("\nStemcell Layer: %s\n", color.GreenString(baseImageName)) f.UI.Printf("ID: %s\n", color.GreenString(image.ID)) f.UI.Printf("Virtual Size: %sMB\n", color.YellowString("%.2f", float64(image.VirtualSize)/(1024*1024))) return nil }
// CreateBaseCompilationImage will recompile the base BOSH image for a release func (f *Fissile) CreateBaseCompilationImage(baseImageName, repository, metricsPath string, keepContainer bool) error { if metricsPath != "" { stampy.Stamp(metricsPath, "fissile", "create-compilation-image", "start") defer stampy.Stamp(metricsPath, "fissile", "create-compilation-image", "done") } dockerManager, err := docker.NewImageManager() if err != nil { return fmt.Errorf("Error connecting to docker: %s", err.Error()) } baseImage, err := dockerManager.FindImage(baseImageName) if err != nil { return fmt.Errorf("Error looking up base image %s: %s", baseImageName, err) } f.UI.Println(color.GreenString("Base image with ID %s found", color.YellowString(baseImage.ID))) comp, err := compilator.NewCompilator(dockerManager, "", "", repository, compilation.UbuntuBase, f.Version, keepContainer, f.UI) if err != nil { return fmt.Errorf("Error creating a new compilator: %s", err.Error()) } if _, err := comp.CreateCompilationBase(baseImageName); err != nil { return fmt.Errorf("Error creating compilation base image: %s", err.Error()) } return nil }
// Compile will compile a list of dev BOSH releases func (f *Fissile) Compile(repository, targetPath, roleManifestPath, metricsPath string, workerCount int) error { if len(f.releases) == 0 { return fmt.Errorf("Releases not loaded") } if metricsPath != "" { stampy.Stamp(metricsPath, "fissile", "compile-packages", "start") defer stampy.Stamp(metricsPath, "fissile", "compile-packages", "done") } dockerManager, err := docker.NewImageManager() if err != nil { return fmt.Errorf("Error connecting to docker: %s", err.Error()) } roleManifest, err := model.LoadRoleManifest(roleManifestPath, f.releases) if err != nil { return fmt.Errorf("Error loading roles manifest: %s", err.Error()) } f.UI.Println(color.GreenString("Compiling packages for dev releases:")) for _, release := range f.releases { f.UI.Printf(" %s (%s)\n", color.YellowString(release.Name), color.MagentaString(release.Version)) } comp, err := compilator.NewCompilator(dockerManager, targetPath, metricsPath, repository, compilation.UbuntuBase, f.Version, false, f.UI) if err != nil { return fmt.Errorf("Error creating a new compilator: %s", err.Error()) } if err := comp.Compile(workerCount, f.releases, roleManifest); err != nil { return fmt.Errorf("Error compiling packages: %s", err.Error()) } return nil }