Resolve/print buildconfig source repo info globally for compose project.

This commit is contained in:
Ratnadeep Debnath 2016-11-15 14:57:24 +05:30
parent f5566d4097
commit 1a7b19c070

View File

@ -153,28 +153,11 @@ func (o *OpenShift) initImageStream(name string, service kobject.ServiceConfig)
// initBuildConfig initialize Openshifts BuildConfig Object // initBuildConfig initialize Openshifts BuildConfig Object
func initBuildConfig(name string, service kobject.ServiceConfig, inputFile string, repo string, branch string) *buildapi.BuildConfig { func initBuildConfig(name string, service kobject.ServiceConfig, inputFile string, repo string, branch string) *buildapi.BuildConfig {
var err error contextDir, err := getAbsBuildContext(service.Build, inputFile)
uri := repo
if uri == "" {
if hasGitBinary() {
uri, err = getGitRemote("origin")
if err != nil {
logrus.Fatalf("Buildconfig cannot be created because git remote origin repo couldn't be detected.")
}
} else {
logrus.Fatalf("Git is not installed! Please install Git to create buildconfig, else supply source repository to use for build using '--build-repo' option.")
}
}
var contextDir string
contextDir, err = getAbsBuildContext(service.Build, inputFile)
if err != nil { if err != nil {
logrus.Fatalf("[%s] Buildconfig cannote be created due to error in creating build context.", name) logrus.Fatalf("[%s] Buildconfig cannote be created due to error in creating build context.", name)
} }
logrus.Infof("[%s] Buildconfig using repo: %s, branch: %s as source.", name, uri, branch)
bc := &buildapi.BuildConfig{ bc := &buildapi.BuildConfig{
TypeMeta: unversioned.TypeMeta{ TypeMeta: unversioned.TypeMeta{
Kind: "BuildConfig", Kind: "BuildConfig",
@ -195,7 +178,7 @@ func initBuildConfig(name string, service kobject.ServiceConfig, inputFile strin
Source: buildapi.BuildSource{ Source: buildapi.BuildSource{
Git: &buildapi.GitBuildSource{ Git: &buildapi.GitBuildSource{
Ref: branch, Ref: branch,
URI: uri, URI: repo,
}, },
ContextDir: contextDir, ContextDir: contextDir,
}, },
@ -311,6 +294,9 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
} }
// this will hold all the converted data // this will hold all the converted data
var allobjects []runtime.Object var allobjects []runtime.Object
var err error
hasBuild := false
buildRepo := ""
for name, service := range komposeObject.ServiceConfigs { for name, service := range komposeObject.ServiceConfigs {
var objects []runtime.Object var objects []runtime.Object
@ -329,7 +315,20 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
} }
if service.Build != "" { if service.Build != "" {
objects = append(objects, initBuildConfig(name, service, opt.InputFile, opt.BuildRepo, opt.BuildBranch)) // Openshift BuildConfigs if !hasBuild {
if opt.BuildRepo == "" {
if hasGitBinary() {
buildRepo, err = getGitRemote("origin")
if err != nil {
logrus.Fatalf("Buildconfig cannot be created because git remote origin repo couldn't be detected.")
}
} else {
logrus.Fatalf("Git is not installed! Please install Git to create buildconfig, else supply source repository to use for build using '--build-repo' option.")
}
}
hasBuild = true
}
objects = append(objects, initBuildConfig(name, service, opt.InputFile, buildRepo, opt.BuildBranch)) // Openshift BuildConfigs
} }
// If ports not provided in configuration we will not make service // If ports not provided in configuration we will not make service
@ -346,6 +345,10 @@ func (o *OpenShift) Transform(komposeObject kobject.KomposeObject, opt kobject.C
allobjects = append(allobjects, objects...) allobjects = append(allobjects, objects...)
} }
if hasBuild {
logrus.Infof("Buildconfig using %s::%s as source.", buildRepo, opt.BuildBranch)
}
// If docker-compose has a volumes_from directive it will be handled here // If docker-compose has a volumes_from directive it will be handled here
o.VolumesFrom(&allobjects, komposeObject) o.VolumesFrom(&allobjects, komposeObject)
// sort all object so Services are first // sort all object so Services are first