@@ -91,12 +91,36 @@ def build_staging_task(config, staging_details)
9191 "app:#{ staging_details . package . app_guid } "
9292 ]
9393 ) ,
94- image_username : staging_details . package . docker_username ,
95- image_password : staging_details . package . docker_password ,
94+ image_username : image_username ( staging_details ) ,
95+ image_password : image_password ( staging_details ) ,
9696 volume_mounted_files : ServiceBindingFilesBuilder . build ( staging_details . package . app )
9797 } . compact )
9898 end
9999
100+ def image_username ( staging_details )
101+ return staging_details . package . docker_username if staging_details . package . docker_username . present?
102+ return unless staging_details . lifecycle . respond_to? ( :credentials ) && staging_details . lifecycle . credentials . present?
103+
104+ cred = get_credentials_for_stack ( staging_details )
105+ cred ? cred [ 'user' ] : nil
106+ end
107+
108+ def image_password ( staging_details )
109+ return staging_details . package . docker_password if staging_details . package . docker_password . present?
110+ return unless staging_details . lifecycle . respond_to? ( :credentials ) && staging_details . lifecycle . credentials . present?
111+
112+ cred = get_credentials_for_stack ( staging_details )
113+ cred ? cred [ 'password' ] : nil
114+ end
115+
116+ def get_credentials_for_stack ( staging_details )
117+ return nil unless staging_details . lifecycle . staging_stack . include? ( 'docker://' )
118+
119+ stack_uri = URI . parse ( staging_details . lifecycle . staging_stack )
120+ host = stack_uri . host
121+ staging_details . lifecycle . credentials [ host ]
122+ end
123+
100124 private
101125
102126 def metric_tags ( source )
0 commit comments