forked from LaconicNetwork/kompose
Fix incorrect tag in BuildConfig.
For services with build and image keys DeploymentConfig respects tag from docker-compose image key. But BuildConfig image tag was always set to 'latest'. Result of this was that deployment wasn't trigired after successful build. This fixes it by setting BuildConfig output image tag to the same tag that is used for DeploymentConfig (tag from docker-compose image key)
This commit is contained in:
parent
f097b35854
commit
c5fa9f7f2a
@ -245,7 +245,7 @@ func initBuildConfig(name string, service kobject.ServiceConfig, repo string, br
|
|||||||
Output: buildapi.BuildOutput{
|
Output: buildapi.BuildOutput{
|
||||||
To: &kapi.ObjectReference{
|
To: &kapi.ObjectReference{
|
||||||
Kind: "ImageStreamTag",
|
Kind: "ImageStreamTag",
|
||||||
Name: name + ":latest",
|
Name: name + ":" + getImageTag(service.Image),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -281,43 +281,67 @@ func TestGetAbsBuildContext(t *testing.T) {
|
|||||||
|
|
||||||
// Test initializing buildconfig for a service
|
// Test initializing buildconfig for a service
|
||||||
func TestInitBuildConfig(t *testing.T) {
|
func TestInitBuildConfig(t *testing.T) {
|
||||||
dir := testutils.CreateLocalGitDirectory(t)
|
|
||||||
testutils.CreateSubdir(t, dir, "a/build")
|
|
||||||
defer os.RemoveAll(dir)
|
|
||||||
|
|
||||||
serviceName := "serviceA"
|
serviceName := "serviceA"
|
||||||
repo := "https://git.test.com/org/repo"
|
repo := "https://git.test.com/org/repo1"
|
||||||
branch := "somebranch"
|
branch := "somebranch"
|
||||||
buildArgs := []kapi.EnvVar{{Name: "name", Value: "value"}}
|
buildArgs := []kapi.EnvVar{{Name: "name", Value: "value"}}
|
||||||
value := "value"
|
value := "value"
|
||||||
sc := kobject.ServiceConfig{
|
testDir := "a/build"
|
||||||
Build: filepath.Join(dir, "a/build"),
|
|
||||||
Dockerfile: "Dockerfile-alternate",
|
dir := testutils.CreateLocalGitDirectory(t)
|
||||||
BuildArgs: map[string]*string{"name": &value},
|
testutils.CreateSubdir(t, dir, testDir)
|
||||||
}
|
defer os.RemoveAll(dir)
|
||||||
bc, err := initBuildConfig(serviceName, sc, repo, branch)
|
|
||||||
if err != nil {
|
testCases := []struct {
|
||||||
t.Error(errors.Wrap(err, "initBuildConfig failed"))
|
Name string
|
||||||
|
ServiceConfig kobject.ServiceConfig
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
Name: "Service config without image key",
|
||||||
|
ServiceConfig: kobject.ServiceConfig{
|
||||||
|
Build: filepath.Join(dir, testDir),
|
||||||
|
Dockerfile: "Dockerfile-alternate",
|
||||||
|
BuildArgs: map[string]*string{"name": &value},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "Service config with image key",
|
||||||
|
ServiceConfig: kobject.ServiceConfig{
|
||||||
|
Build: filepath.Join(dir, testDir),
|
||||||
|
Dockerfile: "Dockerfile-alternate",
|
||||||
|
BuildArgs: map[string]*string{"name": &value},
|
||||||
|
Image: "foo:bar",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
testCases := map[string]struct {
|
for _, test := range testCases {
|
||||||
field string
|
|
||||||
value string
|
bc, err := initBuildConfig(serviceName, test.ServiceConfig, repo, branch)
|
||||||
}{
|
if err != nil {
|
||||||
"Assert buildconfig source git URI": {bc.Spec.CommonSpec.Source.Git.URI, repo},
|
t.Error(errors.Wrap(err, "initBuildConfig failed"))
|
||||||
"Assert buildconfig source git Ref": {bc.Spec.CommonSpec.Source.Git.Ref, branch},
|
}
|
||||||
"Assert buildconfig source context dir": {bc.Spec.CommonSpec.Source.ContextDir, "a/build/"},
|
|
||||||
"Assert buildconfig output name": {bc.Spec.CommonSpec.Output.To.Name, serviceName + ":latest"},
|
assertions := map[string]struct {
|
||||||
"Assert buildconfig dockerfilepath": {bc.Spec.CommonSpec.Strategy.DockerStrategy.DockerfilePath, "Dockerfile-alternate"},
|
field string
|
||||||
}
|
value string
|
||||||
for name, test := range testCases {
|
}{
|
||||||
t.Log("Test case: ", name)
|
"Assert buildconfig source git URI": {bc.Spec.CommonSpec.Source.Git.URI, repo},
|
||||||
if test.field != test.value {
|
"Assert buildconfig source git Ref": {bc.Spec.CommonSpec.Source.Git.Ref, branch},
|
||||||
t.Errorf("Expected: %#v, got: %#v", test.value, test.field)
|
"Assert buildconfig source context dir": {bc.Spec.CommonSpec.Source.ContextDir, testDir + "/"},
|
||||||
|
// BuildConfig output image is named after service name. If image key is set than tag from that is used.
|
||||||
|
"Assert buildconfig output name": {bc.Spec.CommonSpec.Output.To.Name, serviceName + ":" + getImageTag(test.ServiceConfig.Image)},
|
||||||
|
"Assert buildconfig dockerfilepath": {bc.Spec.CommonSpec.Strategy.DockerStrategy.DockerfilePath, test.ServiceConfig.Dockerfile},
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, assertionTest := range assertions {
|
||||||
|
if assertionTest.field != assertionTest.value {
|
||||||
|
t.Errorf("%s Expected: %#v, got: %#v", name, assertionTest.value, assertionTest.field)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs) {
|
||||||
|
t.Errorf("Expected: %#v, got: %#v", bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs) {
|
|
||||||
t.Errorf("Expected: %#v, got: %#v", bc.Spec.CommonSpec.Strategy.DockerStrategy.Env, buildArgs)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user