Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
163 changes: 146 additions & 17 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI

on:
push:
branches: [ "main", "release/**" ]
branches: [ "main", "release/**", "codex/deploy" ]
pull_request:
branches: [ "main" ]

Expand All @@ -14,8 +14,8 @@ env:
RUST_BACKTRACE: 1
RUST_LIB_BACKTRACE: 1

# 9 parallel jobs. See doc/working/test.md § "Current CI Test Design"
# for the assignment rule and how to add new test tasks.
# 10 parallel jobs. See doc/working/test.md § "Current CI Test Design"
# for the component assignment rule and how to add new test tasks.
jobs:
Lint:
runs-on: ubuntu-latest
Expand Down Expand Up @@ -83,7 +83,16 @@ jobs:
with:
name: runtime-cpp-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
Expand All @@ -108,8 +117,8 @@ jobs:
uses: Swatinem/rust-cache@v2
- name: Clean env
run: pixi run clean-env
- name: Run unit tests
run: pixi run test-unit
- name: Run core component tests
run: pixi run test-core
- name: Capture runner state on failure
if: failure()
run: |
Expand All @@ -127,12 +136,21 @@ jobs:
with:
name: runtime-unit-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7

ServerTests:
StorageTests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
Expand All @@ -154,8 +172,8 @@ jobs:
run: pixi run clean-env
- name: Build C++ libs (crowdb-diskio subprocess)
run: pixi run build-cpp
- name: Run server tests
run: pixi run test-server
- name: Run storage component tests
run: pixi run test-storage
- name: Capture runner state on failure
if: failure()
run: |
Expand All @@ -171,9 +189,73 @@ jobs:
if: failure()
uses: actions/upload-artifact@v4
with:
name: runtime-server-${{ github.run_attempt }}
name: runtime-storage-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
- name: Clean subprocesses
if: always()
run: pixi run clean-env

AccessTests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Free disk space
run: |
sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /usr/local/.ghcup /opt/hostedtoolcache
sudo apt-get clean
df -h /
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: latest
- uses: Swatinem/rust-cache@v2
- name: Clean env
run: pixi run clean-env
- name: Run access component tests
run: pixi run test-access
- name: Capture runner state on failure
if: failure()
run: |
echo "=== Listening ports ==="
ss -tlnp 2>/dev/null || true
echo "=== Process list (crowdb) ==="
ps aux | grep -E 'crowdb|cargo' | grep -v grep || true
echo "=== Disk space ==="
df -h
echo "=== CROWDB runtime files ==="
find .crowdb-runtime -maxdepth 4 -type f -print 2>/dev/null || true
- name: Upload test logs on failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: runtime-access-${{ github.run_attempt }}
path: |
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
Expand Down Expand Up @@ -220,7 +302,16 @@ jobs:
with:
name: runtime-s3-e2e-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
Expand Down Expand Up @@ -251,7 +342,16 @@ jobs:
with:
name: runtime-iceberge2e-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
target/iceberg-rck/open-api/build/reports/tests/
target/iceberg-rck/open-api/build/test-results/
include-hidden-files: true
Expand Down Expand Up @@ -284,7 +384,16 @@ jobs:
with:
name: runtime-icebergsdk-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
${{ runner.temp }}/iceberg-rck/open-api/build/reports/tests/
${{ runner.temp }}/iceberg-rck/open-api/build/test-results/
include-hidden-files: true
Expand Down Expand Up @@ -335,7 +444,17 @@ jobs:
with:
name: runtime-console-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
app/crowdb-web/ui/e2e/test-results/
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
Expand Down Expand Up @@ -387,7 +506,16 @@ jobs:
with:
name: runtime-ui-${{ github.run_attempt }}
path: |
.crowdb-runtime/
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
include-hidden-files: true
if-no-files-found: ignore
retention-days: 7
Expand All @@ -399,6 +527,7 @@ jobs:
path: |
app/crowdb-web/ui/playwright-report
app/crowdb-web/ui/test-results
app/crowdb-web/ui/e2e/test-results
retention-days: 7
- name: Clean subprocesses
if: always()
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/iceberg-rust-sdk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,17 @@ jobs:
uses: actions/upload-artifact@v4
with:
name: runtime-iceberg-rust-sdk-${{ github.run_attempt }}
path: .crowdb-runtime/
path: |
.crowdb-runtime/**/log/**
.crowdb-runtime/**/*.log
.crowdb-runtime/**/*.log.*
.crowdb-runtime/**/*.out
.crowdb-runtime/**/*.toml
.crowdb-runtime/**/*.json
.crowdb-runtime/**/*.png
.crowdb-runtime/**/*.md
.crowdb-runtime/**/*.html
.crowdb-runtime/**/trace.zip
if-no-files-found: ignore
retention-days: 7
- name: Clean subprocesses
Expand Down
32 changes: 24 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

# Changelog

CROWDB is preparing `0.2.2`. This is a development version, not a
CROWDB is developing `0.3.0`. This is a development version, not a
production release or a compatibility promise.

CROWDB does not yet maintain compatibility for persisted data, WAL, metadata,
Expand All @@ -21,17 +21,33 @@ policy.

## [Unreleased]

### 0.2.2 preparation
The following changes are being prepared for `0.3.0`.

- Build service binaries before stream and console acceptance tests in CI.
- Wait for stopped KV children before deleting console workspaces during reset.
### Added

### 0.2.1 preparation
- Dataset access support with namespace, manifest, cursor, retention, transport,
and publication primitives.
- A Python dataset client surface for iterating dataset records.

- S3 and Iceberg own separate chunk types, storage policies, and write pools
### Changed

- S3 and Iceberg use separate chunk types, storage policies, and write pools
behind one access-server process.
- Explicit single-node test and three-node production protection profiles,
with strip-level mirror and EC I/O and repairable degraded EC placement.
- Single-node and three-node profiles now make storage protection explicit,
including strip-level mirror and EC I/O with repairable degraded placement.

### Internal

- Local and CI tests are organized around component tasks rather than package-
level Pixi tasks.

## [0.2.2] - 2026-10-06

### Fixed

- CI builds service binaries before stream and console acceptance tests.
- Console workspace reset waits for stopped KV children before deleting runtime
state.

## [0.1.0]

Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Thank you for contributing to CROWDB.

## Development status

CROWDB is under active development at version `0.2.2`. It has not reached
CROWDB is under active development at version `0.3.0`. It has not reached
alpha, is not recommended for production, and must be tested with disposable
data. Compatibility is not yet maintained for persisted data, WAL, metadata, or
other on-disk formats. A change may deliberately replace an unreleased format
Expand Down
Loading
Loading