Skip to content

Commit e7b9300

Browse files
authored
Merge pull request #24 from yevgeny-shnaidman/yevgeny/MGMT-11850
Adding build option to disable pushes to registry
2 parents ded4431 + 2e6ac24 commit e7b9300

File tree

8 files changed

+42
-28
lines changed

8 files changed

+42
-28
lines changed

controllers/module_reconciler.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ func (r *ModuleReconciler) handleBuild(ctx context.Context,
234234
logger := log.FromContext(ctx).WithValues("kernel version", kernelVersion, "image", km.ContainerImage)
235235
buildCtx := log.IntoContext(ctx, logger)
236236

237-
buildRes, err := r.buildAPI.Sync(buildCtx, *mod, *km, kernelVersion)
237+
buildRes, err := r.buildAPI.Sync(buildCtx, *mod, *km, kernelVersion, true)
238238
if err != nil {
239239
return false, fmt.Errorf("could not synchronize the build: %w", err)
240240
}

internal/build/job/maker.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
//go:generate mockgen -source=maker.go -package=job -destination=mock_maker.go
1717

1818
type Maker interface {
19-
MakeJob(mod kmmv1beta1.Module, buildConfig *kmmv1beta1.Build, targetKernel, containerImage string) (*batchv1.Job, error)
19+
MakeJob(mod kmmv1beta1.Module, buildConfig *kmmv1beta1.Build, targetKernel, containerImage string, pushImage bool) (*batchv1.Job, error)
2020
}
2121

2222
type maker struct {
@@ -28,8 +28,13 @@ func NewMaker(helper build.Helper, scheme *runtime.Scheme) Maker {
2828
return &maker{helper: helper, scheme: scheme}
2929
}
3030

31-
func (m *maker) MakeJob(mod kmmv1beta1.Module, buildConfig *kmmv1beta1.Build, targetKernel, containerImage string) (*batchv1.Job, error) {
32-
args := []string{"--destination", containerImage}
31+
func (m *maker) MakeJob(mod kmmv1beta1.Module, buildConfig *kmmv1beta1.Build, targetKernel, containerImage string, pushImage bool) (*batchv1.Job, error) {
32+
args := []string{}
33+
if pushImage {
34+
args = append(args, "--destination", containerImage)
35+
} else {
36+
args = append(args, "--no-push")
37+
}
3338

3439
buildArgs := m.helper.ApplyBuildArgOverrides(
3540
buildConfig.BuildArgs,

internal/build/job/maker_test.go

+13-4
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ var _ = Describe("MakeJob", func() {
193193
override := kmmv1beta1.BuildArg{Name: "KERNEL_VERSION", Value: kernelVersion}
194194
mh.EXPECT().ApplyBuildArgOverrides(buildArgs, override).Return(append(slices.Clone(buildArgs), override))
195195

196-
actual, err := m.MakeJob(*mod, km.Build, kernelVersion, km.ContainerImage)
196+
actual, err := m.MakeJob(*mod, km.Build, kernelVersion, km.ContainerImage, true)
197197
Expect(err).NotTo(HaveOccurred())
198198

199199
Expect(
@@ -224,7 +224,7 @@ var _ = Describe("MakeJob", func() {
224224
),
225225
)
226226

227-
DescribeTable("should set correct kaniko flags", func(b kmmv1beta1.Build, flag string) {
227+
DescribeTable("should set correct kaniko flags", func(b kmmv1beta1.Build, kanikoFlag string, pushFlag bool) {
228228

229229
km := kmmv1beta1.KernelMapping{
230230
Build: &kmmv1beta1.Build{
@@ -236,30 +236,39 @@ var _ = Describe("MakeJob", func() {
236236

237237
mh.EXPECT().ApplyBuildArgOverrides(nil, kmmv1beta1.BuildArg{Name: "KERNEL_VERSION", Value: kernelVersion})
238238

239-
actual, err := m.MakeJob(mod, &b, kernelVersion, km.ContainerImage)
239+
actual, err := m.MakeJob(mod, &b, kernelVersion, km.ContainerImage, pushFlag)
240240
Expect(err).NotTo(HaveOccurred())
241-
Expect(actual.Spec.Template.Spec.Containers[0].Args).To(ContainElement(flag))
241+
Expect(actual.Spec.Template.Spec.Containers[0].Args).To(ContainElement(kanikoFlag))
242+
if pushFlag {
243+
Expect(actual.Spec.Template.Spec.Containers[0].Args).To(ContainElement("--destination"))
244+
} else {
245+
Expect(actual.Spec.Template.Spec.Containers[0].Args).To(ContainElement("--no-push"))
246+
}
242247

243248
},
244249
Entry(
245250
"PullOptions.Insecure",
246251
kmmv1beta1.Build{Pull: kmmv1beta1.PullOptions{Insecure: true}},
247252
"--insecure-pull",
253+
true,
248254
),
249255
Entry(
250256
"PullOptions.InsecureSkipTLSVerify",
251257
kmmv1beta1.Build{Pull: kmmv1beta1.PullOptions{InsecureSkipTLSVerify: true}},
252258
"--skip-tls-verify-pull",
259+
false,
253260
),
254261
Entry(
255262
"PushOptions.Insecure",
256263
kmmv1beta1.Build{Push: kmmv1beta1.PushOptions{Insecure: true}},
257264
"--insecure",
265+
true,
258266
),
259267
Entry(
260268
"PushOptions.InsecureSkipTLSVerify",
261269
kmmv1beta1.Build{Push: kmmv1beta1.PushOptions{InsecureSkipTLSVerify: true}},
262270
"--skip-tls-verify",
271+
false,
263272
),
264273
)
265274
})

internal/build/job/manager.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (jbm *jobManager) getJob(ctx context.Context, mod kmmv1beta1.Module, target
6262
return &jobList.Items[0], nil
6363
}
6464

65-
func (jbm *jobManager) Sync(ctx context.Context, mod kmmv1beta1.Module, m kmmv1beta1.KernelMapping, targetKernel string) (build.Result, error) {
65+
func (jbm *jobManager) Sync(ctx context.Context, mod kmmv1beta1.Module, m kmmv1beta1.KernelMapping, targetKernel string, pushImage bool) (build.Result, error) {
6666
logger := log.FromContext(ctx)
6767

6868
buildConfig := jbm.helper.GetRelevantBuild(mod, m)
@@ -95,7 +95,7 @@ func (jbm *jobManager) Sync(ctx context.Context, mod kmmv1beta1.Module, m kmmv1b
9595

9696
logger.Info("Creating job")
9797

98-
job, err = jbm.maker.MakeJob(mod, buildConfig, targetKernel, m.ContainerImage)
98+
job, err = jbm.maker.MakeJob(mod, buildConfig, targetKernel, m.ContainerImage, pushImage)
9999
if err != nil {
100100
return build.Result{}, fmt.Errorf("could not make Job: %v", err)
101101
}

internal/build/job/manager_test.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ var _ = Describe("JobManager", func() {
7575
)
7676
mgr := NewBuildManager(nil, registry, maker, helper)
7777

78-
_, err := mgr.Sync(ctx, kmmv1beta1.Module{}, km, "")
78+
_, err := mgr.Sync(ctx, kmmv1beta1.Module{}, km, "", true)
7979
Expect(err).To(HaveOccurred())
8080
})
8181

@@ -90,7 +90,7 @@ var _ = Describe("JobManager", func() {
9090
mgr := NewBuildManager(nil, registry, maker, helper)
9191

9292
Expect(
93-
mgr.Sync(ctx, kmmv1beta1.Module{}, km, ""),
93+
mgr.Sync(ctx, kmmv1beta1.Module{}, km, "", true),
9494
).To(
9595
Equal(build.Result{Status: build.StatusCompleted}),
9696
)
@@ -130,7 +130,7 @@ var _ = Describe("JobManager", func() {
130130

131131
mgr := NewBuildManager(clnt, registry, maker, helper)
132132

133-
res, err := mgr.Sync(ctx, mod, km, kernelVersion)
133+
res, err := mgr.Sync(ctx, mod, km, kernelVersion, true)
134134

135135
if expectsErr {
136136
Expect(err).To(HaveOccurred())
@@ -150,14 +150,14 @@ var _ = Describe("JobManager", func() {
150150
gomock.InOrder(
151151
helper.EXPECT().GetRelevantBuild(mod, km).Return(km.Build),
152152
registry.EXPECT().ImageExists(ctx, imageName, po, gomock.Any()),
153-
maker.EXPECT().MakeJob(mod, km.Build, kernelVersion, km.ContainerImage).Return(nil, errors.New("random error")),
153+
maker.EXPECT().MakeJob(mod, km.Build, kernelVersion, km.ContainerImage, true).Return(nil, errors.New("random error")),
154154
)
155155
clnt.EXPECT().List(ctx, gomock.Any(), gomock.Any(), gomock.Any())
156156

157157
mgr := NewBuildManager(clnt, registry, maker, helper)
158158

159159
Expect(
160-
mgr.Sync(ctx, mod, km, kernelVersion),
160+
mgr.Sync(ctx, mod, km, kernelVersion, true),
161161
).Error().To(
162162
HaveOccurred(),
163163
)
@@ -180,7 +180,7 @@ var _ = Describe("JobManager", func() {
180180
gomock.InOrder(
181181
helper.EXPECT().GetRelevantBuild(mod, km).Return(km.Build),
182182
registry.EXPECT().ImageExists(ctx, imageName, po, gomock.Any()),
183-
maker.EXPECT().MakeJob(mod, km.Build, kernelVersion, km.ContainerImage).Return(&j, nil),
183+
maker.EXPECT().MakeJob(mod, km.Build, kernelVersion, km.ContainerImage, true).Return(&j, nil),
184184
)
185185

186186
gomock.InOrder(
@@ -191,7 +191,7 @@ var _ = Describe("JobManager", func() {
191191
mgr := NewBuildManager(clnt, registry, maker, helper)
192192

193193
Expect(
194-
mgr.Sync(ctx, mod, km, kernelVersion),
194+
mgr.Sync(ctx, mod, km, kernelVersion, true),
195195
).To(
196196
Equal(build.Result{Requeue: true, Status: build.StatusCreated}),
197197
)
@@ -223,14 +223,14 @@ var _ = Describe("JobManager", func() {
223223
},
224224
),
225225
clnt.EXPECT().List(ctx, gomock.Any(), gomock.Any(), gomock.Any()),
226-
maker.EXPECT().MakeJob(mod, km.Build, kernelVersion, km.ContainerImage).Return(&j, nil),
226+
maker.EXPECT().MakeJob(mod, km.Build, kernelVersion, km.ContainerImage, true).Return(&j, nil),
227227
clnt.EXPECT().Create(ctx, &j),
228228
)
229229

230230
mgr := NewBuildManager(clnt, registry, maker, helper)
231231

232232
Expect(
233-
mgr.Sync(ctx, mod, km, kernelVersion),
233+
mgr.Sync(ctx, mod, km, kernelVersion, true),
234234
).To(
235235
Equal(build.Result{Requeue: true, Status: build.StatusCreated}),
236236
)

internal/build/job/mock_maker.go

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/build/manager.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ type Result struct {
2222
//go:generate mockgen -source=manager.go -package=build -destination=mock_manager.go
2323

2424
type Manager interface {
25-
Sync(ctx context.Context, mod kmmv1beta1.Module, m kmmv1beta1.KernelMapping, targetKernel string) (Result, error)
25+
Sync(ctx context.Context, mod kmmv1beta1.Module, m kmmv1beta1.KernelMapping, targetKernel string, pushImage bool) (Result, error)
2626
}

internal/build/mock_manager.go

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)