// New returns a new instance of OnBuild builder func New(config *api.Config, overrides build.Overrides) (*OnBuild, error) { dockerHandler, err := docker.New(config.DockerConfig, config.PullAuthentication) if err != nil { return nil, err } b := &OnBuild{ docker: dockerHandler, git: git.New(), fs: util.NewFileSystem(), tar: tar.New(), } // Use STI Prepare() and download the 'run' script optionally. s, err := sti.New(config, overrides) s.SetScripts([]string{}, []string{api.Assemble, api.Run}) downloader := overrides.Downloader if downloader == nil { d, sourceURL, err := scm.DownloaderForSource(config.Source) if err != nil { return nil, err } downloader = d config.Source = sourceURL } b.source = onBuildSourceHandler{ Downloader: downloader, Preparer: s, Ignorer: &ignore.DockerIgnorer{}, } b.garbage = &build.DefaultCleaner{b.fs, b.docker} return b, nil }
// Strategy creates the appropriate build strategy for the provided config, using // the overrides provided. Not all strategies support all overrides. func Strategy(config *api.Config, overrides build.Overrides) (build.Builder, api.BuildInfo, error) { var builder build.Builder var buildInfo api.BuildInfo image, err := docker.GetBuilderImage(config) if err != nil { buildInfo.FailureReason = utilstatus.NewFailureReason(utilstatus.ReasonPullBuilderImageFailed, utilstatus.ReasonMessagePullBuilderImageFailed) return nil, buildInfo, err } config.HasOnBuild = image.OnBuild // if we're blocking onbuild, just do a normal s2i build flow // which won't do a docker build and invoke the onbuild commands if image.OnBuild && !config.BlockOnBuild { builder, err = onbuild.New(config, overrides) if err != nil { buildInfo.FailureReason = utilstatus.NewFailureReason(utilstatus.ReasonGenericS2IBuildFailed, utilstatus.ReasonMessageGenericS2iBuildFailed) return nil, buildInfo, err } return builder, buildInfo, nil } builder, err = sti.New(config, overrides) if err != nil { buildInfo.FailureReason = utilstatus.NewFailureReason(utilstatus.ReasonGenericS2IBuildFailed, utilstatus.ReasonMessageGenericS2iBuildFailed) return nil, buildInfo, err } return builder, buildInfo, err }
// Strategy creates the appropriate build strategy for the provided config, using // the overrides provided. Not all strategies support all overrides. func Strategy(config *api.Config, overrides build.Overrides) (build.Builder, error) { image, err := docker.GetBuilderImage(config) if err != nil { return nil, err } if image.OnBuild { return onbuild.New(config, overrides) } return sti.New(config, overrides) }
// GetStrategy decides what build strategy will be used for the STI build. func GetStrategy(config *api.Config) (build.Builder, error) { image, err := GetBuilderImage(config) if err != nil { return nil, err } if image.OnBuild { return onbuild.New(config) } return sti.New(config) }
// Strategy creates the appropriate build strategy for the provided config, using // the overrides provided. Not all strategies support all overrides. func Strategy(config *api.Config, overrides build.Overrides) (build.Builder, error) { image, err := docker.GetBuilderImage(config) if err != nil { return nil, err } config.HasOnBuild = image.OnBuild // if we're blocking onbuild, just do a normal s2i build flow // which won't do a docker build and invoke the onbuild commands if image.OnBuild && !config.BlockOnBuild { return onbuild.New(config, overrides) } return sti.New(config, overrides) }
// New returns a new instance of OnBuild builder func New(config *api.Config) (*OnBuild, error) { dockerHandler, err := docker.New(config.DockerConfig, config.PullAuthentication) if err != nil { return nil, err } b := &OnBuild{ docker: dockerHandler, git: git.New(), fs: util.NewFileSystem(), tar: tar.New(), } // Use STI Prepare() and download the 'run' script optionally. s, err := sti.New(config) s.SetScripts([]string{}, []string{api.Assemble, api.Run}) b.source = onBuildSourceHandler{ &git.Clone{b.git, b.fs}, s, } b.garbage = &build.DefaultCleaner{b.fs, b.docker} return b, nil }