Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 106 additions & 0 deletions .github/agents/springcloudazure-versions-upgrade.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
---
# Fill in the fields below to create a basic custom agent for your repository.
# The Copilot CLI can be used for local testing: https://gh.io/customagents/cli
# To make this agent available, merge this file into the default repository branch.
# For format details, see: https://gh.io/customagents/config

name: Update Spring versions
description: Create a task to update Spring Boot and Spring Cloud versions.
---

# My Agent

Task: Create a PR to upgrade Spring dependencies to the target version by running our repository Python scripts. Confirm Spring Cloud ↔ Spring Boot compatibility using official references and include the conclusion and links in the PR.

Requirements:
- Run the repository’s Python scripts(use `python3`).
- In the PR, state the compatibility conclusion (compatible / not compatible / conditionally compatible) and include official reference links to the Spring Cloud release train ↔ Spring Boot compatibility.
- If execution is not possible, fall back to directly editing files to produce the expected outputs, and note this in the PR.

Milestone/Snapshot rule:
- If either target version is a Milestone (contains `-M` or `-RC`) or a Snapshot (contains `-SNAPSHOT`), add Spring milestone (and optionally snapshot) repositories to the build files (Maven) for dependency resolution.
- Spring Milestone: https://repo.spring.io/milestone
- Spring Snapshot: https://repo.spring.io/snapshot (only if snapshot artifacts are needed)

Steps (existing flow):
1) Compatibility check:
- Verify whether Spring Cloud <SPRING_CLOUD_VERSION> is compatible with Spring Boot <SPRING_BOOT_VERSION>, citing official docs/compatibility table.
- Add the conclusion and links in the PR. If incompatible, propose the nearest compatible Spring Cloud version, and mark the PR as "needs review".

2) Generate managed external dependencies:
- Run:
pip install termcolor
python ./sdk/spring/scripts/get_spring_boot_managed_external_dependencies.py -b ${SPRING_BOOT_VERSION} -c ${SPRING_CLOUD_VERSION}
- Output file:
./sdk/spring/scripts/spring_boot_${SPRING_BOOT_VERSION}_managed_external_dependencies.txt

3) Sync external dependencies:
- Run:
pip install termcolor
pip install in_place
python ./sdk/spring/scripts/sync_external_dependencies.py -b ${SPRING_BOOT_VERSION} -sbmvn 3
- Target file:
./eng/versioning/external_dependencies.txt

4) Update version aggregation:
- Run:
python ./eng/versioning/update_versions.py --sr
- Target file: all pom.xml under ./sdk/spring

5) Update Spring changelog:
- Run:
python ./sdk/spring/scripts/update_changelog.py -b ${SPRING_BOOT_VERSION} -c ${SPRING_CLOUD_VERSION}
- Target file:
./sdk/spring/CHANGELOG.md (add a new entry: date, versions, brief notes)

6) Cleanup old files:
- Remove previous ./sdk/spring/scripts/spring_boot_*_managed_external_dependencies.txt files, keep only the current ${SPRING_BOOT_VERSION}.
- List removed files in the PR.

7) Run command from repo root to validate the Spring SDK module build after the upgrade:
- Run:
mvn clean install -Dcheckstyle.skip=true -Dcodesnippet.skip -Denforcer.skip -Djacoco.skip=true -Dmaven.javadoc.skip=true -Drevapi.skip=true -DskipTests -Dspotbugs.skip=true -Pdev -T 4 -ntp -f sdk/spring/pom.xml
- If the build FAILS:
- Do NOT modify repository files yet. Do NOT commit any changes.
- Capture and paste the root cause from the logs (first failing module, key exception, dependency conflict).
- Provide at least two remediation options. For each option include:
- scope of changes (files, dependencies, BOM/exclusions, or code migrations)
- pros/cons and risk level
- a preview patch (unapplied unified diff) if file edits are involved
- Post the analysis as a PR comment under the section “Build Failure Analysis”.
- WAIT for explicit approval before proceeding. Only act after a reviewer comments:
- APPROVE OPTION 1
- APPROVE OPTION 2
- APPROVE OPTION <N> WITH NOTES: <free text>
- After approval:
- Implement ONLY the approved option.
- Commit and push changes.
- Update the PR description: add “Applied Remediation” with the chosen option and rationale.
- Re-run the build command and post the result.

Build file alignment (if present):
- For pom.xml:
- Align to official BOMs (Spring Boot BOM and Spring Cloud BOM if applicable), remove redundant explicit versions.
- Apply the Milestone/Snapshot rule: if target versions are Milestone/RC/Snapshot, add the Spring milestone/snapshot repositories (Maven) required for resolution.
- Keep changes minimal and focused.

