Skip to content

MOD-11297: Revamp the CI pipeline, including publishing - #428

Merged
oshadmi merged 9 commits into
RedisLabsModules:masterfrom
LukeMathWalker:publishing
Mar 17, 2026
Merged

MOD-11297: Revamp the CI pipeline, including publishing#428
oshadmi merged 9 commits into
RedisLabsModules:masterfrom
LukeMathWalker:publishing

Conversation

@LukeMathWalker

@LukeMathWalker LukeMathWalker commented Sep 24, 2025

Copy link
Copy Markdown
Collaborator

For releasing, we switched to release-plz. It handles version updates in manifests, changelog maintainance and crates.io publishing, thus simplifying the overall workflow.

I'd like to avoid using an API token for publishing. We can instead rely on trusted publishing from GitHub Actions. The only prerequisite is a bit of configuration on the crates.io management panel (cc @oshadmi).

I switched the repository to using stable as the default toolchain. There does seem to be no need for nightly anywhere.

@LukeMathWalker
LukeMathWalker force-pushed the publishing branch 2 times, most recently from 4967a89 to d9165b9 Compare September 24, 2025 11:44
@LukeMathWalker
LukeMathWalker marked this pull request as ready for review September 24, 2025 11:51
Comment thread Cargo.toml
@@ -1,11 +1,19 @@
[workspace]
members = [".", "redismodule-rs-macros", "redismodule-rs-macros-internals"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is it normal to have this root member like this?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I generally prefer to have all root members in subfolders, since it makes cargo build in the root of the repository equivalent to cargo build --workspace.
But I know that some projects prefer to have the "key" package at the root level, so no strong preferences here.

on:
push:
branches:
- master

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will this support releasing multiple release integration branches, e.g., a patch for 2.X and a minor for 3.X? (we do not release from master)
Is this a limitation? release-plz/release-plz#2159

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LukeMathWalker Will this support multiple concurrent releases? ☝🏼

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When looking at the version history, this didn't seem like a requirement—from what I can see, no backports have been made in the last few years.

I would recommend the following setup to minimise complexity:

  • Use master as trunk and cut releases for the latest major from there (i.e. all 2.x.y, until 3.0.0 is released)
  • Branch out when a new major release goes out (i.e. create a v2 branch once master moves over to 3.z.w)

If we need to backport something, we merge PRs into the backport branch and use something like cargo-release with a short-lived token to cut a release. In the meantime, I can look into adding support for branches to release-plz.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once release-plz/release-plz#2438 is merged, I should be able to adjust the workflow to cut backport releases from branches.

@oshadmi

oshadmi commented Sep 25, 2025

Copy link
Copy Markdown
Contributor

@LukeMathWalker using #429 #430 I could add myself as owner of redis-module and we could try setting up Trusted Publishing

@LukeMathWalker
LukeMathWalker force-pushed the publishing branch 3 times, most recently from 629c6a9 to 89c5d76 Compare March 17, 2026 12:38
Comment thread test.sh
@@ -1,2 +1,2 @@
#!/usr/bin/env sh
cargo test --all --all-targets --no-default-features --features min-redis-compatibility-version-7-4
cargo test --all --all-targets --no-default-features --features min-redis-compatibility-version-8-0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LukeMathWalker Why are we increasing the min compatibility?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There were examples referring to min-redis-compatibility-version-8-0, but the feature flag didn't actually exist. I added it and updated test.sh to use it, since it seemed to be designed to test the latest version.
CI still tests all versions (test.sh is never invoked anywhere from what I can see, it's just a local dev helper).

Comment thread .github/workflows/ci.yml
@@ -33,35 +19,34 @@ jobs:
- [7-2, "7.2"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LukeMathWalker Should we add 8-0 here? Or unrelated to this PR?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could add it now, but since I don't see 7.4 there either, I'm inclined to defer to another PR

@oshadmi
oshadmi merged commit 065e161 into RedisLabsModules:master Mar 17, 2026
8 checks passed
@oshadmi oshadmi changed the title Revamp the CI pipeline, including publishing MOD-11297: Revamp the CI pipeline, including publishing Mar 17, 2026
@github-actions github-actions Bot mentioned this pull request May 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants