Skip to content

[RUN-4418] Upgrade Gradle 4.8.14, Groovy 4, Java 17#606

Merged
Jesus-Osuna-M merged 15 commits into
mainfrom
upgrade-gradle-8
May 8, 2026
Merged

[RUN-4418] Upgrade Gradle 4.8.14, Groovy 4, Java 17#606
Jesus-Osuna-M merged 15 commits into
mainfrom
upgrade-gradle-8

Conversation

@fdevans
Copy link
Copy Markdown
Contributor

@fdevans fdevans commented Apr 7, 2026

Summary

This PR modernizes the rundeck-cli build infrastructure by upgrading to Java 17, Gradle 8.14.4, and Groovy 4, bringing the project up to date with current LTS versions and improving long-term maintainability.

Key Changes

Build System Upgrades

  • Java: Upgraded from Java 11 to Java 17 (LTS)
  • Gradle: Upgraded from 7.x to 8.14.4
  • Groovy: Upgraded from 3.0.25 to 4.0.30
  • Spock: Upgraded from 2.1-groovy-3.0 to 2.3-groovy-4.0

Dependency Updates

  • Jackson: Updated to 2.21.2 (from 2.19.2) for improved security and compatibility
  • Testcontainers: Updated to 1.21.4 (from 1.21.3)
  • Rundeck core based on: 6.0.0
  • SnakeYAML: Updated to 2.0 (from 1.33)
  • Commons Compress: Forced to 1.28.0 to mitigate CVE-2024-25710
  • Byte Buddy: Added 1.15.11 for Spock mocking support with Groovy 4

CI/CD Updates

  • Updated all GitHub Actions workflows to use JDK 17
  • Updated CircleCI to use cimg/openjdk:17.0 image
  • Upgraded Snyk orb to 2.3.0
  • Added convert_snyk_junit.sh script for improved Snyk test reporting

Security & Verification

  • Refreshed Gradle dependency verification metadata with new checksums for all upgraded dependencies
  • Added verification-keyring.gpg for PGP signature verification
  • Updated trusted keys configuration for dependency verification
  • All dependencies verified with strict SHA-256 checksums

Code Compatibility Fixes

  • Fixed Groovy 4 compatibility issues:
    • Updated ternary operator spacing requirements
    • Fixed getProject() method in MockRdTool for proper method resolution
    • Updated ArchivesSpec interaction patterns for Spock 2.3
  • Added explicit Byte Buddy dependency for Spock's concrete class mocking

Testing

  • ✅ All unit tests pass with Gradle 8 and Groovy 4
  • ✅ Integration tests verified with Testcontainers 1.21.4
  • ✅ Build succeeds with strict dependency verification enabled
  • ✅ CircleCI and GitHub Actions workflows updated and tested

Breaking Changes

None for end users. This is purely an infrastructure upgrade that maintains API compatibility.

Migration Notes

Developers working on this project will need:

  • JDK 17 or later installed
  • Gradle wrapper will automatically download Gradle 8.14.4
  • No changes required to existing development workflows

Related Issues

This upgrade addresses technical debt and ensures the project remains compatible with modern Java ecosystems and security best practices.

fdevans added 8 commits April 6, 2026 20:14
- Target Java 17 in Gradle; use JDK 17 in CircleCI and GitHub Actions
- Move to Groovy 4 / Spock 2.3-groovy-4.0; add byte-buddy for class mocks
- Refresh Gradle wrapper and dependency verification metadata
- Fix Groovy 4 compatibility: ternary spacing, getProject() in MockRdTool, ArchivesSpec interaction
@fdevans fdevans requested review from a team and Copilot April 7, 2026 20:37
@fdevans fdevans added this to the 3.0 milestone Apr 7, 2026

This comment was marked as outdated.

@fdevans fdevans marked this pull request as draft April 14, 2026 21:31
@fdevans fdevans added the to-jira (automation) add to jira label Apr 29, 2026
@fdevans fdevans marked this pull request as ready for review April 29, 2026 17:07
@fdevans fdevans changed the title Upgrade Gradle 4.8.14, Groovy 4, Java 17 [RUN-4418] Upgrade Gradle 4.8.14, Groovy 4, Java 17 Apr 29, 2026
@Jesus-Osuna-M
Copy link
Copy Markdown
Contributor

Manual Smoke Test — Post Gradle 8 / Java 17 / Groovy 4 Upgrade

Tested the built JAR (rundeck-cli-2.0.11-SNAPSHOT-all.jar) against a live staging instance (Rundeck 5.20-RBA, API v58) to verify no regressions after the build infrastructure changes in this PR.

Results

Command Result
system info ✅ Rundeck version/API info returned correctly
projects list ✅ 18 projects listed
projects info ✅ Project details returned
jobs list ✅ Jobs listed per project
jobs list -f file.yaml -F yaml (export) ✅ YAML export written (6321 bytes)
nodes list ✅ Nodes returned
executions list (running) ✅ Correct empty response
executions query ✅ Paginated results returned (tested on two projects)
keys list ✅ Key storage entries listed
users list ✅ 21 users returned
tokens list -u <user> ✅ Token list returned
plugins list ✅ Official repository + installed plugins listed
scheduler jobs ✅ Scheduled jobs listed
metrics list ✅ 4 metric endpoints returned
run -i <id> --follow ✅ Execution started, output followed, server error reported correctly
adhoc -p <project> -f -- <cmd> ✅ Execution started, output followed, server error reported correctly

Note: run and adhoc commands triggered executions successfully. They returned exit code non-zero due to Local Executor is disabled on the staging server — this is a server-side configuration, not a CLI issue.

All core CLI commands work correctly. No regressions detected.

@Jesus-Osuna-M Jesus-Osuna-M merged commit c5e0dad into main May 8, 2026
10 checks passed
@Jesus-Osuna-M Jesus-Osuna-M deleted the upgrade-gradle-8 branch May 8, 2026 14:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

to-jira (automation) add to jira

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants