Merge pull request 'fix(apps/rust): build & push using image tag instead of local VS remote image name' (#87) from fix-image-tag into master
Reviewed-on: https://git.nationtech.io/NationTech/harmony/pulls/87 Reviewed-by: johnride <jg@nationtech.io>
This commit is contained in:
		
						commit
						d95e84d6fc
					
				| @ -158,7 +158,7 @@ impl< | |||||||
|         let helm_chart = self.application.build_push_helm_package(&image).await?; |         let helm_chart = self.application.build_push_helm_package(&image).await?; | ||||||
|         info!("Pushed new helm chart {helm_chart}"); |         info!("Pushed new helm chart {helm_chart}"); | ||||||
| 
 | 
 | ||||||
|         error!("TODO Make building image configurable/skippable"); |         error!("TODO Make building image configurable/skippable if image already exists (prompt)"); | ||||||
|         let image = self.application.build_push_oci_image().await?; |         let image = self.application.build_push_oci_image().await?; | ||||||
|         info!("Pushed new docker image {image}"); |         info!("Pushed new docker image {image}"); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -109,24 +109,20 @@ impl OCICompliant for RustWebapp { | |||||||
|         // It's async to match the trait definition, though the underlying docker commands are blocking.
 |         // It's async to match the trait definition, though the underlying docker commands are blocking.
 | ||||||
|         info!("Starting OCI image build and push for '{}'", self.name); |         info!("Starting OCI image build and push for '{}'", self.name); | ||||||
| 
 | 
 | ||||||
|         // 1. Build the local image by calling the synchronous helper function.
 |         // 1. Build the image by calling the synchronous helper function.
 | ||||||
|         let local_image_name = self.local_image_name(); |         let image_tag = self.image_name(); | ||||||
|         self.build_docker_image(&local_image_name) |         self.build_docker_image(&image_tag) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| format!("Failed to build Docker image: {}", e))?; |             .map_err(|e| format!("Failed to build Docker image: {}", e))?; | ||||||
|         info!( |         info!("Successfully built Docker image: {}", image_tag); | ||||||
|             "Successfully built local Docker image: {}", |  | ||||||
|             local_image_name |  | ||||||
|         ); |  | ||||||
| 
 | 
 | ||||||
|         let remote_image_name = self.image_name(); |  | ||||||
|         // 2. Push the image to the registry.
 |         // 2. Push the image to the registry.
 | ||||||
|         self.push_docker_image(&local_image_name, &remote_image_name) |         self.push_docker_image(&image_tag) | ||||||
|             .await |             .await | ||||||
|             .map_err(|e| format!("Failed to push Docker image: {}", e))?; |             .map_err(|e| format!("Failed to push Docker image: {}", e))?; | ||||||
|         info!("Successfully pushed Docker image to: {}", remote_image_name); |         info!("Successfully pushed Docker image to: {}", image_tag); | ||||||
| 
 | 
 | ||||||
|         Ok(remote_image_name) |         Ok(image_tag) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn local_image_name(&self) -> String { |     fn local_image_name(&self) -> String { | ||||||
| @ -206,23 +202,25 @@ impl RustWebapp { | |||||||
|     /// Tags and pushes a Docker image to the configured remote registry.
 |     /// Tags and pushes a Docker image to the configured remote registry.
 | ||||||
|     async fn push_docker_image( |     async fn push_docker_image( | ||||||
|         &self, |         &self, | ||||||
|         image_name: &str, |         image_tag: &str, | ||||||
|         full_tag: &str, |  | ||||||
|     ) -> Result<String, Box<dyn std::error::Error>> { |     ) -> Result<String, Box<dyn std::error::Error>> { | ||||||
|         info!("Pushing docker image {full_tag}"); |         info!("Pushing docker image {image_tag}"); | ||||||
| 
 | 
 | ||||||
|         let docker = Docker::connect_with_socket_defaults().unwrap(); |         let docker = Docker::connect_with_socket_defaults().unwrap(); | ||||||
| 
 | 
 | ||||||
|         // let push_options = PushImageOptionsBuilder::new().tag(tag);
 |         // let push_options = PushImageOptionsBuilder::new().tag(tag);
 | ||||||
| 
 | 
 | ||||||
|         let mut push_image_stream = |         let mut push_image_stream = docker.push_image( | ||||||
|             docker.push_image(full_tag, Some(PushImageOptionsBuilder::new().build()), None); |             image_tag, | ||||||
|  |             Some(PushImageOptionsBuilder::new().build()), | ||||||
|  |             None, | ||||||
|  |         ); | ||||||
| 
 | 
 | ||||||
|         while let Some(msg) = push_image_stream.next().await { |         while let Some(msg) = push_image_stream.next().await { | ||||||
|             println!("Message: {msg:?}"); |             println!("Message: {msg:?}"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         Ok(full_tag.to_string()) |         Ok(image_tag.to_string()) | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Checks the output of a process command for success.
 |     /// Checks the output of a process command for success.
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user