Skip to content
Snippets Groups Projects
Commit 1b5ac344 authored by Tomáš Kohout's avatar Tomáš Kohout Committed by Aleksander Żak
Browse files

Make use of build requests/limits for build permission init container.

parent 001c999e
No related branches found
No related tags found
Loading
This commit is part of merge request !3320. Comments created here will be created in the context of that merge request.
......@@ -431,6 +431,18 @@ func (s *executor) getContainerInfo(cmd common.ExecutorCommand) (string, []strin
return containerName, containerCommand
}
func (s *executor) initContainerResources() api.ResourceRequirements {
resources := api.ResourceRequirements{}
if s.configurationOverwrites != nil {
resources.Limits = s.configurationOverwrites.buildLimits
resources.Requests = s.configurationOverwrites.buildRequests
}
return resources
}
func (s *executor) buildPermissionsInitContainer(os string) (api.Container, error) {
pullPolicy, err := s.pullManager.GetPullPolicyFor(s.getHelperImage())
if err != nil {
......@@ -442,6 +454,8 @@ func (s *executor) buildPermissionsInitContainer(os string) (api.Container, erro
Image: s.getHelperImage(),
VolumeMounts: s.getVolumeMounts(),
ImagePullPolicy: pullPolicy,
// let's use build container resources
Resources: s.initContainerResources(),
}
// The kubernetes executor uses both a helper container (for predefined stages) and a build
......
......@@ -26,6 +26,7 @@ import (
"github.com/stretchr/testify/require"
api "k8s.io/api/core/v1"
kubeerrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/rest/fake"
......@@ -4496,6 +4497,50 @@ func TestExecutor_buildPermissionsInitContainer_FailPullPolicy(t *testing.T) {
assert.ErrorIs(t, err, assert.AnError)
}
func TestExecutor_buildPermissionsInitContainer_CheckResources(t *testing.T) {
mockPullManager := &pull.MockManager{}
cpu := resource.MustParse("1")
memory := resource.MustParse("1Gi")
e := &executor{
AbstractExecutor: executors.AbstractExecutor{
ExecutorOptions: executorOptions,
Build: &common.Build{
Runner: &common.RunnerConfig{},
},
Config: common.RunnerConfig{
RunnerSettings: common.RunnerSettings{
Kubernetes: &common.KubernetesConfig{},
},
},
},
pullManager: mockPullManager,
configurationOverwrites: &overwrites{
buildLimits: api.ResourceList{
"cpu": cpu,
"memory": memory,
},
buildRequests: api.ResourceList{
"cpu": cpu,
"memory": memory,
},
},
}
mockPullManager.On("GetPullPolicyFor", mock.Anything).
Return(api.PullAlways, nil).
Once()
container, err := e.buildPermissionsInitContainer(helperimage.OSTypeLinux)
require.NoError(t, err)
assert.True(t, container.Resources.Limits.Cpu().Equal(cpu))
assert.True(t, container.Resources.Requests.Cpu().Equal(cpu))
assert.True(t, container.Resources.Limits.Memory().Equal(memory))
assert.True(t, container.Resources.Requests.Memory().Equal(memory))
}
func TestShellRetrieval(t *testing.T) {
successfulResponse, err := common.GetRemoteSuccessfulMultistepBuild()
require.NoError(t, err)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment