Add reusable rainix-copy-artifacts workflow (no prelude)#201
Conversation
A shared workflow for the regenerate-and-assert-clean artifact check that rainlang, rain.math.float, and rain.metadata each duplicate. Centralizes the boilerplate + the resilience fixes (Cachix substitution, 8G GC cap) and the clean-build determinism gate. Repo-specific bits are convention/guarded, no inputs: - soldeer install runs if soldeer.lock exists - a consumer that needs pre-build generation exposes a .#prelude flake app; the step runs it only if defined (real failures still surface) - BuildPointers.sol / CopyArtifacts.sol steps run only if those scripts exist Consumers replace their whole copy-artifacts.yaml with a one-line caller. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Committing the generated artifacts is the whole point of copy-artifacts — it removes the need to run a prelude in CI. The job rebuilds from committed sources and asserts the committed artifacts still match; it does not regenerate meta inputs. No inputs; repo-specific steps stay guarded by hashFiles.
|
Warning Review limit reached
More reviews will be available in 42 minutes and 1 second. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Same fix as #202 — the store-watching daemon corrupts the nix DB alongside cache-nix-action.
|
@coderabbitai assess this PR size classification for the totality of the PR with the following criterias and report it in your comment: S/M/L PR Classification Guidelines:This guide helps classify merged pull requests by effort and complexity rather than just line count. The goal is to assess the difficulty and scope of changes after they have been completed. Small (S)Characteristics:
Review Effort: Would have taken 5-10 minutes Examples:
Medium (M)Characteristics:
Review Effort: Would have taken 15-30 minutes Examples:
Large (L)Characteristics:
Review Effort: Would have taken 45+ minutes Examples:
Additional Factors to ConsiderWhen deciding between sizes, also consider:
Notes:
|
A shared reusable for the regenerate-from-committed-sources and assert-clean artifact check that rainlang, rain.math.float, and rain.metadata each duplicate. Centralizes the boilerplate + the resilience fixes (Cachix substitution, 8G GC cap) + the clean-build determinism gate.
No prelude/codegen step — by design. Committing the generated artifacts (meta, pointers, abi) is the whole point of copy-artifacts: it removes the need to run a prelude in CI. This job rebuilds from the committed sources and asserts the committed artifacts still match; it does not regenerate meta inputs.
No inputs — repo-specific steps are guarded by
hashFiles:forge soldeer installifsoldeer.lockexistsforge script ./script/BuildPointers.solif it existsforge script ./script/CopyArtifacts.sol --ffiif it existsforge build,forge fmt, thengit diff --exit-codeConsumers replace their entire
copy-artifacts.yamlwith:(reusable runs in the caller's checkout, so
./script/*.solresolve to the consumer's;secrets: inheritcarriesCACHIX_AUTH_TOKEN).Rollout: rainlang first (folded into its copy-artifacts fix), then rain.math.float / rain.metadata.
🤖 Generated with Claude Code