File tree Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change @@ -297,6 +297,10 @@ def _default_namespace(self):
297297 def _default_builder_info (self ):
298298 return {"build_image" : self .build_image }
299299
300+ image_pull_secrets = List (
301+ [], help = "Pull secrets for the builder image" , config = True
302+ )
303+
300304 docker_host = Unicode (
301305 "/var/run/docker.sock" ,
302306 allow_none = True ,
@@ -455,6 +459,18 @@ def get_builder_volumes(self):
455459
456460 return volumes , volume_mounts
457461
462+ def get_image_pull_secrets (self ):
463+ """
464+ Get the list of image pull secrets to be used for the builder image
465+ """
466+
467+ image_pull_secrets = []
468+
469+ for secret in self .image_pull_secrets :
470+ image_pull_secrets .append (client .V1LocalObjectReference (name = secret ))
471+
472+ return image_pull_secrets
473+
458474 def submit (self ):
459475 """
460476 Submit a build pod to create the image for the repository.
@@ -526,6 +542,7 @@ def submit(self):
526542 volumes = volumes ,
527543 restart_policy = "Never" ,
528544 affinity = self .get_affinity (),
545+ image_pull_secrets = self .get_image_pull_secrets (),
529546 ),
530547 )
531548
Original file line number Diff line number Diff line change @@ -417,6 +417,44 @@ class EnvBuild(KubernetesBuildExecutor):
417417 assert env == extra_environments
418418
419419
420+ def test_build_image_pull_secrets ():
421+ build_pull_secrets = ["build-image-secret" , "build-image-secret-2" ]
422+
423+ mock_k8s_api = _list_image_builder_pods_mock ()
424+
425+ class PullBuild (KubernetesBuildExecutor ):
426+ q = mock .MagicMock ()
427+ api = mock_k8s_api
428+ name = "test_build"
429+ repo_url = "repo"
430+ ref = "ref"
431+ image_name = "name"
432+ namespace = "build_namespace"
433+ push_secret = ""
434+ build_image = "image"
435+ image_pull_secrets = build_pull_secrets
436+ memory_limit = 0
437+ docker_host = "http://mydockerregistry.local"
438+ node_selector = {}
439+
440+ build = PullBuild ()
441+
442+ with mock .patch .object (build .stop_event , "is_set" , return_value = True ):
443+ build .submit ()
444+
445+ call_args_list = mock_k8s_api .create_namespaced_pod .call_args_list
446+ assert len (call_args_list ) == 1
447+
448+ args = call_args_list [0 ][0 ]
449+ pod = args [1 ]
450+
451+ assert len (pod .spec .containers ) == 1
452+
453+ pull_secrets = [secret .name for secret in pod .spec .image_pull_secrets ]
454+
455+ assert pull_secrets == build_pull_secrets
456+
457+
420458async def test_local_repo2docker_build ():
421459 q = Queue ()
422460 repo_url = "https://github.com/binderhub-ci-repos/cached-minimal-dockerfile"
You can’t perform that action at this time.
0 commit comments