Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
229bb68
[gateway] Add the Gateway runtime, common HTTP layer, and lifecycle
beryllw Aug 12, 2026
87a54f4
[gateway] Add the Gateway test suites: HTTP contract, process, and cl…
beryllw Aug 12, 2026
1602fda
[build] Add gateway CI gates: build, lint, OpenAPI drift, no-skip E2E
beryllw Aug 12, 2026
c5364f5
[gateway] Correct the MSRV to 1.88, reject overflowing durations, and…
beryllw Aug 12, 2026
67f73f8
[gateway] Note the follow-ups for source-tree integration testing and…
beryllw Aug 12, 2026
6635862
[gateway] Bound every configured duration and guard the request deadl…
beryllw Aug 13, 2026
403ceb4
[gateway] Unify the error contract and harden the runtime foundation
beryllw Aug 13, 2026
012d60f
[gateway] Check in the dependency license inventory
beryllw Aug 14, 2026
cbd4ab8
[gateway] Exclude fluss-gateway from the RAT scan like fluss-rust
beryllw Aug 14, 2026
06a9e08
[build] Consolidate the gateway CI into gateway-ci.yml and restore th…
beryllw Aug 14, 2026
8ee18e6
[gateway] Defer the dockerized e2e harness to the FlussBackend wiring…
beryllw Aug 14, 2026
aca3309
[gateway] Header timeout, /ready, deadline grace, overlap validation
beryllw Aug 15, 2026
3db46e5
[gateway] Serve HTTP/1 only and keep the accept loop alive on resourc…
beryllw Aug 17, 2026
5ce39b5
[gateway] Harden the listener logging, features, and shutdown wait
beryllw Aug 17, 2026
7f99a30
[gateway] Ban the HTTP/2 stack and answer handler panics with 500
beryllw Aug 17, 2026
96a522d
[gateway] Re-run CI after the GitHub Actions 429 setup failures
beryllw Aug 18, 2026
23dd090
[gateway] Join in-flight connections and lock the CI dependency graph
beryllw Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 29 additions & 12 deletions .github/workflows/gateway-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,8 @@
# specific language governing permissions and limitations
# under the License.

# CI gates for the fluss-gateway module. The gateway is its own Cargo workspace,
# so it gets its own workflow: triggering on gateway changes never builds the
# fluss-rust workspace, and fluss-rust changes never build the gateway. `uses:`
# step inputs stay relative to the repository root.
# Gateway-only CI: gateway changes never build the fluss-rust workspace and vice versa.
# `uses:` step inputs are relative to the repository root.
name: Gateway CI

on:
Expand Down Expand Up @@ -62,19 +60,29 @@ jobs:
with:
workspaces: fluss-gateway

# Without `--locked` Cargo rewrites a stale lockfile in the CI workspace, and the run would
# validate a dependency graph the repository does not contain.
- name: Build
run: cargo build --all-targets
run: cargo build --locked --all-targets

- name: Unit Test
run: cargo test --all-targets
run: cargo test --locked --all-targets
env:
RUST_LOG: DEBUG
RUST_BACKTRACE: full

- name: OpenAPI drift check
run: |
cargo test --locked --lib protocol::rest::openapi::tests::export_checked_in_document -- --ignored --exact
git diff --exit-code openapi.yaml

- name: OpenAPI external validation
run: npx --yes @redocly/cli@1 lint openapi.yaml

msrv:
name: "Gateway MSRV (1.88)"
# The rust-toolchain.toml floats to stable, so a plain build never catches use of features newer
# than the declared rust-version. Pin the MSRV explicitly here; `+toolchain` overrides the file.
# rust-toolchain.toml floats to stable, so a plain build never catches features newer
# than the declared rust-version; `+toolchain` overrides the file here.
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
Expand All @@ -89,7 +97,7 @@ jobs:
workspaces: fluss-gateway

- name: Check on the declared MSRV
run: cargo +1.88.0 check --all-targets
run: cargo +1.88.0 check --locked --all-targets

check-license-and-formatting:
name: "Gateway License and Formatting Check"
Expand All @@ -108,7 +116,16 @@ jobs:
tool: cargo-deny@0.14.22

- name: Check dependency licenses (Apache-compatible)
run: cargo deny check licenses
run: cargo deny --locked check licenses

- name: Check banned dependencies (HTTP/2 stack stays out)
run: cargo deny --locked check bans

# The inventory ships with the source release, so a stale one is worse than none.
- name: Dependency inventory drift check
run: |
cargo deny --locked list -f tsv -t 0.6 > DEPENDENCIES.rust.tsv
git diff --exit-code DEPENDENCIES.rust.tsv

- name: Rust Cache
uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
Expand All @@ -119,9 +136,9 @@ jobs:
run: cargo fmt --all -- --check

- name: Clippy
run: cargo clippy --all-targets -- -D warnings
run: cargo clippy --locked --all-targets -- -D warnings

- name: Rustdoc
run: cargo doc --no-deps
run: cargo doc --locked --no-deps
env:
RUSTDOCFLAGS: -D warnings
Loading
Loading