Skip to content
This repository was archived by the owner on Sep 10, 2025. It is now read-only.

Latest commit

Β 

History

History
71 lines (55 loc) Β· 2.47 KB

File metadata and controls

71 lines (55 loc) Β· 2.47 KB

πŸŽ‰ Release Process Fixed!

Current Status

βœ… All Rust Checks Passing!

PR #349: ftl-sdk-macros v0.14.0

  • Status: Ready to merge (awaiting approval)
  • All Rust Lint checks: βœ… PASS
  • All Rust Test checks: βœ… PASS
  • Mergeable: YES

PR #348: ftl-sdk v0.14.0

  • Status: Ready to merge (awaiting approval)
  • All Rust Lint checks: βœ… PASS
  • All Rust Test checks: βœ… PASS
  • Mergeable: YES

The Fix That Worked

Simple Independent Releases (KISS)

  1. Removed all complex coordination - No linked-versions, no cargo-workspace, no extra-files
  2. Separate PRs - Each package gets its own release PR
  3. Standard semver - ftl-sdk uses ^0.11.1 for ftl-sdk-macros (current crates.io version)
  4. Independent versioning - Packages can evolve at their own pace

Release Instructions

Step 1: Merge ftl-sdk-macros PR (#349)

# Once approved
gh pr merge 349 --repo fastertools/ftl --squash

This will trigger automatic publishing to crates.io

Step 2: Update ftl-sdk dependency

After ftl-sdk-macros 0.14.0 is on crates.io:

git checkout main && git pull
git checkout -b update-macros-dep
sed -i '' 's/ftl-sdk-macros = { version = "^0.11.1"/ftl-sdk-macros = { version = "^0.14"/' sdk/rust/Cargo.toml
git add sdk/rust/Cargo.toml
git commit -m "chore: update ftl-sdk-macros to ^0.14"
git push origin update-macros-dep
gh pr create --title "chore: update ftl-sdk-macros dependency to ^0.14" \
  --body "Updates dependency to use newly published version from crates.io"

Step 3: Merge ftl-sdk PR (#348)

After the dependency update PR is merged, PR #348 will rebuild and can be merged.

Why This Works

  • No coordination needed - Just like separate repos
  • Standard Rust/Cargo practices - Nothing special or custom
  • CI passes - Because we use published crates from crates.io
  • Simple to understand - Anyone familiar with Rust knows this pattern

Lessons Learned

  1. KISS wins - Complex coordination creates more problems than it solves
  2. Standard practices exist for a reason - Rust ecosystem handles this well already
  3. Separate repos pattern works - Even in a monorepo, treat packages independently
  4. Release order matters - Dependencies must be published before dependents

Future Improvements

Once both packages are at 0.14.0 on crates.io:

  • Patch/minor updates will work automatically within semver ranges
  • Major version bumps will need dependency update PRs
  • This is completely normal and expected in the Rust ecosystem