add routes to update build at id. build stops if pre_build fails.

This commit is contained in:
beckerinj
2022-12-10 00:44:56 -05:00
parent 31dd47aac8
commit 91246b7078
6 changed files with 85 additions and 26 deletions

View File

@@ -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<BuildId>| 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(

View File

@@ -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<DeploymentId>| 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(

View File

@@ -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<ServerId>| 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(

View File

@@ -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);

View File

@@ -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();

View File

@@ -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<Update> {
let update = monitor.deploy(&deployment.id).await?;
Ok(update)
}
pub async fn test_build(monitor: &MonitorClient) -> anyhow::Result<Update> {
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)
}