diff --git a/crates/cuddle-ci/src/rust_service.rs b/crates/cuddle-ci/src/rust_service.rs index c91964e..9956263 100644 --- a/crates/cuddle-ci/src/rust_service.rs +++ b/crates/cuddle-ci/src/rust_service.rs @@ -1,14 +1,13 @@ - - use async_trait::async_trait; use dagger_sdk::Container; - use crate::{dagger_middleware::DaggerMiddleware, MainAction, PullRequestAction}; pub type DynMiddleware = Box; pub enum RustServiceStage { + BeforeDeps(DynMiddleware), + AfterDeps(DynMiddleware), BeforeBase(DynMiddleware), AfterBase(DynMiddleware), BeforeRelease(DynMiddleware), @@ -86,8 +85,6 @@ mod test { rust_service::{RustService, RustServiceStage}, }; - - #[tokio::test] async fn can_build_rust() -> eyre::Result<()> { let client = dagger_sdk::connect().await?; @@ -95,7 +92,7 @@ mod test { RustService::from(client.clone()) .with_base_image(client.container().from("rustlang/rust:nightly")) .with_sqlx() - .with_stage(RustServiceStage::BeforeBase(middleware(|c| async move { Ok(c) }.boxed()))) + .with_stage(RustServiceStage::BeforeDeps(middleware(|c| async move { Ok(c) }.boxed()))) .build_release() .await?; diff --git a/crates/dagger-rust/src/build.rs b/crates/dagger-rust/src/build.rs index 13908a6..cf65210 100644 --- a/crates/dagger-rust/src/build.rs +++ b/crates/dagger-rust/src/build.rs @@ -97,94 +97,87 @@ impl RustBuild { let mut containers = Vec::new(); for container_image in images { - let container = match &container_image { - SlimImage::Debian { image, deps, .. } => { - let target = BuildTarget::from_target(&container_image); + let container = + match &container_image { + SlimImage::Debian { image, deps, .. } => { + let target = BuildTarget::from_target(&container_image); - let build_container = self - .build( - source_path.clone(), - &rust_version, + let build_container = self + .build( + source_path.clone(), + &rust_version, + BuildTarget::from_target(&container_image), + BuildProfile::Release, + crates, + extra_deps, + ) + .await?; + + let bin = build_container + .with_env_variable("SQLX_OFFLINE", "true") + .with_exec(vec!["cargo", "clean"]) + .with_exec(vec![ + "cargo", + "build", + "--target", + &target.to_string(), + "--release", + "-p", + bin_name, + ]) + .file(format!("target/{}/release/{}", target.to_string(), bin_name)); + + self.build_debian_image( + bin, + image, BuildTarget::from_target(&container_image), - BuildProfile::Release, - crates, - extra_deps, - ) - .await?; - - let bin = build_container - .with_env_variable("SQLX_OFFLINE", "true") - .with_exec(vec!["cargo", "clean"]) - .with_exec(vec![ - "cargo", - "build", - "--target", - &target.to_string(), - "--release", - "-p", + deps.iter() + .map(|d| d.as_str()) + .collect::>() + .as_slice(), bin_name, - ]) - .file(format!( - "target/{}/release/{}", - target.to_string(), - bin_name - )); + ) + .await? + } + SlimImage::Alpine { image, deps, .. } => { + let target = BuildTarget::from_target(&container_image); - self.build_debian_image( - bin, - image, - BuildTarget::from_target(&container_image), - deps.iter() - .map(|d| d.as_str()) - .collect::>() - .as_slice(), - bin_name, - ) - .await? - } - SlimImage::Alpine { image, deps, .. } => { - let target = BuildTarget::from_target(&container_image); + let build_container = self + .build( + source_path.clone(), + &rust_version, + BuildTarget::from_target(&container_image), + BuildProfile::Release, + crates, + extra_deps, + ) + .await?; - let build_container = self - .build( - source_path.clone(), - &rust_version, + let bin = build_container + .with_exec(vec![ + "cargo", + "build", + "--target", + &target.to_string(), + "--release", + "-p", + bin_name, + ]) + .file(format!("target/{}/release/{}", target.to_string(), bin_name)); + + self.build_alpine_image( + bin, + image, BuildTarget::from_target(&container_image), - BuildProfile::Release, - crates, - extra_deps, - ) - .await?; - - let bin = build_container - .with_exec(vec![ - "cargo", - "build", - "--target", - &target.to_string(), - "--release", - "-p", + deps.iter() + .map(|d| d.as_str()) + .collect::>() + .as_slice(), bin_name, - ]) - .file(format!( - "target/{}/release/{}", - target.to_string(), - bin_name - )); - - self.build_alpine_image( - bin, - image, - BuildTarget::from_target(&container_image), - deps.iter() - .map(|d| d.as_str()) - .collect::>() - .as_slice(), - bin_name, - ) - .await? - } - }; + ) + .await? + } + }; containers.push(container); }