forked from github-starred/komodo
only copy what each dockerfile needs to improve caching
This commit is contained in:
18
.vscode/tasks.json
vendored
18
.vscode/tasks.json
vendored
@@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)"
|
||||
));
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
@@ -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"),
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user