From d0eedc1b0210d27aca05a00512159b9d0dd60d64 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 20:17:55 +0200 Subject: [PATCH 01/13] Update Dockerfile to optimize layer caching by separate copying of Cargo files and source code --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 22ea970..08db45a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ FROM rust:1.77.1 as builder WORKDIR /app -COPY . . +COPY Cargo.toml Cargo.lock ./ +COPY src ./src RUN cargo install dioxus-cli@0.5.0 RUN dx build --platform fullstack --release From dbe66368fbfec672a9ae66582160fcb6382bdbd7 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 20:42:20 +0200 Subject: [PATCH 02/13] Update Dockerfile to correct slackwatch binary path --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 08db45a..9319205 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,6 +9,6 @@ FROM rust:1.77.1 #RUN apt-get update && rm -rf /var/lib/apt/lists/* #Copy all files from the builder WORKDIR /app -COPY --from=builder /app/slackwatch /app/slackwatch +COPY --from=builder /app/target/release/slackwatch /app/slackwatch EXPOSE 8080 CMD ["/app/slackwatch/slackwatch"] From 8920262000148252905b41c920716d20edb9fd50 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 20:48:47 +0200 Subject: [PATCH 03/13] Update Docker build-push-action to v5 and enable cache in dev-build workflow --- .github/workflows/dev-build.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dev-build.yaml b/.github/workflows/dev-build.yaml index e3a3daf..2ea680e 100644 --- a/.github/workflows/dev-build.yaml +++ b/.github/workflows/dev-build.yaml @@ -28,9 +28,11 @@ jobs: run: docker login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }} - name: Build and push - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v5 with: context: ./ file: ./Dockerfile push: true tags: ghcr.io/slackspace-io/slackwatch:dev,ghcr.io/slackspace-io/slackwatch:${{ github.sha }} + cache-from: type=gh,mode=max + cache-to: type=gh,mode=max From 2a109b72792c05a767e19d7282e45fb8c995a1a9 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 20:49:17 +0200 Subject: [PATCH 04/13] Update Docker build-push-action to v5 and enable cache in dev-build workflow --- .github/workflows/dev-build.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/dev-build.yaml b/.github/workflows/dev-build.yaml index 2ea680e..2ec56be 100644 --- a/.github/workflows/dev-build.yaml +++ b/.github/workflows/dev-build.yaml @@ -9,6 +9,7 @@ on: - 'src/**' - 'Dockerfile' - 'assets/**' + - '.github/workflows/dev-build.yaml' concurrency: group: "slackwatch" From 382d2382f1d4a41235765532c691115110f86207 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 20:51:12 +0200 Subject: [PATCH 05/13] Update Docker build-push-action to v5 and enable cache in dev-build workflow --- .github/workflows/dev-build.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dev-build.yaml b/.github/workflows/dev-build.yaml index 2ec56be..18c5a7e 100644 --- a/.github/workflows/dev-build.yaml +++ b/.github/workflows/dev-build.yaml @@ -35,5 +35,5 @@ jobs: file: ./Dockerfile push: true tags: ghcr.io/slackspace-io/slackwatch:dev,ghcr.io/slackspace-io/slackwatch:${{ github.sha }} - cache-from: type=gh,mode=max - cache-to: type=gh,mode=max + cache-from: type=gha + cache-to: type=gha From 73579d88f2d4c583d94999c9fa63e0a410db173d Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 20:58:45 +0200 Subject: [PATCH 06/13] Update GitHub Actions workflow to use latest checkout and buildx actions, and enhance caching strategy --- .github/workflows/dev-build.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev-build.yaml b/.github/workflows/dev-build.yaml index 18c5a7e..97dce50 100644 --- a/.github/workflows/dev-build.yaml +++ b/.github/workflows/dev-build.yaml @@ -20,10 +20,10 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out the code - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v3 - name: Log in to GitHub Container Registry run: docker login ghcr.io -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }} @@ -36,4 +36,4 @@ jobs: push: true tags: ghcr.io/slackspace-io/slackwatch:dev,ghcr.io/slackspace-io/slackwatch:${{ github.sha }} cache-from: type=gha - cache-to: type=gha + cache-to: type=gha,modes=max From ed52223262f4c07fd5ee9e3b4935ed1b9389c622 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 21:39:45 +0200 Subject: [PATCH 07/13] Rename GitHub workflow for clarity on dev builds --- .github/workflows/dev-build.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-build.yaml b/.github/workflows/dev-build.yaml index 97dce50..b3d48cc 100644 --- a/.github/workflows/dev-build.yaml +++ b/.github/workflows/dev-build.yaml @@ -1,4 +1,4 @@ -name: Build and Push Slackwatch Image +name: Build and Push Dev Branch on: push: From 21b952c5ad2a177f5973aa005959af1408bee243 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 21:41:45 +0200 Subject: [PATCH 08/13] Remove unused file, also testing build time from changes --- src/oldc.rs | 60 ----------------------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 src/oldc.rs diff --git a/src/oldc.rs b/src/oldc.rs deleted file mode 100644 index b3fdb54..0000000 --- a/src/oldc.rs +++ /dev/null @@ -1,60 +0,0 @@ -//// src/config.rs -//use serde::{Deserialize, Serialize}; -//use std::env; -//use std::path::PathBuf; -// -//#[derive(Debug, Serialize, Deserialize)] -//pub struct AppConfig { -// pub database_path: PathBuf, -// pub refresh_schedule: String, -// pub refresh_interval: u64, -// pub k8s_config_path: PathBuf, -//} -// -//impl AppConfig { -// pub fn new() -> anyhow::Result { -// dotenv::dotenv().ok(); // Load .env file if it exists -// log::info!("Loading configuration"); -// -// let database_path = env::var("DATABASE_PATH") -// .unwrap_or_else(|_| "./data.db".into()) -// .into(); -// -// let refresh_schedule = env::var("REFRESH_SCHEDULE").unwrap_or_else(|_| "0 0 * * *".into()); // Default to daily at midnight -// -// Ok(AppConfig { -// k8s_config_path: env::var("K8S_CONFIG_PATH") -// .unwrap_or_else(|_| "~/.kube/config".into()) -// .into(), -// database_path, -// refresh_schedule, -// refresh_interval: env::var("REFRESH_INTERVAL") -// .unwrap_or_else(|_| "86400".into()) -// .parse::()?, -// }) -// } -//} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn test_app_config_new() { - // Setup - let _ = dotenv::dotenv(); // Ensure .env is loaded for this test if it exists - - // This test assumes specific values are set in .env or defaults are acceptable - let expected_db_path: PathBuf = env::var("DATABASE_PATH") - .unwrap_or_else(|_| "./data.db".into()) - .into(); - let expected_schedule = env::var("REFRESH_SCHEDULE").unwrap_or_else(|_| "0 0 * * *".into()); - - // Exercise - let config = AppConfig::new().expect("Failed to create AppConfig"); - - // Verify - assert_eq!(config.database_path, expected_db_path); - assert_eq!(config.refresh_schedule, expected_schedule); - } -} From 2f0a21aa82f3c2d8c7dff90d5ad4d09ab3cad574 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 21:49:31 +0200 Subject: [PATCH 09/13] Update Docker cache settings in GitHub Actions dev-build workflow --- .github/workflows/dev-build.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dev-build.yaml b/.github/workflows/dev-build.yaml index b3d48cc..07efe9c 100644 --- a/.github/workflows/dev-build.yaml +++ b/.github/workflows/dev-build.yaml @@ -35,5 +35,5 @@ jobs: file: ./Dockerfile push: true tags: ghcr.io/slackspace-io/slackwatch:dev,ghcr.io/slackspace-io/slackwatch:${{ github.sha }} - cache-from: type=gha - cache-to: type=gha,modes=max + cache-from: type=registry,ref=ghcr.io/slackspace-io/slackwatch:build-cache + cache-to: type=registry,ref=ghcr.io/slackspace-io/slackwatch:build-cache,mode=max From 8ffcb64f5aea1616b604d37bc8dc51103adeaeba Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 22:09:09 +0200 Subject: [PATCH 10/13] Remove commented out code and clean up main function in main.rs --- src/main.rs | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5615567..380d758 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,10 +16,6 @@ use dioxus::prelude::*; use log::info; use crate::config::Settings; -//#[cfg(feature = "server")] -//use k8s_openapi::merge_strategies::list::set; -//use std::env; -// mod config; mod database; mod gitops; @@ -35,18 +31,14 @@ mod site; #[tokio::main] async fn main() { println!("Hello, world!"); - //Logging and env variables env::set_var("RUST_LOG", "info"); env_logger::init(); - // dotenv::dotenv().ok(); - // Load Configurations let settings = Settings::new().unwrap_or_else(|err| { log::error!("Failed to load settings: {}", err); panic!("Failed to load settings: {}", err); }); log::info!("Starting up"); log::info!("Loading configuration {:?}", settings); - //create table if not exist #[cfg(feature = "server")] use crate::database::client::create_table_if_not_exist; create_table_if_not_exist().unwrap(); @@ -59,12 +51,9 @@ async fn main() { config = config.addr(std::net::SocketAddr::from(([0, 0, 0, 0], 8080))); } -// Launch the app with the custom menu let site = std::thread::spawn(|| LaunchBuilder::new().with_cfg(config).launch(App)); - //let site = std::thread::spawn(|| launch(App)); log::info!("Started logger"); println!("Started print"); - //let _ = web::exweb::site(); site.join().unwrap(); } From eb6968c083111498e7f9bac12ca174e19091e32f Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 22:16:19 +0200 Subject: [PATCH 11/13] Move dioxus-cli installation before copying source files in Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 9319205..d6437c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,8 @@ FROM rust:1.77.1 as builder WORKDIR /app +RUN cargo install dioxus-cli@0.5.0 COPY Cargo.toml Cargo.lock ./ COPY src ./src -RUN cargo install dioxus-cli@0.5.0 RUN dx build --platform fullstack --release FROM rust:1.77.1 From ee62176b0e682895bd91869615ed3c99b2a99a47 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 22:35:08 +0200 Subject: [PATCH 12/13] Move dioxus-cli installation before copying source files in Dockerfile --- src/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 380d758..5061b41 100644 --- a/src/main.rs +++ b/src/main.rs @@ -42,7 +42,6 @@ async fn main() { #[cfg(feature = "server")] use crate::database::client::create_table_if_not_exist; create_table_if_not_exist().unwrap(); - //working tokio stuff tokio::task::spawn(services::scheduler::run_scheduler(settings.clone())); let mut config = dioxus::fullstack::Config::new(); From 641dc7c98df6713e65a8239dccd923146c109f71 Mon Sep 17 00:00:00 2001 From: Jacob Morgan Date: Sun, 14 Apr 2024 22:42:09 +0200 Subject: [PATCH 13/13] Enable Docker build caching for Slackwatch workflow --- .github/workflows/slackwatch.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/slackwatch.yml b/.github/workflows/slackwatch.yml index 6b1fa2c..31b84d0 100644 --- a/.github/workflows/slackwatch.yml +++ b/.github/workflows/slackwatch.yml @@ -34,3 +34,5 @@ jobs: file: ./Dockerfile push: true tags: ghcr.io/slackspace-io/slackwatch:preview,ghcr.io/slackspace-io/slackwatch:${{ github.sha }} + cache-from: type=registry,ref=ghcr.io/slackspace-io/slackwatch:pr-build-cache + cache-to: type=registry,ref=ghcr.io/slackspace-io/slackwatch:pr-build-cache,mode=max