@@ -597,6 +597,9 @@ def run_job_docker_compose(self, c):
597597 service_badge_dir = os .path .join (self .infrabox_badge_dir , service )
598598 makedirs (service_badge_dir )
599599
600+ service_archive_dir = os .path .join (self .infrabox_archive_dir , service )
601+ makedirs (service_archive_dir )
602+
600603 service_volumes = [
601604 "%s:/infrabox/cache" % service_cache_dir ,
602605 "%s:/infrabox/inputs" % self .infrabox_inputs_dir ,
@@ -606,6 +609,7 @@ def run_job_docker_compose(self, c):
606609 "%s:/infrabox/upload/markup" % service_markup_dir ,
607610 "%s:/infrabox/upload/badge" % service_badge_dir ,
608611 "%s:/infrabox/upload/coverage" % service_coverage_dir ,
612+ "%s:/infrabox/upload/archive" % service_archive_dir ,
609613 ]
610614
611615 for v in compose_file_content ['services' ][service ].get ('volumes' , []):
@@ -732,7 +736,10 @@ def deploy_images(self, image_name):
732736 c .header ("Deploying" , show = True )
733737
734738 for dep in self .deployments :
735- self .deploy_image (image_name , dep )
739+ target = dep .get ('target' , None )
740+
741+ if not target :
742+ self .deploy_image (image_name , dep )
736743
737744 def login_docker_registry (self ):
738745 c = self .console
@@ -835,6 +842,13 @@ def run_docker_container(self, image_name):
835842 logger .exception (ex )
836843 raise Failure ("Could not get exit code of container" )
837844
845+ try :
846+ c .execute (("docker" , "commit" , container_name , image_name ))
847+ c .header ("Finalize" , show = True )
848+ except Exception as ex :
849+ logger .exception (ex )
850+ raise Failure ("Could not commit and push container" )
851+
838852 logger .exception (e )
839853 raise Failure ("Container run exited with error (exit code=%s)" % exit_code )
840854
@@ -889,7 +903,7 @@ def build_docker_image(self, image_name, cache_image, target=None):
889903 def run_job_docker_image (self , c ):
890904 image_name = self .job ['definition' ]['image' ].replace ('$INFRABOX_BUILD_NUMBER' , str (self .build ['build_number' ]))
891905
892- if self .job .get ('run' , True ):
906+ if self .job .get ('definition' , {}). get ( ' run' , True ):
893907 self ._login_source_registries ()
894908 self .run_docker_container (image_name )
895909 self ._logout_source_registries ()
@@ -950,13 +964,19 @@ def run_job_docker(self, c):
950964
951965 if self .deployments :
952966 for d in self .deployments :
953- self .build_docker_image (image_name_build , image_name_latest , d .get ('target' , None ))
967+ target = d .get ('target' , None )
968+
969+ if not target and not self .job .get ('build_only' , True ):
970+ continue
971+
972+ self .build_docker_image (image_name_build , image_name_latest , target = target )
954973 c .header ("Deploying" , show = True )
955974 self .deploy_image (image_name_build , d )
956975
957976 if not self .job .get ('build_only' , True ):
958977 self .build_docker_image (image_name_build , image_name_latest )
959978 self .run_docker_container (image_name_build )
979+ self .deploy_images (image_name_build )
960980
961981 c .header ("Finalize" , show = True )
962982
0 commit comments