Skip to content

Commit b8900c2

Browse files
authored
chore(builder): update config struct (#23)
1 parent 089652c commit b8900c2

6 files changed

Lines changed: 63 additions & 32 deletions

File tree

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ go 1.23
55
require (
66
github.com/aws/aws-sdk-go v1.55.5
77
github.com/distribution/distribution/v3 v3.0.0-beta.1.0.20241022144144-c427f845035d
8-
github.com/drycc/controller-sdk-go v0.0.0-20241028091950-441681c47292
8+
github.com/drycc/controller-sdk-go v0.0.0-20241122013249-f1d6fea5bf81
99
github.com/drycc/pkg v0.0.0-20241028091700-8caca001c932
1010
github.com/google/uuid v1.6.0
1111
github.com/kelseyhightower/envconfig v1.4.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ github.com/distribution/distribution/v3 v3.0.0-beta.1.0.20241022144144-c427f8450
2121
github.com/distribution/distribution/v3 v3.0.0-beta.1.0.20241022144144-c427f845035d/go.mod h1:Unn8+BXBntRw4BZHI7UVY9wJ7yGW/xtOspXPxo6hFIs=
2222
github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
2323
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
24-
github.com/drycc/controller-sdk-go v0.0.0-20241028091950-441681c47292 h1:CLpq3s2NxjJs2evDvDqbTwUCDuGyEEjk6bIjn+g5H+M=
25-
github.com/drycc/controller-sdk-go v0.0.0-20241028091950-441681c47292/go.mod h1:F9ViuoVcZ/OG1WnfZBYH6j4v6mb5B+RW9FLaCopADoo=
24+
github.com/drycc/controller-sdk-go v0.0.0-20241122013249-f1d6fea5bf81 h1:y809MASIviVNxzUxP1CDU2EaB5AruRNAiFKjOMCx+0s=
25+
github.com/drycc/controller-sdk-go v0.0.0-20241122013249-f1d6fea5bf81/go.mod h1:F9ViuoVcZ/OG1WnfZBYH6j4v6mb5B+RW9FLaCopADoo=
2626
github.com/drycc/pkg v0.0.0-20241028091700-8caca001c932 h1:tUfkfjmFmlm9n0dYp1NoHcFK6+APD/wHZ2We6CKXDSI=
2727
github.com/drycc/pkg v0.0.0-20241028091700-8caca001c932/go.mod h1:upGcZF/RCEqidGjSnWHh/txRC1I4GPsRGvF8/+bDfwU=
2828
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=

pkg/gitreceive/build_type.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,16 @@ func getStack(dirName string, config api.Config) map[string]string {
4141
}
4242
log.Debug("Stacks: %s", Stacks)
4343
log.Debug("Config values %s", config.Values)
44-
if stackInterface, ok := config.Values["DRYCC_STACK"]; ok {
45-
if strStack, ok := stackInterface.(string); ok {
46-
for _, stack := range Stacks {
47-
if stack["name"] == strStack {
48-
return stack
49-
}
50-
}
44+
strStack := ""
45+
for _, v := range config.Values {
46+
if v.Group == "global" && v.Name == "DRYCC_STACK" {
47+
strStack = v.Value.(string)
48+
}
49+
}
50+
51+
for _, stack := range Stacks {
52+
if stack["name"] == strStack {
53+
return stack
5154
}
5255
}
5356

pkg/gitreceive/build_type_test.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,28 @@ func TestGetStack(t *testing.T) {
3535
t.Fatalf("failed to remove Procfile from %s (%s)", tmpDir, err)
3636
}
3737
}()
38-
config.Values = map[string]interface{}{
39-
"DRYCC_STACK": "buildpack",
38+
config.Values = []api.ConfigValue{
39+
{
40+
Group: "global",
41+
KV: api.KV{
42+
Name: "DRYCC_STACK",
43+
Value: "buildpack",
44+
},
45+
},
4046
}
4147
stack = getStack(tmpDir, config)
4248
if stack["name"] != "buildpack" {
4349
t.Fatalf("expected procfile build, got %s", stack)
4450
}
4551

46-
config.Values = map[string]interface{}{
47-
"DRYCC_STACK": "container",
52+
config.Values = []api.ConfigValue{
53+
{
54+
Group: "global",
55+
KV: api.KV{
56+
Name: "DRYCC_STACK",
57+
Value: "container",
58+
},
59+
},
4860
}
4961
stack = getStack(tmpDir, config)
5062
if stack["name"] != "container" {

pkg/gitreceive/k8s_util.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99

1010
"github.com/drycc/builder/pkg/k8s"
11+
"github.com/drycc/controller-sdk-go/api"
1112
"github.com/google/uuid"
1213
batchv1 "k8s.io/api/batch/v1"
1314
corev1 "k8s.io/api/core/v1"
@@ -40,7 +41,7 @@ func createBuilderJob(
4041
debug bool,
4142
name,
4243
namespace string,
43-
env map[string]interface{},
44+
config []api.ConfigValue,
4445
tarKey,
4546
gitShortHash string,
4647
imageName,
@@ -52,7 +53,7 @@ func createBuilderJob(
5253
nodeSelector map[string]string,
5354
) *batchv1.Job {
5455

55-
job := buildJob(debug, name, namespace, builderName, pullPolicy, securityContext, nodeSelector, env)
56+
job := buildJob(debug, name, namespace, builderName, pullPolicy, securityContext, nodeSelector, config)
5657
job.Spec.Template.Spec.Containers[0].Name = builderName
5758
job.Spec.Template.Spec.Containers[0].Image = builderImage
5859

@@ -79,7 +80,7 @@ func buildJob(
7980
pullPolicy corev1.PullPolicy,
8081
securityContext corev1.SecurityContext,
8182
nodeSelector map[string]string,
82-
env map[string]interface{}) batchv1.Job {
83+
values []api.ConfigValue) batchv1.Job {
8384
TTLSecondsAfterFinished := newInt32(21600)
8485
if os.Getenv("TTL_SECONDS_AFTER_FINISHED") != "" {
8586
ttl, err := strconv.ParseInt(os.Getenv("TTL_SECONDS_AFTER_FINISHED"), 10, 32)
@@ -142,10 +143,17 @@ func buildJob(
142143
})
143144

144145
if len(job.Spec.Template.Spec.Containers) > 0 {
145-
for k, v := range env {
146+
kvs := []api.KV{}
147+
// only take the value of the global group
148+
for _, v := range values {
149+
if v.Group == "global" {
150+
kvs = append(kvs, v.KV)
151+
}
152+
}
153+
for _, v := range kvs {
146154
job.Spec.Template.Spec.Containers[0].Env = append(job.Spec.Template.Spec.Containers[0].Env, corev1.EnvVar{
147-
Name: k,
148-
Value: fmt.Sprintf("%v", v),
155+
Name: v.Name,
156+
Value: fmt.Sprintf("%v", v.Value),
149157
})
150158
}
151159
}

pkg/gitreceive/k8s_util_test.go

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"testing"
88

99
"github.com/drycc/builder/pkg/k8s"
10+
"github.com/drycc/controller-sdk-go/api"
1011
"github.com/stretchr/testify/assert"
1112
batchv1 "k8s.io/api/batch/v1"
1213
corev1 "k8s.io/api/core/v1"
@@ -32,7 +33,7 @@ type imageBuildCase struct {
3233
debug bool
3334
name string
3435
namespace string
35-
env map[string]interface{}
36+
env []api.ConfigValue
3637
tarKey string
3738
gitShortHash string
3839
imgName string
@@ -43,10 +44,17 @@ type imageBuildCase struct {
4344
}
4445

4546
func TestBuildJob(t *testing.T) {
46-
emptyEnv := make(map[string]interface{})
47-
48-
env := make(map[string]interface{})
49-
env["KEY"] = "VALUE"
47+
emptyValues := []api.ConfigValue{}
48+
49+
values := []api.ConfigValue{
50+
{
51+
Group: "global",
52+
KV: api.KV{
53+
Name: "KEY",
54+
Value: "VALUE",
55+
},
56+
},
57+
}
5058
var job *batchv1.Job
5159

5260
emptyNodeSelector := make(map[string]string)
@@ -59,13 +67,13 @@ func TestBuildJob(t *testing.T) {
5967
nodeSelector2["network"] = "fast"
6068

6169
imageBuilds := []imageBuildCase{
62-
{true, "test", "default", emptyEnv, "tar", "deadbeef", "imagebuilder", "", "", corev1.PullAlways, nodeSelector1},
63-
{true, "test", "default", env, "tar", "deadbeef", "", "imagebuilder", "", corev1.PullAlways, nodeSelector2},
64-
{true, "test", "default", emptyEnv, "tar", "deadbeef", "img", "imagebuilder", "", corev1.PullAlways, emptyNodeSelector},
65-
{true, "test", "default", env, "tar", "deadbeef", "img", "imagebuilder", "", corev1.PullAlways, emptyNodeSelector},
66-
{true, "test", "default", env, "tar", "deadbeef", "img", "imagebuilder", "customimage", corev1.PullAlways, emptyNodeSelector},
67-
{true, "test", "default", env, "tar", "deadbeef", "img", "imagebuilder", "customimage", corev1.PullIfNotPresent, emptyNodeSelector},
68-
{true, "test", "default", env, "tar", "deadbeef", "img", "imagebuilder", "customimage", corev1.PullNever, nil},
70+
{true, "test", "default", emptyValues, "tar", "deadbeef", "imagebuilder", "", "", corev1.PullAlways, nodeSelector1},
71+
{true, "test", "default", values, "tar", "deadbeef", "", "imagebuilder", "", corev1.PullAlways, nodeSelector2},
72+
{true, "test", "default", emptyValues, "tar", "deadbeef", "img", "imagebuilder", "", corev1.PullAlways, emptyNodeSelector},
73+
{true, "test", "default", values, "tar", "deadbeef", "img", "imagebuilder", "", corev1.PullAlways, emptyNodeSelector},
74+
{true, "test", "default", values, "tar", "deadbeef", "img", "imagebuilder", "customimage", corev1.PullAlways, emptyNodeSelector},
75+
{true, "test", "default", values, "tar", "deadbeef", "img", "imagebuilder", "customimage", corev1.PullIfNotPresent, emptyNodeSelector},
76+
{true, "test", "default", values, "tar", "deadbeef", "img", "imagebuilder", "customimage", corev1.PullNever, nil},
6977
}
7078
buildImageEnv := map[string]string{"DRYCC_REGISTRY_LOCATION": "on-cluster"}
7179
for _, build := range imageBuilds {

0 commit comments

Comments
 (0)