Skip to content

Commit 5e2baaf

Browse files
committed
Merge pull request #243 from kmala/master
feat(builder): get the slug/docker builder images from the environment
2 parents 46b3a67 + b9b4517 commit 5e2baaf

4 files changed

Lines changed: 55 additions & 40 deletions

File tree

pkg/gitreceive/build.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ func build(conf *Config, s3Client *storage.Client, kubeClient *client.Client, fs
128128
slugBuilderInfo.TarURL(),
129129
slugName,
130130
conf.StorageRegion,
131+
conf.DockerBuilderImage,
131132
)
132133
} else {
133134
buildPodName = slugBuilderPodName(appName, gitSha.Short())
@@ -140,6 +141,7 @@ func build(conf *Config, s3Client *storage.Client, kubeClient *client.Client, fs
140141
slugBuilderInfo.TarURL(),
141142
slugBuilderInfo.PushURL(),
142143
buildPackURL,
144+
conf.SlugBuilderImage,
143145
)
144146
}
145147

pkg/gitreceive/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ type Config struct {
3131
ObjectStorageTickDurationMSec int `envconfing:"OBJECT_STORAGE_TICK_DURATION" default:"500"`
3232
ObjectStorageWaitDurationMSec int `envconfig:"OBJECT_STORAGE_WAIT_DURATION" default:"300000"` // 5 minutes
3333
Bucket string `envconfig:"BUCKET" default:"git"`
34+
SlugBuilderImage string `envconfig:"SLUGBUILDER_IMAGE_NAME" default:"quay.io/deisci/slugbuilder:v2-beta"`
35+
DockerBuilderImage string `envconfig:"DOCKERBUILDER_IMAGE_NAME" default:"quay.io/deisci/dockerbuilder:v2-beta"`
3436
}
3537