Branch & commit:
- Branch: chore/spring-upgrade-${SPRING_BOOT_VERSION}-${SPRING_CLOUD_VERSION}
- Commit message: chore(spring): upgrade Spring Boot to ${SPRING_BOOT_VERSION} and Spring Cloud to ${SPRING_CLOUD_VERSION}

Open a PR with this description structure (Markdown):
1. Summary: purpose and scope
2. Target Versions: Boot/Cloud targets
3. Compatibility: conclusion + official links (mandatory)
4. Files Changed: key changes (managed_external_dependencies, external_dependencies, CHANGELOG, build file alignment if any)
5. Breaking Changes & Notes: e.g., javax.* -> jakarta.*, Security DSL changes, Actuator exposure differences (brief)
6. Checklist:
- [ ] Generated & synced spring_boot_${SPRING_BOOT_VERSION}_managed_external_dependencies.txt
- [ ] Updated eng/versioning/external_dependencies.txt
- [ ] Updated all versions under ./sdk/spring
- [ ] Updated sdk/spring/CHANGELOG.md
- [ ] Removed old spring_boot_*_managed_external_dependencies.txt
- [ ] Run command from repo root to validate the Spring SDK module build after the upgrade
- [ ] Milestone/Snapshot repositories added (if applicable)

Please create the branch, run the commands above (or produce equivalent edits if execution is not possible), and open the PR with the specified description and labels.
138 changes: 69 additions & 69 deletions eng/versioning/external_dependencies.txt
Original file line number Diff line number Diff line change
Expand Up @@ -315,105 +315,105 @@ storage_com.microsoft.azure:azure-storage;8.6.6

