refactor: extract object store into dedicated crate with filesystem backend (#7996)

* refactor: extract object store code into windmill-object-store crate with filesystem backend

Consolidate all object_store-dependent code from windmill-common into a new
windmill-object-store crate. Add a filesystem-backed object store implementation
using LocalFileSystem for dev/testing without cloud credentials. Includes 30
comprehensive tests covering render_endpoint, lfs_to_object_store_resource,
duckdb_connection_settings, error mapping, and filesystem-backed integration tests.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* all

* all

* all

* all

* fix: fix raw_app hardcoded path, add missing ObjectStoreResource import, and add tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* refactor: move S3ModeFormat to windmill-types, make windmill-parser-sql optional, restore debug logs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* all

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Ruben Fiszel
2026-02-18 13:24:45 +01:00
parent 05707188fe
commit a3b6fa4eb3
58 changed files with 1968 additions and 1189 deletions
+1
View File
@@ -16,6 +16,7 @@ python = ["dep:windmill-parser-py"]
[dependencies]
windmill-common = { workspace = true, default-features = false }
windmill-object-store.workspace = true
windmill-api-auth.workspace = true
windmill-queue.workspace = true
windmill-audit.workspace = true
+2 -2
View File
@@ -51,11 +51,11 @@ use windmill_common::{
runnable_settings::{
min_version_supports_runnable_settings_v0, RunnableSettings, RunnableSettingsTrait,
},
s3_helpers::upload_artifact_to_store,
scripts::{hash_script, ScriptRunnableSettingsHandle, ScriptRunnableSettingsInline},
utils::{paginate_without_limits, WarnAfterExt},
worker::CLOUD_HOSTED,
};
use windmill_object_store::upload_artifact_to_store;
use windmill_common::{
db::UserDB,
@@ -497,7 +497,7 @@ async fn create_snapshot_script(
uploaded = true;
let path = windmill_common::s3_helpers::bundle(&w_id, &hash);
let path = windmill_object_store::bundle(&w_id, &hash);
upload_artifact_to_store(
&path,
data,