ci: set up cargo-smart-release release workflow (mirroring hydro) - #107
Merged
Conversation
Deploying infinity with
|
| Latest commit: |
2217922
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://bf3a042f.infinity-dc7.pages.dev |
| Branch Preview URL: | https://mingwei-csr.infinity-dc7.pages.dev |
MingweiSamuel
added a commit
that referenced
this pull request
Sep 1, 2026
Sets up the release tooling for this workspace following the same
cargo-smart-release setup as hydro-project/hydro (per its RELEASING.md).
* `.github/workflows/release.yml`: new manually-dispatched Release workflow,
adapted from hydro's. Supports major/minor/patch/keep/auto bumps, optional
pre-release ids, and a dry-run mode (execute unchecked). Uses the
hydro-project-bot GitHub App token to push past branch protection, and the
pinned hydro-project fork of cargo-smart-release (rev e6f3368337a0).
* `RELEASING.md`: releasing guide adapted from hydro's, including which crates
are published and why the others are not, plus an addendum explaining why
`[patch.crates-io]` on `rig-bedrock` blocks publishing the bedrock provider.
* Crate manifests, 14 publishable crates (rap-protocol, rap-client,
rap-steering-server, rap-github-event-poller, infinity-protocol,
infinity-provider-protocol, infinity-agent-core, infinity-mcp-bridge,
infinity-rap-bridge, infinity-daemon, infinity-agent-cli, sandbox-core,
sandbox-local, sandbox-remote):
- `publish = true`, `description`, `documentation` (docs.rs), and
`repository = { workspace = true }` (new `[workspace.package]` in the root
`Cargo.toml`).
- `version = "^0.1.0"` added to all intra-workspace path dependencies
(including dev-deps between publishable crates), as required for
publishing.
- New empty `CHANGELOG.md` per crate so cargo-smart-release will generate
and track changelogs.
* `publish = false` added to crates that must not be published:
- `rig-mock`, `rap-test-servers` (test-only; left as path-only dev-deps so
cargo strips them at publish time),
- `rig-bedrock-patched` (vendored fork of crates-io `rig-bedrock`),
- `infinity-provider-bedrock` + `infinity-agent-lambda` (depend on the
patched rig-bedrock; publishing would silently drop the patches),
- `infinity-slack-bot` (deployment artifact).
Verified: `cargo metadata` resolves the workspace, `cargo package
-p rap-protocol` packages and verify-builds successfully, and all 14 crate
names are currently unclaimed on crates.io.
Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #107
MingweiSamuel
force-pushed
the
mingwei/csr
branch
from
September 1, 2026 15:48
46bc03a to
3986042
Compare
Sets up the release tooling for this workspace following the same
cargo-smart-release setup as hydro-project/hydro (per its RELEASING.md).
* `.github/workflows/release.yml`: new manually-dispatched Release workflow,
adapted from hydro's. Supports major/minor/patch/keep/auto bumps, optional
pre-release ids, and a dry-run mode (execute unchecked). Uses the
hydro-project-bot GitHub App token to push past branch protection, and the
pinned hydro-project fork of cargo-smart-release (rev e6f3368337a0).
* `RELEASING.md`: releasing guide adapted from hydro's, including which crates
are published and why the others are not, plus an addendum explaining why
`[patch.crates-io]` on `rig-bedrock` blocks publishing the bedrock provider.
* Crate manifests, 14 publishable crates (rap-protocol, rap-client,
rap-steering-server, rap-github-event-poller, infinity-protocol,
infinity-provider-protocol, infinity-agent-core, infinity-mcp-bridge,
infinity-rap-bridge, infinity-daemon, infinity-agent-cli, sandbox-core,
sandbox-local, sandbox-remote):
- `publish = true`, `description`, `documentation` (docs.rs), and
`repository = { workspace = true }` (new `[workspace.package]` in the root
`Cargo.toml`).
- `version = "^0.1.0"` added to all intra-workspace path dependencies
(including dev-deps between publishable crates), as required for
publishing.
- New empty `CHANGELOG.md` per crate so cargo-smart-release will generate
and track changelogs.
* `publish = false` added to crates that must not be published:
- `rig-mock`, `rap-test-servers` (test-only; left as path-only dev-deps so
cargo strips them at publish time),
- `rig-bedrock-patched` (vendored fork of crates-io `rig-bedrock`),
- `infinity-provider-bedrock` + `infinity-agent-lambda` (depend on the
patched rig-bedrock; publishing would silently drop the patches),
- `infinity-slack-bot` (deployment artifact).
Verified: `cargo metadata` resolves the workspace, `cargo package
-p rap-protocol` packages and verify-builds successfully, and all 14 crate
names are currently unclaimed on crates.io.
Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #107
Resolve rebase conflicts for cargo-smart-release setup; publish provider crates
Resolved the 2-sided conflicts between the release-workflow change and main
(which removed the patched rig crates in #110/#113):
- crates/infinity-agent-cli, infinity-agent-core, infinity-daemon,
infinity-rap-bridge Cargo.toml: kept main's dependency sets (no rig-core /
rig-mock, new infinity-provider-protocol deps and features) while applying
the release change's `version = "^0.1.0"` annotations to all path deps on
published crates.
- Deleted crates/rig-bedrock-patched and crates/rig-mock (deleted on main;
the release change had only marked them `publish = false`).
With the patched rig crates gone, infinity-provider-bedrock is now
publishable, so the published set grows to 16 crates:
- infinity-provider-bedrock: publish = true plus standard publishing metadata
(description, documentation, repository), version annotation on its
infinity-provider-protocol dep, and an empty CHANGELOG.md.
- infinity-provider-rig (new on main, previously untouched by the release
change): same treatment.
- infinity-mcp-bridge: added the missing version annotation to the
infinity-provider-protocol dep added on main, and to the "mock"-feature
dev-deps in infinity-agent-core / infinity-daemon / infinity-agent-cli.
infinity-agent-lambda, infinity-slack-bot, and rap-test-servers remain
`publish = false` (deployment artifacts / test-only support), unchanged from
the parent revision.
Release workflow simplification:
- release.yml: replaced the jq/manual-list branching in "Determine crates to
publish" with a single manually-maintained list of the 16 published crates
(every published crate is a primary release target, no secondaries).
- RELEASING.md: updated the "Which crates are published?" exception list
(dropped the rig entries, kept lambda/slack-bot/test-servers), updated the
local dry-run command's crate list to match release.yml, and removed the
now-obsolete `[patch.crates-io]` rig-bedrock addendum and rig-mock
references.
Verified: no conflict markers remain, `cargo metadata` parses the workspace,
16 packages are publishable and 3 report publish=[] as intended.
Co-authored-by: Infinity 🤖 <infinity@hydro.run>
PR: #107
MingweiSamuel
force-pushed
the
mingwei/csr
branch
from
September 3, 2026 20:54
3986042 to
0c46c7b
Compare
MingweiSamuel
marked this pull request as ready for review
September 3, 2026 20:57
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The new release workflow will fail because it references the hyphenated pre-id input using invalid GitHub Actions expression syntax (inputs.pre-id instead of inputs['pre-id']).
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds a workspace release process modeled after Hydro, wiring up cargo-smart-release and preparing Infinity crates for crates.io publication.
Changes:
- Introduce a manually-dispatched GitHub Actions release workflow that installs and runs a pinned
cargo-smart-release. - Add a
RELEASING.mdguide describing the dry-run and execute release process, plus common failure modes and fixes. - Prepare crates for publishing by adding package metadata,
publishflags, and versioned intra-workspace dependencies; add per-crateCHANGELOG.mdplaceholders.
File summaries
| File | Description |
|---|---|
| RELEASING.md | New release runbook for operating the cargo-smart-release-based workflow. |
| Cargo.toml | Adds [workspace.package] repository metadata for inheritance by member crates. |
| .github/workflows/release.yml | New workflow_dispatch “Release” workflow to run cargo smart-release and gate on log warnings. |
| crates/rap-protocol/Cargo.toml | Marks crate publishable and adds crates.io metadata. |
| crates/rap-protocol/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/rap-client/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/rap-client/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/rap-steering-server/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/rap-steering-server/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/rap-github-event-poller/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/rap-github-event-poller/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-protocol/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/infinity-protocol/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-provider-protocol/Cargo.toml | Marks crate publishable and adds crates.io metadata. |
| crates/infinity-provider-protocol/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-provider-bedrock/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/infinity-provider-bedrock/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-provider-rig/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/infinity-provider-rig/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-agent-core/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/infinity-agent-core/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-mcp-bridge/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/infinity-mcp-bridge/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-rap-bridge/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/infinity-rap-bridge/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-daemon/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps (incl. dev-deps). |
| crates/infinity-daemon/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-agent-cli/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps (incl. dev-deps). |
| crates/infinity-agent-cli/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/sandbox-core/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/sandbox-core/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/sandbox-local/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps (incl. dev-deps). |
| crates/sandbox-local/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/sandbox-remote/Cargo.toml | Marks crate publishable and adds crates.io metadata + versioned path deps. |
| crates/sandbox-remote/CHANGELOG.md | Adds empty changelog placeholder for smart-release generation/tracking. |
| crates/infinity-agent-lambda/Cargo.toml | Explicitly marks crate as non-publishable (publish = false). |
| crates/infinity-slack-bot/Cargo.toml | Explicitly marks crate as non-publishable (publish = false). |
Review details
Suppressed comments (1)
.github/workflows/release.yml:96
inputs.pre-idis not valid for hyphenated input names in GitHub Actions expressions; it will be parsed as subtraction and break argument construction. Useinputs['pre-id']consistently here.
--bump ${{ inputs.bump }} --bump-dependencies auto
${{ inputs.execute && '--execute' || '' }}
${{ inputs.pre-id && format('--pre-id {0}', inputs.pre-id) || '' }}
${{ steps.crates.outputs.list }}
- Files reviewed: 21/37 changed files
- Comments generated: 3
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
shadaj
approved these changes
Sep 3, 2026
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sets up the release tooling for this workspace following the same
cargo-smart-release setup as hydro-project/hydro (per its RELEASING.md).
.github/workflows/release.yml: new manually-dispatched Release workflow,adapted from hydro's. Supports major/minor/patch/keep/auto bumps, optional
pre-release ids, and a dry-run mode (execute unchecked). Uses the
hydro-project-bot GitHub App token to push past branch protection, and the
pinned hydro-project fork of cargo-smart-release (rev e6f3368337a0).
RELEASING.md: releasing guide adapted from hydro'spublish = true,description,documentation(docs.rs), andrepository = { workspace = true }(new[workspace.package]in the rootCargo.toml).version = "^0.1.0"added to all intra-workspace path dependencies(including dev-deps between publishable crates), as required for
publishing.
CHANGELOG.mdper crate so cargo-smart-release will generateand track changelogs.
publish = falseadded to crates that must not be published:rap-test-servers(test-only; left as path-only dev-deps socargo strips them at publish time),
infinity-agent-lambda(depend on thepatched rig-bedrock; publishing would silently drop the patches),
infinity-slack-bot(deployment artifact).Verified:
cargo metadataresolves the workspace,cargo package -p rap-protocolpackages and verify-builds successfully, and all 14 cratenames are currently unclaimed on crates.io.