use rand::Rng; #[tokio::main] async fn main() -> eyre::Result<()> { dagger_sdk::connect(|client| async move { let host_source_dir = client.host().directory_opts( "./examples/caching/app", dagger_sdk::HostDirectoryOptsBuilder::default() .exclude(vec!["node_modules/", "ci/"]) .build()?, ); let node_cache = client.cache_volume("node"); let source = client .container() .from("node:16") .with_mounted_directory("/src", host_source_dir) .with_mounted_cache("/root/.npm", node_cache); let runner = source .with_workdir("/src") .with_exec(vec!["npm", "install"]); let test = runner.with_exec(vec!["npm", "test", "--", "--watchAll=false"]); let build_dir = test .with_exec(vec!["npm", "run", "build"]) .directory("./build"); let mut rng = rand::thread_rng(); let r#ref = client .container() .from("nginx") .with_directory("/usr/share/nginx/html", build_dir) .publish(format!("ttl.sh/hello-dagger-sdk-{}:1h", rng.gen::())) .await?; println!("published image to: {}", r#ref); Ok(()) }) .await?; Ok(()) }