only copy what each dockerfile needs to improve caching

This commit is contained in:
beckerinj
2022-12-10 23:12:59 -05:00
parent 0f865be593
commit d761e49a64
10 changed files with 53 additions and 16 deletions

18
.vscode/tasks.json vendored
View File

@@ -102,6 +102,24 @@
"cwd": "${workspaceFolder}/tests"
},
"problemMatcher": []
},
{
"type": "shell",
"command": "docker compose down && docker compose up -d",
"label": "docker compose restart",
"options": {
"cwd": "${workspaceFolder}/tests"
},
"problemMatcher": []
},
{
"type": "shell",
"command": "docker compose build && docker compose down && docker compose up -d",
"label": "docker compose build and restart",
"options": {
"cwd": "${workspaceFolder}/tests"
},
"problemMatcher": []
}
]
}

View File

@@ -1,7 +1,11 @@
FROM rust:latest as builder
WORKDIR /core
COPY . .
COPY ./lib/db_client .
COPY ./lib/helpers .
COPY ./lib/periphery_client .
COPY ./lib/types .
COPY ./core .
RUN cargo build -p core --release

View File

@@ -1,7 +1,9 @@
FROM rust:latest as builder
WORKDIR /periphery
COPY . .
COPY ./lib/helpers .
COPY ./lib/types .
COPY ./periphery .
RUN cargo build -p periphery --release

View File

@@ -33,7 +33,7 @@ impl State {
address: String,
user: &RequestUser,
) -> anyhow::Result<Server> {
if !user.is_admin {
if !user.is_admin && !user.create_server_permissions {
return Err(anyhow!(
"user does not have permissions to add server (not admin)"
));

View File

@@ -17,6 +17,7 @@ pub type RequestUserExtension = Extension<Arc<RequestUser>>;
pub struct RequestUser {
pub id: String,
pub is_admin: bool,
pub create_server_permissions: bool,
}
#[derive(Serialize, Deserialize)]
@@ -93,6 +94,7 @@ impl JwtClient {
let user = RequestUser {
id: claims.id,
is_admin: user.admin,
create_server_permissions: user.create_server_permissions,
};
Ok(user)
} else {

View File

@@ -1,8 +1,6 @@
apt-get update
apt-get install ca-certificates curl gnupg lsb-release -y
apt-get install ca-certificates curl gnupg lsb-release make cmake g++ python3 node-gyp build-essential libssl-dev git -y
curl -fsSL https://get.docker.com | sh
apt-get update
apt-get install git -y
git config pull.rebase false
curl -fsSL https://deb.nodesource.com/setup_19.x | bash - && apt-get install -y nodejs
git config pull.rebase false
corepack enable

View File

@@ -38,6 +38,7 @@ impl DbClient {
builds: builds_collection(&mungos, db_name)
.await
.expect("failed to make builds collection"),
// build_records:
updates: updates_collection(&mungos, db_name)
.await
.expect("failed to make updates collection"),

View File

@@ -48,6 +48,9 @@ pub struct User {
#[diff(attr(#[serde(skip_serializing_if = "Option::is_none")]))]
pub admin: bool,
#[diff(attr(#[serde(skip_serializing_if = "Option::is_none")]))]
pub create_server_permissions: bool,
#[serde(skip_serializing_if = "Option::is_none")]
#[diff(attr(#[serde(skip_serializing_if = "option_diff_no_change")]))]
pub avatar: Option<String>,
@@ -70,8 +73,10 @@ pub struct User {
pub google_id: Option<String>,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub created_at: i64,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub updated_at: i64,
}
@@ -130,8 +135,10 @@ pub struct Server {
pub instance_id: Option<String>,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub created_at: i64,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub updated_at: i64,
}
@@ -222,8 +229,10 @@ pub struct Deployment {
pub on_clone: Option<Command>,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub created_at: i64,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub updated_at: i64,
}
@@ -283,8 +292,10 @@ pub struct Build {
pub docker_account: Option<String>,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub created_at: i64,
#[serde(default)]
#[diff(attr(#[serde(skip)]))]
pub updated_at: i64,
}

View File

@@ -20,13 +20,16 @@ async fn main() -> anyhow::Result<()> {
// let stats = get_server_stats(&monitor).await?;
// println!("{stats:#?}");
// let (server, deployment, build) = create_test_setup(&monitor, "test").await?;
let (server, deployment, build) = create_test_setup(&monitor, "test").await?;
let server_stats = get_server_stats(&monitor).await?;
println!("{server_stats:#?}\n");
let (update, container) = deploy_mongo(&monitor).await?;
println!("{update:#?}\n{container:#?}");
println!("{update:#?}\n{container:#?}\n");
// let update = test_build(&monitor).await?;
// println!("{update:#?}");
let update = test_build(&monitor).await?;
println!("{update:#?}");
let end_ts = unix_timestamp_ms();
let finished_in = (end_ts - start_ts) as f64 / 1000.0;

View File

@@ -47,7 +47,6 @@ pub async fn deploy_mongo(
.await
.context("failed at list servers")?;
let server = servers.get(0).ok_or(anyhow!("no servers"))?;
println!("got server");
let mut deployment = monitor.create_deployment("mongo_test", &server.id).await?;
println!("created deployment");
deployment.docker_run_args.image = "mongo".to_string();
@@ -68,9 +67,8 @@ pub async fn test_build(monitor: &MonitorClient) -> anyhow::Result<Update> {
.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");
let mut build = monitor.create_build("old_periphery", &server.id).await?;
println!("created build. updating...");
build.repo = Some("mbecker20/monitor".to_string());
build.on_clone = Some(Command {
path: ".".to_string(),
@@ -85,7 +83,7 @@ pub async fn test_build(monitor: &MonitorClient) -> anyhow::Result<Update> {
dockerfile_path: None,
});
let build = monitor.update_build(build).await?;
println!("updated build");
println!("updated build.");
let update = monitor.build(&build.id).await?;
Ok(update)
}