3638
func (c Config) App() string {

pkg/gitreceive/k8s_util.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@ import (
1212
)
1313

1414
const (
15-
slugBuilderName = "deis-slugbuilder"
16-
slugBuilderImage = "quay.io/deisci/slugbuilder:v2-beta"
17-
dockerBuilderName = "deis-dockerbuilder"
18-
dockerBuilderImage = "quay.io/deisci/dockerbuilder:v2-beta"
15+
slugBuilderName = "deis-slugbuilder"
16+
dockerBuilderName = "deis-dockerbuilder"
1917

2018
tarURLKey = "TAR_URL"
2119
putURLKey = "put_url"
@@ -35,7 +33,7 @@ func slugBuilderPodName(appName, shortSha string) string {
3533
return fmt.Sprintf("slugbuild-%s-%s-%s", appName, shortSha, uid)
3634
}
3735

38-
func dockerBuilderPod(debug, withAuth bool, name, namespace string, env map[string]interface{}, tarURL, imageName, region string) *api.Pod {
36+
func dockerBuilderPod(debug, withAuth bool, name, namespace string, env map[string]interface{}, tarURL, imageName, region, dockerBuilderImage string) *api.Pod {
3937
pod := buildPod(debug, withAuth, name, namespace, env)
4038

4139
pod.Spec.Containers[0].Name = dockerBuilderName
@@ -65,7 +63,7 @@ func dockerBuilderPod(debug, withAuth bool, name, namespace string, env map[stri
6563
return &pod
6664
}
6765

68-
func slugbuilderPod(debug, withAuth bool, name, namespace string, env map[string]interface{}, tarURL, putURL, buildpackURL string) *api.Pod {
66+
func slugbuilderPod(debug, withAuth bool, name, namespace string, env map[string]interface{}, tarURL, putURL, buildpackURL, slugBuilderImage string) *api.Pod {
6967
pod := buildPod(debug, withAuth, name, namespace, env)
7068

7169
pod.Spec.Containers[0].Name = slugBuilderName

pkg/gitreceive/k8s_util_test.go

Lines changed: 47 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,27 @@ func TestSlugBuilderPodName(t *testing.T) {
2323
}
2424

2525
type slugBuildCase struct {
26-
debug bool
27-
withAuth bool
28-
name string
29-
namespace string
30-
env map[string]interface{}
31-
tarURL string
32-
putURL string
33-
buildPack string
26+
debug bool
27+
withAuth bool
28+
name string
29+
namespace string
30+
env map[string]interface{}
31+
tarURL string
32+
putURL string
33+
buildPack string
34+
slugBuilderImage string
3435
}
3536

3637
type dockerBuildCase struct {
37-
debug bool
38-
withAuth bool
39-
name string
40-
namespace string
41-
env map[string]interface{}
42-
tarURL string
43-
imgName string
44-
region string
38+
debug bool
39+
withAuth bool
40+
name string
41+
namespace string
42+
env map[string]interface{}
43+
tarURL string
44+
imgName string
45+
region string
46+
dockerBuilderImage string
4547
}
4648

4749
func TestBuildPod(t *testing.T) {
@@ -53,18 +55,18 @@ func TestBuildPod(t *testing.T) {
5355
var pod *api.Pod
5456

5557
slugBuilds := []slugBuildCase{
56-
{true, true, "test", "default", emptyEnv, "tar", "put-url", ""},
57-
{true, false, "test", "default", emptyEnv, "tar", "put-url", ""},
58-
{true, true, "test", "default", env, "tar", "put-url", ""},
59-
{true, false, "test", "default", env, "tar", "put-url", ""},
60-
{true, true, "test", "default", emptyEnv, "tar", "put-url", "buildpack"},
61-
{true, false, "test", "default", emptyEnv, "tar", "put-url", "buildpack"},
62-
{true, true, "test", "default", env, "tar", "put-url", "buildpack"},
63-
{true, false, "test", "default", env, "tar", "put-url", "buildpack"},
58+
{true, true, "test", "default", emptyEnv, "tar", "put-url", "", ""},
59+
{true, false, "test", "default", emptyEnv, "tar", "put-url", "", ""},
60+
{true, true, "test", "default", env, "tar", "put-url", "", ""},
61+
{true, false, "test", "default", env, "tar", "put-url", "", ""},
62+
{true, true, "test", "default", emptyEnv, "tar", "put-url", "buildpack", ""},
63+
{true, false, "test", "default", emptyEnv, "tar", "put-url", "buildpack", ""},
64+
{true, true, "test", "default", env, "tar", "put-url", "buildpack", ""},
65+
{true, false, "test", "default", env, "tar", "put-url", "buildpack", "customimage"},
6466
}
6567

6668
for _, build := range slugBuilds {
67-
pod = slugbuilderPod(build.debug, build.withAuth, build.name, build.namespace, build.env, build.tarURL, build.putURL, build.buildPack)
69+
pod = slugbuilderPod(build.debug, build.withAuth, build.name, build.namespace, build.env, build.tarURL, build.putURL, build.buildPack, build.slugBuilderImage)
6870

6971
if pod.ObjectMeta.Name != build.name {
7072
t.Errorf("expected %v but returned %v ", build.name, pod.ObjectMeta.Name)
@@ -80,21 +82,27 @@ func TestBuildPod(t *testing.T) {
8082
if build.buildPack != "" {
8183
checkForEnv(t, pod, "BUILDPACK_URL", build.buildPack)
8284
}
85+
86+
if build.slugBuilderImage != "" {
87+
if pod.Spec.Containers[0].Image != build.slugBuilderImage {
88+
t.Errorf("expected %v but returned %v ", build.slugBuilderImage, pod.Spec.Containers[0].Image)
89+
}
90+
}
8391
}
8492

8593
dockerBuilds := []dockerBuildCase{
86-
{true, true, "test", "default", emptyEnv, "tar", "", "us-east-1"},
87-
{true, false, "test", "default", emptyEnv, "tar", "", "us-east-1"},
88-
{true, true, "test", "default", env, "tar", "", "us-east-1"},
89-
{true, false, "test", "default", env, "tar", "", "us-east-1"},
90-
{true, true, "test", "default", emptyEnv, "tar", "img", "us-east-1"},
91-
{true, false, "test", "default", emptyEnv, "tar", "img", "us-east-1"},
92-
{true, true, "test", "default", env, "tar", "img", "us-east-1"},
93-
{true, false, "test", "default", env, "tar", "img", "us-east-1"},
94+
{true, true, "test", "default", emptyEnv, "tar", "", "us-east-1", ""},
95+
{true, false, "test", "default", emptyEnv, "tar", "", "us-east-1", ""},
96+
{true, true, "test", "default", env, "tar", "", "us-east-1", ""},
97+
{true, false, "test", "default", env, "tar", "", "us-east-1", ""},
98+
{true, true, "test", "default", emptyEnv, "tar", "img", "us-east-1", ""},
99+
{true, false, "test", "default", emptyEnv, "tar", "img", "us-east-1", ""},
100+
{true, true, "test", "default", env, "tar", "img", "us-east-1", ""},
101+
{true, false, "test", "default", env, "tar", "img", "us-east-1", "customimage"},
94102
}
95103

96104
for _, build := range dockerBuilds {
97-
pod = dockerBuilderPod(build.debug, build.withAuth, build.name, build.namespace, build.env, build.tarURL, build.imgName, build.region)
105+
pod = dockerBuilderPod(build.debug, build.withAuth, build.name, build.namespace, build.env, build.tarURL, build.imgName, build.region, build.dockerBuilderImage)
98106

99107
if pod.ObjectMeta.Name != build.name {
100108
t.Errorf("expected %v but returned %v ", build.name, pod.ObjectMeta.Name)
@@ -106,6 +114,11 @@ func TestBuildPod(t *testing.T) {
106114
checkForEnv(t, pod, "TAR_URL", build.tarURL)
107115
checkForEnv(t, pod, "IMG_NAME", build.imgName)
108116
}
117+
if build.dockerBuilderImage != "" {
118+
if pod.Spec.Containers[0].Image != build.dockerBuilderImage {
119+
t.Errorf("expected %v but returned %v ", build.dockerBuilderImage, pod.Spec.Containers[0].Image)
120+
}
121+
}
109122
}
110123
}
111124

0 commit comments

Comments
 (0)