# sdk\spring\pom.xml modules
springboot3_com.diffplug.spotless:spotless-maven-plugin;2.30.0
springboot3_com.fasterxml.jackson.core:jackson-annotations;2.19.2
springboot3_com.fasterxml.jackson.core:jackson-core;2.19.2
springboot3_com.fasterxml.jackson.core:jackson-databind;2.19.2
springboot3_com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.19.2
springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.19.2
springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.19.2
springboot3_com.fasterxml.jackson.module:jackson-module-afterburner;2.19.2
springboot3_com.fasterxml.jackson.module:jackson-module-parameter-names;2.19.2
springboot3_com.fasterxml.jackson.core:jackson-annotations;2.20
springboot3_com.fasterxml.jackson.core:jackson-core;2.20.1
springboot3_com.fasterxml.jackson.core:jackson-databind;2.20.1
springboot3_com.fasterxml.jackson.dataformat:jackson-dataformat-xml;2.20.1
springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jdk8;2.20.1
springboot3_com.fasterxml.jackson.datatype:jackson-datatype-jsr310;2.20.1
springboot3_com.fasterxml.jackson.module:jackson-module-afterburner;2.20.1
springboot3_com.fasterxml.jackson.module:jackson-module-parameter-names;2.20.1
springboot3_com.github.spotbugs:spotbugs-maven-plugin;4.8.2.0
springboot3_com.google.code.findbugs:jsr305;3.0.2
springboot3_com.mysql:mysql-connector-j;9.4.0
springboot3_com.nimbusds:nimbus-jose-jwt;9.37.3
springboot3_io.lettuce:lettuce-core;6.6.0.RELEASE
springboot3_io.lettuce:lettuce-core;6.8.1.RELEASE
springboot3_io.micrometer:micrometer-core;1.15.3
springboot3_io.netty:netty-buffer;4.1.124.Final
springboot3_io.netty:netty-codec-http;4.1.124.Final
springboot3_io.netty:netty-common;4.1.124.Final
springboot3_io.netty:netty-handler;4.1.124.Final
springboot3_io.netty:netty-transport-native-epoll;4.1.124.Final
springboot3_io.netty:netty-transport-native-kqueue;4.1.124.Final
springboot3_io.netty:netty-transport;4.1.124.Final
springboot3_io.projectreactor.netty:reactor-netty;1.2.9
springboot3_io.projectreactor:reactor-test;3.7.9
springboot3_jakarta.servlet:jakarta.servlet-api;6.0.0
springboot3_jakarta.validation:jakarta.validation-api;3.0.2
springboot3_io.netty:netty-buffer;4.2.7.Final
springboot3_io.netty:netty-codec-http;4.2.7.Final
springboot3_io.netty:netty-common;4.2.7.Final
springboot3_io.netty:netty-handler;4.2.7.Final
springboot3_io.netty:netty-transport-native-epoll;4.2.7.Final
springboot3_io.netty:netty-transport-native-kqueue;4.2.7.Final
springboot3_io.netty:netty-transport;4.2.7.Final
springboot3_io.projectreactor.netty:reactor-netty;1.3.0-RC1
springboot3_io.projectreactor:reactor-test;3.8.0-RC1
springboot3_jakarta.servlet:jakarta.servlet-api;6.1.0
springboot3_jakarta.validation:jakarta.validation-api;3.1.1
springboot3_javax.annotation:javax.annotation-api;1.3.2
springboot3_junit:junit;4.13.2
springboot3_net.bytebuddy:byte-buddy-agent;1.17.7
springboot3_net.bytebuddy:byte-buddy;1.17.7
springboot3_org.apache.commons:commons-lang3;3.17.0
springboot3_org.apache.kafka:kafka-clients;3.9.1
springboot3_org.apache.maven.plugins:maven-antrun-plugin;3.1.0
springboot3_org.apache.maven.plugins:maven-compiler-plugin;3.14.0
springboot3_org.apache.maven.plugins:maven-enforcer-plugin;3.5.0
springboot3_org.apache.maven.plugins:maven-failsafe-plugin;3.5.3
springboot3_net.bytebuddy:byte-buddy-agent;1.17.8
springboot3_net.bytebuddy:byte-buddy;1.17.8
springboot3_org.apache.commons:commons-lang3;3.19.0
springboot3_org.apache.kafka:kafka-clients;4.1.0
springboot3_org.apache.maven.plugins:maven-antrun-plugin;3.2.0
springboot3_org.apache.maven.plugins:maven-compiler-plugin;3.14.1
springboot3_org.apache.maven.plugins:maven-enforcer-plugin;3.6.2
springboot3_org.apache.maven.plugins:maven-failsafe-plugin;3.5.4
springboot3_org.apache.maven.plugins:maven-jar-plugin;3.4.2
springboot3_org.apache.maven.plugins:maven-javadoc-plugin;3.11.3
springboot3_org.apache.maven.plugins:maven-surefire-plugin;3.5.3
springboot3_org.assertj:assertj-core;3.27.4
springboot3_org.hibernate.validator:hibernate-validator;8.0.3.Final
springboot3_org.apache.maven.plugins:maven-javadoc-plugin;3.12.0
springboot3_org.apache.maven.plugins:maven-surefire-plugin;3.5.4
springboot3_org.assertj:assertj-core;3.27.6
springboot3_org.hibernate.validator:hibernate-validator;9.0.1.Final
springboot3_org.javatuples:javatuples;1.2
springboot3_org.junit.jupiter:junit-jupiter;5.12.2
springboot3_org.junit.vintage:junit-vintage-engine;5.12.2
springboot3_org.junit.jupiter:junit-jupiter;6.0.1
springboot3_org.junit.vintage:junit-vintage-engine;6.0.1
springboot3_org.messaginghub:pooled-jms;3.1.7
springboot3_org.mockito:mockito-core;5.17.0
springboot3_org.postgresql:postgresql;42.7.7
springboot3_org.mockito:mockito-core;5.20.0
springboot3_org.postgresql:postgresql;42.7.8
springboot3_org.revapi:revapi-maven-plugin;0.14.6
springboot3_org.slf4j:slf4j-api;2.0.17
springboot3_org.slf4j:slf4j-simple;2.0.17
springboot3_org.springframework.boot:spring-boot-actuator-autoconfigure;3.5.5
springboot3_org.springframework.boot:spring-boot-actuator;3.5.5
springboot3_org.springframework.boot:spring-boot-autoconfigure;3.5.5
springboot3_org.springframework.boot:spring-boot-configuration-metadata;3.5.5
springboot3_org.springframework.boot:spring-boot-configuration-processor;3.5.5
springboot3_org.springframework.boot:spring-boot-docker-compose;3.5.5
springboot3_org.springframework.boot:spring-boot-starter-actuator;3.5.5
springboot3_org.springframework.boot:spring-boot-starter-data-jdbc;3.5.5
springboot3_org.springframework.boot:spring-boot-starter-integration;3.5.5
springboot3_org.springframework.boot:spring-boot-starter-parent;3.5.5
springboot3_org.springframework.boot:spring-boot-starter-test;3.5.5
springboot3_org.springframework.boot:spring-boot-starter-web;3.5.5
springboot3_org.springframework.boot:spring-boot-starter;3.5.5
springboot3_org.springframework.boot:spring-boot-test;3.5.5
springboot3_org.springframework.boot:spring-boot-testcontainers;3.5.5
springboot3_org.springframework.boot:spring-boot-actuator-autoconfigure;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-actuator;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-autoconfigure;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-configuration-metadata;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-configuration-processor;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-docker-compose;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter-actuator;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter-data-jdbc;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter-integration;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter-parent;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter-test;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter-web;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-starter;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-test;4.0.0-RC2
springboot3_org.springframework.boot:spring-boot-testcontainers;4.0.0-RC2
springboot3_org.springframework.cloud:spring-cloud-bus;4.3.0
springboot3_org.springframework.cloud:spring-cloud-context;4.3.0
springboot3_org.springframework.cloud:spring-cloud-starter-stream-kafka;4.3.0
springboot3_org.springframework.cloud:spring-cloud-stream-test-binder;4.3.0
springboot3_org.springframework.cloud:spring-cloud-stream;4.3.0
springboot3_org.springframework.data:spring-data-commons;3.5.3
springboot3_org.springframework.data:spring-data-redis;3.5.3
springboot3_org.springframework.integration:spring-integration-core;6.5.1
springboot3_org.springframework.kafka:spring-kafka;3.3.9
springboot3_org.springframework.integration:spring-integration-core;7.0.0-RC2
springboot3_org.springframework.kafka:spring-kafka;4.0.0-RC1
springboot3_org.springframework.retry:spring-retry;2.0.12
springboot3_org.springframework.security:spring-security-config;6.5.3
springboot3_org.springframework.security:spring-security-oauth2-client;6.5.3
springboot3_org.springframework.security:spring-security-oauth2-jose;6.5.3
springboot3_org.springframework.security:spring-security-oauth2-resource-server;6.5.3
springboot3_org.springframework.security:spring-security-web;6.5.3
springboot3_org.springframework:spring-beans;6.2.10
springboot3_org.springframework:spring-context-support;6.2.10
springboot3_org.springframework:spring-context;6.2.10
springboot3_org.springframework:spring-core-test;6.2.10
springboot3_org.springframework:spring-core;6.2.10
springboot3_org.springframework:spring-expression;6.2.10
springboot3_org.springframework:spring-jdbc;6.2.10
springboot3_org.springframework:spring-jms;6.2.10
springboot3_org.springframework:spring-messaging;6.2.10
springboot3_org.springframework:spring-test;6.2.10
springboot3_org.springframework:spring-tx;6.2.10
springboot3_org.springframework:spring-web;6.2.10
springboot3_org.springframework:spring-webmvc;6.2.10
springboot3_org.springframework:spring-beans;7.0.0-RC3
springboot3_org.springframework:spring-context-support;7.0.0-RC3
springboot3_org.springframework:spring-context;7.0.0-RC3
springboot3_org.springframework:spring-core-test;7.0.0-RC3
springboot3_org.springframework:spring-core;7.0.0-RC3
springboot3_org.springframework:spring-expression;7.0.0-RC3
springboot3_org.springframework:spring-jdbc;7.0.0-RC3
springboot3_org.springframework:spring-jms;7.0.0-RC3
springboot3_org.springframework:spring-messaging;7.0.0-RC3
springboot3_org.springframework:spring-test;7.0.0-RC3
springboot3_org.springframework:spring-tx;7.0.0-RC3
springboot3_org.springframework:spring-web;7.0.0-RC3
springboot3_org.springframework:spring-webmvc;7.0.0-RC3
springboot3_org.testcontainers:junit-jupiter;1.21.3
springboot3_org.testcontainers:azure;1.21.3
springboot3_jakarta.annotation:jakarta.annotation-api;3.0.0
springboot3_ch.qos.logback:logback-classic;1.5.18
springboot3_ch.qos.logback:logback-classic;1.5.20
# Used for Spring version updates
springboot3_org.springframework.boot:spring-boot-dependencies;3.5.5
springboot3_org.springframework.cloud:spring-cloud-dependencies;2025.0.0
springboot3_org.springframework.boot:spring-boot-dependencies;4.0.0-RC2
springboot3_org.springframework.cloud:spring-cloud-dependencies;2025.1.0-M4

# Java 7 support

Expand Down
2 changes: 2 additions & 0 deletions sdk/spring/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
# Release History
# (Unreleased)
Upgrade Spring Boot dependencies version to 4.0.0-RC2 and Spring Cloud dependencies version to 2025.1.0-M4

## 6.0.0 (2025-09-22)
- This release is compatible with Spring Boot 3.5.0-3.5.5. (Note: 3.5.x (x>5) should be supported, but they aren't tested with this release.)
Expand Down
1 change: 1 addition & 0 deletions sdk/spring/azure-spring-data-cosmos/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ Set `pointOperationLatencyThresholdInMS`, `nonPointOperationLatencyThresholdInMS
```java readme-sample-AppConfiguration
@Configuration
@EnableCosmosRepositories
@SuppressWarnings("deprecation")
public class AppConfiguration extends AbstractCosmosConfiguration {

private static final Logger LOGGER = LoggerFactory.getLogger(AppConfiguration.class);
Expand Down
Loading
Loading