Skip to content

Conversation

@rustatian
Copy link
Member

@rustatian rustatian commented May 1, 2025

Reason for This PR

  • release v2025.1.0

Description of Changes

  • Add v2025 tests
  • Update plugins in templates
  • Update velox.toml

License Acceptance

By submitting this pull request, I confirm that my contribution is made under the terms of the MIT license.

PR Checklist

[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

  • All commits in this PR are signed (git commit -s).
  • The reason for this PR is clearly provided (issue no. or explanation).
  • The description of changes is clear and encompassing.
  • Any required documentation changes (code and docs) are included in this PR.
  • Any user-facing changes are mentioned in CHANGELOG.md.
  • All added/changed functionality is tested.

Summary by CodeRabbit

  • New Features

    • Added support for the 2025 version of the Velox module, including updated templates and configuration options.
  • Chores

    • Updated all version references from v2024 to v2025 across the application, including workflows, Dockerfile, configuration, and dependencies.
    • Upgraded the GitHub client dependency to the latest version.
    • Bumped plugin and component versions in the configuration file for improved compatibility.
  • Tests

    • Enhanced and expanded test coverage to support both v2024 and v2025 versions, improving test structure and maintainability.

Signed-off-by: Valery Piashchynski <[email protected]>
@rustatian rustatian added the C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc.. label May 1, 2025
@rustatian rustatian requested a review from Copilot May 1, 2025 08:28
@coderabbitai
Copy link
Contributor

coderabbitai bot commented May 1, 2025

Warning

Rate limit exceeded

@rustatian has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 24 minutes and 11 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 65afef2 and bb0288f.

📒 Files selected for processing (1)
  • builder/builder.go (5 hunks)

Walkthrough

This update migrates the project from version v2024 to v2025 across all relevant code, configuration, and workflow files. It updates import paths, build flags, Dockerfile, CI/CD workflow references, and the configuration file to use the new version. New template compilation logic and test coverage for v2025 are introduced, including support for new plugin and module versioning in templates and tests. The Go module path and external dependencies, such as the GitHub client library, are also upgraded. No changes were made to the core control flow or exported public APIs beyond versioning.

Changes

File(s) Change Summary
.github/workflows/linux.yml, .github/workflows/release.yml Updated Velox CLI install and build/release steps from v2024 to v2025; updated Docker image tags.
Dockerfile Changed builder alias to uppercase; updated LDFLAGS to include both v2024 and v2025 references.
go.mod Changed module path to v2025; upgraded go-github from v61.0.0 to v71.0.0.
velox.toml Updated roadrunner and plugin version refs from v2024 to v2025 and incremented plugin versions.
config.go Added V2025 constant for versioning.
cmd/vx/main.go, internal/cli/build/build.go, internal/cli/root.go Updated all Velox and subpackage import paths from v2024 to v2025.
builder/builder.go Updated imports to v2025; added support for v2025 in template compilation logic.
builder/templates/entry.go Added CompileTemplateV2025 function for new template compilation.
builder/templates/templateV2025.go New file: defines GoModTemplateV2025, PluginsTemplateV2025, and compilation function for v2025.
builder/builder_test.go Refactored tests for getDepsReplace with helper and version parameterization; added tests for v2025.
builder/template_test.go Added TestCompileV2025; kept and renamed TestCompileV2024 for compatibility.
github/parse_test.go, github/pool.go, github/repo.go, Updated Velox and GitHub client imports to v2025 and v71 respectively.
gitlab/repo.go Updated Velox import to v2025.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CLI (vx)
    participant Builder
    participant Templates

    User->>CLI (vx): Run build command (now using v2025)
    CLI (vx)->>Builder: Initiate Build (with v2025)
    Builder->>Templates: CompileTemplateV2025 / CompileGoModTemplate2025
    Templates-->>Builder: Generated plugins.go / go.mod for v2025
    Builder-->>CLI (vx): Build output (v2025 compatible)
    CLI (vx)-->>User: Build complete
Loading

Suggested labels

R-stable

Poem

🐇
Leap to the future, the code hops anew,
From twenty-twenty-four to twenty-twenty-five we flew!
Plugins and modules, all fresh and bright,
Templates and tests in versioned delight.
With Docker and workflows all in line,
This rabbit says, "Our code’s divine!"
🥕✨

✨ Finishing Touches
  • 📝 Generate Docstrings

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.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR updates the RoadRunner project for the v2025.1.0 release. It systematically updates version references from v2024 to v2025 across configuration, code, build scripts, and tests.

  • Update version references in velox.toml, workflows, and imports.
  • Add new v2025 templates and test cases.
  • Update dependency versions (e.g. upgrading go-github from v61 to v71) to support the new release.

Reviewed Changes

Copilot reviewed 17 out of 19 changed files in this pull request and generated no comments.

Show a summary per file
File Description
velox.toml Updated version and plugin references to v2025.1.0 and v5.1.7.
internal/cli/root.go & build/build.go Updated import paths from v2024 to v2025.
gitlab/repo.go, github/repo.go, pool.go Updated dependency references and import paths for v2025.
config.go Added a new constant for v2025 version.
cmd/vx/main.go Updated CLI import paths to v2025.
builder/templates/* Added and updated templates for v2025 support.
builder/template_test.go Added tests for v2025 templates; refactored expected output.
builder/builder_test.go & builder/builder.go Updated builder tests and ldflags for v2025 compatibility.
.github/workflows/release.yml & linux.yml Updated workflow scripts for building and releasing v2025.
Files not reviewed (2)
  • Dockerfile: Language not supported
  • go.mod: Language not supported
Comments suppressed due to low confidence (2)

github/repo.go:16

  • Verify that the upgrade to go-github/v71 is fully compatible with the project’s usage, as this major version change might include breaking API modifications.
"github.com/google/go-github/v71/github"

builder/builder.go:32

  • Ensure that the updated ldflags string with the new v2025 paths is consistently applied across all build configurations and documentation.
ldflags        string = "-X github.com/roadrunner-server/roadrunner/v2025/internal/meta.version=%s -X github.com/roadrunner-server/roadrunner/v2025/internal/meta.buildTime=%s"

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🔭 Outside diff range comments (1)
builder/builder.go (1)

227-240: 💡 Verification agent

🧩 Analysis chain

Consider updating default branch version in validateModule function.

The validateModule function currently returns velox.V2024 for the "master" branch. Since you're migrating to v2025, you might want to update this to return velox.V2025 if that's now the default version.


🏁 Script executed:

#!/bin/bash
# Check if other parts of the codebase indicate which version should be the default

# Look for default version references
rg -A 1 -B 1 "default.*(version|branch)" --glob "!target/" --glob "!vendor/" --glob "!*.md"

# Specifically check for master branch references
rg "master.*v202[45]" --glob "!target/" --glob "!vendor/" --glob "!*.md"

Length of output: 296


🏁 Script executed:

#!/bin/bash
# Display the import block in builder/builder.go to see where velox is coming from
sed -n '1,50p' builder/builder.go | sed -n '/import/,/)/p'

# Search for all version constants in the velox package
rg -n "V202[0-9]" --glob "!vendor/" --glob "!target/"

Length of output: 3971


Update default branch version in validateModule to V2025

The validateModule function still returns velox.V2024 for "master", but the code now imports the v2025 package and the default branch should align with v2025:

• File builder/builder.go: in validateModule, change

-   return velox.V2024, nil
+   return velox.V2025, nil

Ensure any tests or documentation that rely on the default (“master”) version are updated accordingly.

🧹 Nitpick comments (2)
config.go (1)

13-13: Introduce V2025 constant
A new V2025 constant has been added to support the upcoming release. Confirm that any switch statements, builders, or templates that rely on version constants have been updated to include V2025.

builder/builder_test.go (1)

144-230: Consider further test refactoring to reduce duplication.

While the refactoring to use a helper function is good, there's still duplication between V2024 and V2025 test functions. Consider creating a table-driven test or a test generator function that could further reduce duplication.

Here's an example approach:

+ func TestBuilderGetDepsReplace(t *testing.T) {
+     testCases := []struct {
+         name           string
+         version        string
+         modulePath     string
+         expectedCount  int
+         expectedReplacements map[string]string
+     }{
+         {"multipleAbsolute_V2024", "v2024.1.0", "/tmp/dummy_multiple_absolute", 2, map[string]string{
+             dummyPackageOne: "/tmp/dummy_one",
+             dummyPackageTwo: "/tmp/dummy_two",
+         }},
+         {"multipleRelative_V2024", "v2024.1.0", "/tmp/dummy_multiple_relative", 2, map[string]string{
+             dummyPackage:               "/tmp/dummy_multiple_relative/something",
+             "github.com/dummy/another": "/another",
+         }},
+         // Add all other test cases...
+     }
+     
+     for _, tc := range testCases {
+         t.Run(tc.name, func(t *testing.T) {
+             b := setup(tc.version)
+             defer clean(b)
+             runGetDepsReplaceTest(t, b, tc.modulePath, tc.expectedCount, tc.expectedReplacements)
+         })
+     }
+ }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 16cf55f and 65afef2.

⛔ Files ignored due to path filters (1)
  • go.sum is excluded by !**/*.sum
📒 Files selected for processing (18)
  • .github/workflows/linux.yml (1 hunks)
  • .github/workflows/release.yml (2 hunks)
  • Dockerfile (2 hunks)
  • builder/builder.go (4 hunks)
  • builder/builder_test.go (4 hunks)
  • builder/template_test.go (3 hunks)
  • builder/templates/entry.go (1 hunks)
  • builder/templates/templateV2025.go (1 hunks)
  • cmd/vx/main.go (1 hunks)
  • config.go (1 hunks)
  • github/parse_test.go (1 hunks)
  • github/pool.go (1 hunks)
  • github/repo.go (1 hunks)
  • gitlab/repo.go (1 hunks)
  • go.mod (1 hunks)
  • internal/cli/build/build.go (1 hunks)
  • internal/cli/root.go (1 hunks)
  • velox.toml (3 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (5)
builder/templates/entry.go (1)
builder/templates/templateV2025.go (1)
  • PluginsTemplateV2025 (46-69)
builder/builder.go (3)
config.go (1)
  • V2025 (13-13)
builder/templates/entry.go (1)
  • CompileTemplateV2025 (84-96)
builder/templates/templateV2025.go (1)
  • CompileGoModTemplate2025 (72-79)
builder/templates/templateV2025.go (1)
builder/templates/entry.go (1)
  • Template (22-26)
builder/template_test.go (1)
builder/templates/entry.go (3)
  • Template (22-26)
  • Entry (9-20)
  • CompileTemplateV2025 (84-96)
builder/builder_test.go (2)
builder/builder.go (2)
  • Builder (37-44)
  • NewBuilder (46-55)
modulesInfo.go (1)
  • ModulesInfo (13-22)
🔇 Additional comments (32)
gitlab/repo.go (1)

14-14:

Details

✅ Verification successful

Updated Velox import to v2025
The import path has been bumped to reference velox/v2025, aligning with the new release. Ensure that the go.mod module path and all other import references have been updated accordingly to avoid compilation errors.


🏁 Script executed:

#!/bin/bash
# Verify go.mod module path and no lingering v2024 imports
rg "^module " -n go.mod
rg "velox/v2024" -n .

Length of output: 97


Verified Velox upgrade to v2025 – no lingering v2024 references
The go.mod module path is now github.com/roadrunner-server/velox/v2025 and a repository-wide search shows no remaining velox/v2024 imports. LGTM.

github/parse_test.go (1)

7-7: Align test import with v2025
The test now imports velox/v2025, matching the module version bump in the code. This keeps the tests in sync with the new release.

github/repo.go (1)

16-17:

Details

❓ Verification inconclusive

Upgrade GitHub client to v71 & Velox import to v2025
You've bumped the Go-GitHub client from v61 to v71 and updated the Velox import to v2025. Please verify there are no breaking changes in the GitHub client (e.g., method signatures or behavior changes) and confirm downstream code still functions correctly.


🏁 Script executed:

#!/bin/bash
# Find all go-github imports to ensure consistency
rg "google/go-github" -n .

Length of output: 409


All Go-GitHub imports updated to v71
Imports in go.mod, go.sum, github/repo.go (line 16) and github/pool.go (line 14) now point to github.com/google/go-github/v71. Please verify there are no breaking API changes between v61 and v71 (method signatures, behavior, etc.), update any affected calls, and run the full test suite to confirm downstream code still functions as expected.

You can re-run this to confirm you’ve caught all import sites:

#!/bin/bash
rg "google/go-github/v71" -n .
github/pool.go (1)

14-15:

Details

❓ Verification inconclusive

Upgrade GitHub client to v71 & Velox import to v2025
Mirroring github/repo.go, the Go-GitHub client and Velox import paths have been updated. Ensure the concurrent processing logic in processor is unaffected by these dependency upgrades.


🏁 Script executed:

#!/bin/bash
# Verify uniform import updates across the repo
rg "github.com/google/go-github/v71" -n .
rg "roadrunner-server/velox/v2025" -n .

Length of output: 1957


Uniform Dependency Import Upgrade Verified
All import references to github.com/google/go-github/v71 and github.com/roadrunner-server/velox/v2025 have been consistently updated in go.mod, go.sum and across all .go files (e.g. github/repo.go, github/pool.go, gitlab/repo.go, internal/cli/, builder/, etc.).
• Please confirm there are no regressions in the concurrent processing logic within the processor package after these upstream version bumps.

internal/cli/build/build.go (1)

7-10: Bump import paths to v2025.
The Velox, builder, GitHub, and GitLab package imports have been updated from v2024 to v2025, ensuring consistency with the new release.

cmd/vx/main.go (1)

8-8: Update CLI import path to v2025.
The import of the internal CLI package now points to version v2025, aligning the main executable with the updated module.

.github/workflows/linux.yml (1)

81-81: Use v2025 CLI in CI workflow.
The go install step has been updated to fetch the Velox CLI from v2025, matching the version bump across the project.

internal/cli/root.go (1)

8-11: Align root imports with v2025.
The root CLI command now imports velox/v2025 and its subpackages (build, version, logger) to reflect the new module version.

go.mod (1)

1-1: Upgrade module version and GitHub client dependency.
The module path has been bumped to v2025 and github.com/google/go-github has been updated to v71.0.0 to support the latest API.

Also applies to: 9-9

.github/workflows/release.yml (2)

66-67: LGTM: Successfully updated linker flags to point to v2025

The module path was correctly updated from v2024 to v2025 in the linker flags, which ensures the binary will have the correct version information embedded in it.


167-173: LGTM: Docker image tags properly updated

Docker image tags have been appropriately updated from 2024.3 to 2025.1 for both the Docker Hub and GitHub Container Registry, aligning with the version bump in this release.

Dockerfile (2)

3-3: Style consistency: Builder stage syntax changed to uppercase

The builder alias syntax was changed from lowercase as builder to uppercase AS builder. Both are valid in Dockerfile syntax, though uppercase is more common in official documentation.


15-16: LGTM: Successfully updated linker flags for v2025

The module path in the linker flags was correctly updated to point to v2025, ensuring version information is properly embedded in the binary.

builder/templates/entry.go (1)

84-96: LGTM: Added new compile function for v2025 templates

The new CompileTemplateV2025 function follows the same pattern as existing template compilation functions and allows the builder to generate code for the v2025 version. The implementation is consistent with the project patterns.

velox.toml (2)

2-2: LGTM: Main roadrunner reference updated to v2025.1.0

The main roadrunner component version has been correctly updated from v2024.3.5 to v2025.1.0.


21-182: LGTM: Plugin versions updated appropriately

All plugin versions have been bumped to newer compatible versions. Most plugins were updated from v5.1.6 to v5.1.7, with some exceptions for plugins that required different version bumps (e.g., amqp to v5.2.1, grpc to v5.2.1, http to v5.2.6).

The updates maintain compatibility while ensuring all plugins work with the new v2025.1.0 release.

builder/template_test.go (4)

8-8: LGTM: Import path updated for v2025

The import path for the templates package was correctly updated from v2024 to v2025.


12-82: LGTM: Added constant for v2025 template output

The existing expected output constant was renamed to resV2024 and a new constant resV2025 was added. The key difference is in the imported modules for informer and resetter, which were updated from v4 to v5 in the v2025 template.


84-140: LGTM: Renamed test function for clarity

The original test function was renamed to TestCompileV2024 to clearly indicate which version of the template it's testing. This improves code readability and matches the new pattern of version-specific test functions.


142-198: LGTM: Added new test for v2025 template compilation

A new test function TestCompileV2025 was added, which tests the new CompileTemplateV2025 function. The test uses the same test data as TestCompileV2024 but validates against the new expected output. This ensures proper test coverage for the new template.

builder/builder.go (4)

16-18: LGTM: Import paths correctly updated to v2025.

The import paths have been updated from v2024 to v2025 correctly.


32-32: LGTM: Build flags properly updated.

The ldflags constant has been updated to reference the correct v2025 package path for embedding version and build time metadata.


83-87: LGTM: Template compilation switch statement correctly updated.

The switch statement has been appropriately expanded to handle the new v2025 module version, calling the corresponding template compilation function.


152-156: LGTM: Go.mod template compilation switch statement correctly updated.

The second switch statement has been properly expanded to handle v2025 module version for go.mod file generation.

builder/templates/templateV2025.go (3)

8-44: LGTM: Go.mod template correctly defined for v2025.

The Go module template is well-structured with the following notable improvements:

  • Updated to Go 1.24 with toolchain go1.24.2
  • Updated dependencies to their latest versions
  • Properly configured replacement directives
  • Added appropriate version exclusions to avoid compatibility issues

46-69: LGTM: Plugins template correctly defined for v2025.

The plugins template is correctly structured to:

  • Import the necessary plugins
  • Generate the correct container package
  • Update informer and resetter plugins to v5
  • Support dynamic listing of custom plugins

71-79: LGTM: Template compilation function implemented correctly.

The CompileGoModTemplate2025 function follows the established pattern for template compilation functions, parsing and executing the template with proper error handling.

builder/builder_test.go (5)

8-10: LGTM: Updated imports and added testify/assert.

The imports have been correctly updated to use v2025, and the testify/assert package has been added to improve test assertions.


76-87: LGTM: Setup function refactored to accept version parameter.

The setup function now accepts a version parameter, making it more flexible for testing different versions.


130-142: LGTM: Good refactoring with the helper function.

Great work extracting the common test logic into a reusable helper function. This reduces code duplication and makes the tests more maintainable.


144-185: LGTM: V2024 tests updated to use the helper function.

The V2024 tests have been properly updated to use the new helper function and assertion library, making them more concise and readable.


187-230: LGTM: V2025 tests added.

New test cases for V2025 have been properly added, ensuring test coverage for the new version.

Signed-off-by: Valery Piashchynski <[email protected]>
@rustatian rustatian merged commit 49edbc4 into master May 1, 2025
6 of 7 checks passed
@rustatian rustatian deleted the release/v2025.1.0 branch May 1, 2025 09:31
@coderabbitai coderabbitai bot mentioned this pull request Jun 14, 2025
6 tasks
@coderabbitai coderabbitai bot mentioned this pull request Aug 17, 2025
6 tasks
@coderabbitai coderabbitai bot mentioned this pull request Sep 18, 2025
6 tasks
@coderabbitai coderabbitai bot mentioned this pull request Oct 2, 2025
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc..

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants