diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 98222a3..c0e514f 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -67,6 +67,16 @@ jobs: # --no-run: the workflow compiled every test target without running them, # which catches a test that no longer builds without paying for the suite. - run: cargo test --workspace --locked --no-run + # The release profile, on main only. It is the profile the image is + # built with, and it fails in ways the dev profile does not: v2026.9.24 + # was tagged on a commit whose CI was green and whose release build + # could not compile the scim crate at all. A few minutes per merge is + # cheaper than finding that out from a tag, which throws away a + # multi-architecture build and leaves a version half-cut. + # + # Pull requests stay on the dev profile, where the wait is worth less. + - if: github.event_name == 'push' + run: cargo build -p inbuxa --locked --release # Keep the cache from growing without bound: past 60 GB the target dir # is dropped and the next build starts cold. The download cache stays. # Two builds (dev + test profiles) already fill ~22 GB, so the limit diff --git a/crates/scim/src/lib.rs b/crates/scim/src/lib.rs index 8b113a6..8212811 100644 --- a/crates/scim/src/lib.rs +++ b/crates/scim/src/lib.rs @@ -4,6 +4,14 @@ * SPDX-License-Identifier: AGPL-3.0-only */ +// The release profile computes the layout of this crate's async fn bodies in +// one go, and the deepest of them -- writable_domain, which awaits through +// the directory, the store and the JMAP registry -- takes rustc past its +// default query depth. The dev profile does not get that far, so the failure +// only appears in a release build: CI was green and the tag that started a +// release was not. +#![recursion_limit = "256"] + //! SCIM 2.0 provisioning (`docs/spec/features/scim.md`). inbuxa-server is the //! service provider: an identity provider pushes users and groups to //! `/scim/v2`, and each request becomes the same `x:Account` reads and