diff --git a/core/src/api/build.rs b/core/src/api/build.rs index 3167a87be..35562a679 100644 --- a/core/src/api/build.rs +++ b/core/src/api/build.rs @@ -27,6 +27,21 @@ struct CreateBuildBody { pub fn router() -> Router { Router::new() + .route( + "/:id", + get( + |Extension(state): StateExtension, Extension(user): RequestUserExtension, Path(build_id): Path| async move { + let build = state + .get_build_check_permissions( + &build_id.id, + &user, + PermissionLevel::Read + ).await + .map_err(handle_anyhow_error)?; + response!(Json(build)) + } + ) + ) .route( "/list", get( diff --git a/core/src/api/deployment.rs b/core/src/api/deployment.rs index ae5d7d009..96af42b5d 100644 --- a/core/src/api/deployment.rs +++ b/core/src/api/deployment.rs @@ -27,6 +27,21 @@ pub struct CreateDeploymentBody { pub fn router() -> Router { Router::new() + .route( + "/:id", + get( + |Extension(state): StateExtension, Extension(user): RequestUserExtension, Path(deployment_id): Path| async move { + let deployment = state + .get_deployment_check_permissions( + &deployment_id.id, + &user, + PermissionLevel::Read + ).await + .map_err(handle_anyhow_error)?; + response!(Json(deployment)) + } + ) + ) .route( "/list", get( diff --git a/core/src/api/server.rs b/core/src/api/server.rs index 06315564c..6385ae264 100644 --- a/core/src/api/server.rs +++ b/core/src/api/server.rs @@ -27,6 +27,21 @@ pub struct CreateServerBody { pub fn router() -> Router { Router::new() + .route( + "/:id", + get( + |Extension(state): StateExtension, Extension(user): RequestUserExtension, Path(server_id): Path| async move { + let server = state + .get_server_check_permissions( + &server_id.id, + &user, + PermissionLevel::Read + ).await + .map_err(handle_anyhow_error)?; + response!(Json(server)) + } + ) + ) .route( "/list", get( diff --git a/lib/helpers/src/docker/build.rs b/lib/helpers/src/docker/build.rs index ccbfe0d68..35dbc1843 100644 --- a/lib/helpers/src/docker/build.rs +++ b/lib/helpers/src/docker/build.rs @@ -46,6 +46,10 @@ pub async fn build( branch, ) .await; + if !pull_log.success { + logs.push(pull_log); + return Ok(logs); + } logs.push(pull_log); if let Some(command) = pre_build { let mut repo_dir = repo_dir.clone(); @@ -55,6 +59,10 @@ pub async fn build( format!("cd {} && {}", repo_dir.display(), command.command), ) .await; + if !pre_build_log.success { + logs.push(pre_build_log); + return Ok(logs); + } logs.push(pre_build_log); } let build_dir = repo_dir.join(build_path); diff --git a/tests/src/main.rs b/tests/src/main.rs index 54e1e7c28..e1993a170 100644 --- a/tests/src/main.rs +++ b/tests/src/main.rs @@ -17,34 +17,12 @@ async fn main() -> anyhow::Result<()> { let start_ts = unix_timestamp_ms(); - // let mut builds = monitor.list_builds().await?; - // let mut build = builds.pop().unwrap(); - - // println!("{build:#?}"); - - // build.name = format!("{}_1", build.name); - // build.repo = Some("mbecker20/monitor".to_string()); - // build.branch = Some("next".to_string()); - - // let build = monitor.update_build(build).await?; - - // let update = monitor.reclone_build(&build.id).await?; + // let (server, deployment, build) = create_test_setup(&monitor, "test").await?; + // let update = deploy_mongo(&monitor).await?; // println!("{update:#?}"); - // let mut deployments = monitor.list_deployments().await?; - // let mut deployment = deployments.pop().unwrap(); - - // println!("{deployment:#?}"); - - // deployment.name = format!("{}_1", deployment.name); - // // deployment.docker_run_args.image = "test_mongo".to_string(); - - // let deployment = monitor.update_deployment(deployment).await?; - - // println!("{deployment:#?}"); - - let update = deploy_mongo(&monitor).await?; + let update = test_build(&monitor).await?; println!("{update:#?}"); let end_ts = unix_timestamp_ms(); diff --git a/tests/src/tests.rs b/tests/src/tests.rs index 32233fed8..ee9cd7356 100644 --- a/tests/src/tests.rs +++ b/tests/src/tests.rs @@ -1,6 +1,6 @@ use anyhow::{anyhow, Context}; use monitor_client::{ - types::{Build, Conversion, Deployment, Server, SystemStats, Update}, + types::{Build, Command, Conversion, Deployment, DockerBuildArgs, Server, SystemStats, Update}, MonitorClient, }; @@ -55,3 +55,31 @@ pub async fn deploy_mongo(monitor: &MonitorClient) -> anyhow::Result { let update = monitor.deploy(&deployment.id).await?; Ok(update) } + +pub async fn test_build(monitor: &MonitorClient) -> anyhow::Result { + let servers = monitor + .list_servers() + .await + .context("failed at list servers")?; + let server = servers.get(0).ok_or(anyhow!("no servers"))?; + println!("got server"); + let mut build = monitor.create_build("periphery", &server.id).await?; + println!("created build"); + build.repo = Some("mbecker20/monitor".to_string()); + build.on_clone = Some(Command { + path: "/".to_string(), + command: "yarn".to_string(), + }); + build.pre_build = Some(Command { + path: "periphery".to_string(), + command: "yarn build".to_string(), + }); + build.docker_build_args = Some(DockerBuildArgs { + build_path: "periphery".to_string(), + dockerfile_path: None, + }); + let build = monitor.update_build(build).await?; + println!("updated build"); + let update = monitor.build(&build.id).await?; + Ok(update) +}