diff --git a/releaser-core/src/main/java/releaser/internal/docs/ReleaseTrainContentsUpdater.java b/releaser-core/src/main/java/releaser/internal/docs/ReleaseTrainContentsUpdater.java index 400ef564..3b5211fd 100644 --- a/releaser-core/src/main/java/releaser/internal/docs/ReleaseTrainContentsUpdater.java +++ b/releaser-core/src/main/java/releaser/internal/docs/ReleaseTrainContentsUpdater.java @@ -72,7 +72,10 @@ class ReleaseTrainContentsUpdater { } File releaseTrainWiki = this.handler.cloneReleaseTrainWiki(); ProjectVersion releaseTrain = projects.releaseTrain(this.properties); - String releaseTrainName = releaseTrain.major(); + // When using calver this need to be a major plus minor (ie if the release is + // 2020.0.1, the name of the wiki page is 2020.0) + String releaseTrainName = releaseTrain.isCalver() ? releaseTrain.majorAndMinor() + : releaseTrain.major(); String wikiPagePrefix = this.properties.getGit().getReleaseTrainWikiPagePrefix(); String releaseTrainDocFileName = releaseTrainDocFileName(releaseTrainName, wikiPagePrefix); diff --git a/releaser-core/src/main/java/releaser/internal/project/ProjectVersion.java b/releaser-core/src/main/java/releaser/internal/project/ProjectVersion.java index 5edcde5f..0d532da5 100644 --- a/releaser-core/src/main/java/releaser/internal/project/ProjectVersion.java +++ b/releaser-core/src/main/java/releaser/internal/project/ProjectVersion.java @@ -194,7 +194,7 @@ public class ProjectVersion implements Comparable, Serializable throw new IllegalStateException("Version can't end with a delimiter!"); } SplitVersion splitByHyphen = tryHyphenSeparatedVersion(version); - if (splitByHyphen != null) { + if (splitByHyphen != null && !splitByHyphen.calverReleaseTrain()) { return splitByHyphen; } return dotSeparatedReleaseTrainsAndVersions(version); @@ -314,6 +314,15 @@ public class ProjectVersion implements Comparable, Serializable return this.assertVersion().major; } + public boolean isCalver() { + return this.assertVersion().calverReleaseTrain(); + } + + public String majorAndMinor() { + return this.assertVersion().major + this.assertVersion().delimiter + + this.assertVersion().minor; + } + /** * Compute the previous patch's version, without any prefix or suffix (ie * MAJOR.MINOR.PATCH only). If the patch number is already at 0, returns an empty @@ -740,7 +749,7 @@ public class ProjectVersion implements Comparable, Serializable return isOldReleaseTrain() || calverReleaseTrain(); } - private boolean calverReleaseTrain() { + public boolean calverReleaseTrain() { try { return Integer.parseInt(this.major) >= 2020; } diff --git a/releaser-core/src/main/resources/templates/cloud/blog.hbs b/releaser-core/src/main/resources/templates/cloud/blog.hbs index d3aff91c..4fd2664c 100644 --- a/releaser-core/src/main/resources/templates/cloud/blog.hbs +++ b/releaser-core/src/main/resources/templates/cloud/blog.hbs @@ -1,4 +1,4 @@ -On behalf of the community, I am pleased to announce that the {{ availability }} of the [Spring Cloud {{ releaseName }}](https://cloud.spring.io) Release Train is available today. The release can be found in {{ releaseLink }}. You can check out the {{ releaseName }} [release notes for more information](https://github.com/spring-projects/spring-cloud/wiki/Spring-Cloud-{{ releaseName }}-Release-Notes). +On behalf of the community, I am pleased to announce that the {{ availability }} of the [Spring Cloud {{ releaseName }}](https://cloud.spring.io) Release Train is available today. The release can be found in {{ releaseLink }}. You can check out the {{ releaseName }} [release notes for more information](https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-{{ releaseName }}-Release-Notes). ## Notable Changes in the {{ releaseName }} Release Train {{#each projects}} diff --git a/releaser-core/src/test/java/releaser/internal/docs/ReleaseTrainContentsUpdaterTests.java b/releaser-core/src/test/java/releaser/internal/docs/ReleaseTrainContentsUpdaterTests.java index 9033acd0..8da7cbae 100644 --- a/releaser-core/src/test/java/releaser/internal/docs/ReleaseTrainContentsUpdaterTests.java +++ b/releaser-core/src/test/java/releaser/internal/docs/ReleaseTrainContentsUpdaterTests.java @@ -165,6 +165,25 @@ public class ReleaseTrainContentsUpdaterTests { .contains("Updating project page to release train [Greenwich.RELEASE]"); } + @Test + public void should_generate_the_contents_of_wiki_when_release_train_missing_calvar() + throws GitAPIException, IOException { + this.properties.getMetaRelease().setEnabled(true); + this.properties.getGit().setUpdateReleaseTrainWiki(true); + this.properties.getGit() + .setReleaseTrainWikiUrl(this.wikiRepo.getAbsolutePath() + "/"); + + File file = this.updater.updateReleaseTrainWiki(freshNewReleaseTrainCalver()); + + BDDAssertions.then(file).isNotNull(); + BDDAssertions.then(calverWikiEntryContent(file)).contains("# 2020.0.5").contains( + "Spring Cloud Consul `2.0.1.RELEASE` ([issues](http://www.foo.com/))"); + BDDAssertions + .then(GitTestUtils.openGitProject(file).log().call().iterator().next() + .getShortMessage()) + .contains("Updating project page to release train [2020.0.5]"); + } + private String edgwareWikiEntryContent(File file) throws IOException { return string(file, "Spring-Cloud-Edgware-Release-Notes.md"); } @@ -173,6 +192,10 @@ public class ReleaseTrainContentsUpdaterTests { return string(file, "Spring-Cloud-Greenwich-Release-Notes.md"); } + private String calverWikiEntryContent(File file) throws IOException { + return string(file, "Spring-Cloud-2020.0-Release-Notes.md"); + } + private String string(File file, String s) throws IOException { return new String(Files.readAllBytes(new File(file, s).toPath())); } @@ -249,4 +272,28 @@ public class ReleaseTrainContentsUpdaterTests { new ProjectVersion("spring-cloud-function", "1.0.0.RELEASE")); } + Projects freshNewReleaseTrainCalver() { + return new Projects(new ProjectVersion("spring-cloud-aws", "3.0.0.RELEASE"), + new ProjectVersion("spring-cloud-bus", "2.0.0.RELEASE"), + new ProjectVersion("spring-cloud-cli", "2.0.0.RELEASE"), + new ProjectVersion("spring-cloud-commons", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-contract", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-config", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-netflix", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-security", "2.0.0.RELEASE"), + new ProjectVersion("spring-cloud-cloudfoundry", "2.0.0.RELEASE"), + new ProjectVersion("spring-cloud-consul", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-sleuth", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-stream", "2020.0.0"), + new ProjectVersion("spring-cloud-zookeeper", "2.0.0.RELEASE"), + new ProjectVersion("spring-boot", "2.0.4.RELEASE"), + new ProjectVersion("spring-cloud-task", "2.0.0.RELEASE"), + // newer release train, current version in file is 2020.0.4 + new ProjectVersion("spring-cloud-release", "2020.0.5"), + new ProjectVersion("spring-cloud-vault", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-gateway", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-openfeign", "2.0.1.RELEASE"), + new ProjectVersion("spring-cloud-function", "1.0.0.RELEASE")); + } + } diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/Spring-Cloud-2020.0-Release-Notes.md b/releaser-core/src/test/resources/projects/spring-cloud-wiki/Spring-Cloud-2020.0-Release-Notes.md new file mode 100644 index 00000000..35e014e6 --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-wiki/Spring-Cloud-2020.0-Release-Notes.md @@ -0,0 +1,539 @@ +# 2020.0.4 + +[All Issues](https://github.com/orgs/spring-cloud/projects/64) + +2021-09-22 + +- Spring Cloud Cloudfoundry `3.0.2` +- Spring Cloud Config `3.0.5` +- Spring Cloud Contract `3.0.4` +- Spring Cloud Consul `3.0.4` +- Spring Cloud Gateway `3.0.4` +- Spring Cloud Netflix `3.0.4` +- Spring Cloud Vault `3.0.4` +- Spring Cloud Kubernetes `2.0.4` +- Spring Cloud Circuitbreaker `2.0.2` +- Spring Cloud Bus `3.0.3` +- Spring Cloud Cli `3.0.3` +- Spring Cloud Zookeeper `3.0.4` +- Spring Cloud Sleuth `3.0.4` +- Spring Cloud Starter Build `2020.0.4` +- Spring Cloud Task `2.3.2` +- Spring Cloud Commons `3.0.4` +- Spring Cloud Openfeign `3.0.4` + + +# 2020.0.3 + +## Breaking changes + +Actuator is no longer a required dependency of config server [1742](https://github.com/spring-cloud/spring-cloud-config/issues/1742) + +[All Issues](https://github.com/orgs/spring-cloud/projects/61) + +2021-05-28 + +- Spring Cloud Cloudfoundry `3.0.2` +- Spring Cloud Config `3.0.4` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/89?closed=1)) +- Spring Cloud Contract `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/77?closed=1)) +- Spring Cloud Consul `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-consul/milestone/57?closed=1)) +- Spring Cloud Gateway `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-gateway/milestone/51?closed=1)) +- Spring Cloud Netflix `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/102?closed=1)) +- Spring Cloud Vault `3.0.3` +- Spring Cloud Kubernetes `2.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-kubernetes/milestone/31?closed=1)) +- Spring Cloud Circuitbreaker `2.0.2` +- Spring Cloud Bus `3.0.3` +- Spring Cloud Cli `3.0.3` +- Spring Cloud Zookeeper `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-zookeeper/milestone/37?closed=1)) +- Spring Cloud Sleuth `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/90?closed=1)) +- Spring Cloud Starter Build `2020.0.3` +- Spring Cloud Task `2.3.2` +- Spring Cloud Commons `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-commons/milestone/89?closed=1)) +- Spring Cloud Openfeign `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-openfeign/milestone/36?closed=1)) + + +This release makes it possible for all projects except for Spring Cloud Contract to use Spring Boot 2.5. Spring Boot 2.5 includes a major update of Groovy that can lead to various issues while using Spring Cloud Contract. + +# 2020.0.2 + +[All Issues](https://github.com/orgs/spring-cloud/projects/53) + +2021-03-17 + +- Spring Cloud Cloudfoundry `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-cloudfoundry/milestone/16?closed=1)) +- Spring Cloud Commons `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-commons/milestone/87?closed=1)) +- Spring Cloud Config `3.0.3` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/88?closed=1)) +- Spring Cloud Contract `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/75?closed=1)) +- Spring Cloud Consul `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-consul/milestone/56?closed=1)) +- Spring Cloud Gateway `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-gateway/milestone/49?closed=1)) +- Spring Cloud Netflix `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/100?closed=1)) +- Spring Cloud Circuitbreaker `2.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-circuitbreaker/milestone/8?closed=1)) +- Spring Cloud Zookeeper `3.0.2` +- Spring Cloud Kubernetes `2.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-kubernetes/milestone/30?closed=1)) +- Spring Cloud Vault `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-vault/milestone/47?closed=1)) +- Spring Cloud Task `2.3.1` +- Spring Cloud Sleuth `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/88?closed=1)) +- Spring Cloud Bus `3.0.2` +- Spring Cloud Cli `3.0.2` +- Spring Cloud Starter Build `2020.0.2` +- Spring Cloud Openfeign `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-openfeign/milestone/34?closed=1)) + +# 2020.0.1 + +[All Issues](https://github.com/orgs/spring-cloud/projects/52) + +2021-01-27 + +- Spring Cloud Openfeign `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-openfeign/milestone/33?closed=1)) +- Spring Cloud Config `3.0.2` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/87?closed=1)) +- Spring Cloud Commons `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-commons/milestone/86?closed=1)) +- Spring Cloud Contract `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/74?closed=1)) +- Spring Cloud Consul `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-consul/milestone/54?closed=1)) +- Spring Cloud Gateway `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-gateway/milestone/48?closed=1)) +- Spring Cloud Netflix `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/99?closed=1)) +- Spring Cloud Zookeeper `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-zookeeper/milestone/34?closed=1)) +- Spring Cloud Vault `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-vault/milestone/46?closed=1)) +- Spring Cloud Kubernetes `2.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-kubernetes/milestone/29?closed=1)) +- Spring Cloud Sleuth `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/87?closed=1)) +- Spring Cloud Bus `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-bus/milestone/47?closed=1)) +- Spring Cloud Cli `3.0.1` ([issues](https://github.com/spring-cloud/spring-cloud-cli/milestone/24?closed=1)) +- Spring Cloud Starter Build `2020.0.1` + +# 2020.0.0 + +## Known Issues + +- 2020.0.0 Spring Cloud Consul: Retry support has not been added yet using `spring.config.import=consul:`. Follow the [issue here](https://github.com/spring-cloud/spring-cloud-consul/issues/703). The workaround is to use the old bootstrap style by including `spring-cloud-starter-bootstrap`. + +Spring Cloud Config [3.0.1](https://github.com/spring-cloud/spring-cloud-config/milestone/85?closed=1) has been released to fix the issues below. Please use version 2020.0.1 which includes all the fixes below. + +- 2020.0.0 Spring Cloud Config: Retry support is missing for `spring.config.import=configserver:`. Follow the issue [here](github.com/spring-cloud/spring-cloud-config/issues/1775). For a workaround, continue to use `bootstrap.{yml|properties}` and add a dependency on `spring-cloud-starter-bootstrap` to restore the old behavior. +- 2020.0.0 Spring Cloud Config: spring-cloud-config-dependencies imports a milestone of spring-vault. Follow the issue [here](github.com/spring-cloud/spring-cloud-config/issues/1776). See [a workaround here](https://github.com/spring-cloud/spring-cloud-config/issues/1776#issuecomment-749782456) +- 2020.0.0 Spring Cloud Config: using `spring.config.import` value of `spring.profiles.active` not being used. Follow the issue and see workarounds [here](https://github.com/spring-cloud/spring-cloud-config/issues/1777). +- 2020.0.0 Spring Cloud Config: Multi-document YAML and properties files from config server have the same property source name which leads to a missing property source. Follow the issue [here](https://github.com/spring-cloud/spring-cloud-config/issues/1778). + +## Breaking changes + +- As [announced](https://spring.io/blog/2019/12/23/spring-cloud-roadmap-and-hoxton-and-greenwich-maintenance-and-eol-announcements), the following modules have been removed from spring-cloud-netflix: + - spring-cloud-netflix-archaius + - spring-cloud-netflix-concurrency-limits + - spring-cloud-netflix-core + - spring-cloud-netflix-dependencies + - spring-cloud-netflix-hystrix + - spring-cloud-netflix-hystrix-contract + - spring-cloud-netflix-hystrix-dashboard + - spring-cloud-netflix-hystrix-stream + - spring-cloud-netflix-ribbon + - spring-cloud-netflix-sidecar + - spring-cloud-netflix-turbine + - spring-cloud-netflix-turbine-stream + - spring-cloud-netflix-zuul + - spring-cloud-starter-netflix-archaius + - spring-cloud-starter-netflix-hystrix + - spring-cloud-starter-netflix-hystrix-dashboard + - spring-cloud-starter-netflix-ribbon + - spring-cloud-starter-netflix-turbine + - spring-cloud-starter-netflix-turbine-stream + - spring-cloud-starter-netflix-zuul + - Support for ribbon, hystrix and zuul was removed across the release train projects. + +- Bootstrap, provided by spring-cloud-commons, is no longer enabled by default. If your project requires it, it can be re-enabled by properties or by a new starter. + - To re-enable by properties set `spring.cloud.bootstrap.enabled=true` or `spring.config.use-legacy-processing=true`. These need to be set as an environment variable, java system property or a command line argument. + - The other option is to include the new `spring-cloud-starter-bootstrap`. + +- Support has been added for the new Spring Boot `spring.config.import` syntax for Config Server, Consul, Zookeeper and Vault. The existing properties to configure the different services are still supported but need to be put in `application.properties` or `application.yml`. + - `spring.config.import=configserver:` + - `spring.config.import=consul:` + - `spring.config.import=zookeeper:` + - `spring.config.import=vault:` + +- Spring Cloud Consul removed the old tags-as-metadata functionality [issue](https://github.com/spring-cloud/spring-cloud-consul/issues/630) + +- Previously the property to disable the Spring Cloud Config Client Health Indicator was `health.config.enabled=false`. It is now `management.health.config.enabled=false` following the Spring Boot convention. + +- Spring Cloud Security was removed and code was moved to the individual Spring Cloud projects. + +- The `spring-cloud-gateway-core` module was moved to `spring-cloud-gateway-server`. If you are using `spring-cloud-gateway-starter` this will not be an issue. + +- The implementation of spring-cloud-bus was migrated to use spring-cloud-function instead of the legacy annotation-driven model. This should have minimal effect on users. + +- `spring-cloud-stream` is now an optional dependency of `spring-cloud-bus`. If you are using a binder other than rabbitmq or kafka you will need to inclue the new `spring-cloud-starter-bus-stream`. + +- Actuator endpoints with invalid characters (dashes) have been updated to remove them: + - `bus-env` is now `busenv` + - `bus-refresh` is now `busrefresh` + - `service-registry` is now `serviceregistry` + +- In Spring Cloud Config, the endpoints from the resource API that used the `useDefaultLabel` query parameter have [been removed](https://github.com/spring-cloud/spring-cloud-config/issues/1643). +- As [announced](https://spring.io/blog/2020/04/17/spring-cloud-2020-0-0-m1-released) Spring Cloud GCP is no longer part of the Spring Cloud release train + +### Spring Cloud Kubernetes + +#### Code Refactoring +* Code that was not dependent on any Kubernetes client was moved into a module name `spring-cloud-kubernetes-commons` +* Packages were renamed to be Fabric8 specific. Any package that began with `org.springframework.cloud.kubernetes` has been renamed too `org.springframework.cloud.kubernetes.fabric8` + +#### Kubernetes Client Implementations +* There are alternate implementations for much of the functionality in Spring Cloud Kubernetes using the [Kubernetes Java Client](https://github.com/kubernetes-client/java). + +| Functionality | Starter | +| ---------------- | --------------- | +| Kubernetes Detection | spring-cloud-kubernetes-client | +| Configuration | spring-cloud-starter-kubernetes-client-config | +| Loadbalancer | spring-cloud-starter-kubernetes-client-loadbalancer | +| Discovery | spring-cloud-starter-kubernetes-client-all | + +NOTE: When using the new Informer based DiscoveryClient you must give cluster wide permissions to the app due to [a bug in the Kubernetes Java Client](https://github.com/kubernetes-client/java/pull/1409) + + +#### Configuration Change Listener +* Classes related to event based and polling configuration change listeners have now been split up [PR 644](https://github.com/spring-cloud/spring-cloud-kubernetes/pull/644) + +#### Renamed Starters + +| Old Starter | Renamed Starter | +| ---------------- | --------------- | +| spring-cloud-starter-kubernetes | spring-cloud-starter-kubernetes-fabric8 | +| spring-cloud-starter-kubernetes-config | spring-cloud-starter-kubernetes-fabric8-config | +| spring-cloud-starter-kubernetes-all | spring-cloud-starter-kubernetes-fabric8-all | +| spring-cloud-starter-kubernetes-loadbalancer | spring-cloud-starter-kubernetes-fabric8-loadbalancer | + + +### Spring Cloud Sleuth + +Most notable breaking changes: + +#### `3.0.0-RC1` + +##### Moving OpenTelemetry support to incubator + +OpenTelemetry was unable to provide a reliable GA date of their modules. We've decided to remove OpenTelemetry support from Spring Cloud Sleuth and move it to incubator https://github.com/spring-cloud-incubator/spring-cloud-sleuth-otel/ . If you want to continue using OpenTelemetry with Spring Cloud Sleuth you need to add the Spring repositories, the `spring-cloud-sleuth-otel-dependencies` BOM and `spring-cloud-sleuth-otel-autoconfigure` dependency. + +We have released a `1.0.0-M1` of Spring Cloud Sleuth OTel that is compatible with the `2020.0.0-RC1` release train. + +.Maven +```xml + + 1.0.0-M1 + + + + + + org.springframework.cloud + spring-cloud-dependencies + + ${release.train.version} + pom + import + + + org.springframework.cloud + spring-cloud-sleuth-otel-dependencies + + ${spring-cloud-sleuth-otel.version} + import + pom + + + + + + org.springframework.cloud + spring-cloud-starter-sleuth + + + org.springframework.cloud + spring-cloud-sleuth-brave + + + + + org.springframework.cloud + spring-cloud-sleuth-otel-autoconfigure + + + + + + spring-snapshots + https://repo.spring.io/snapshot + true + + + spring-milestones + https://repo.spring.io/milestone + + + + + spring-snapshots + https://repo.spring.io/snapshot + + + spring-milestones + https://repo.spring.io/milestone + + +``` + +.Gradle +``` +ext { + springCloudSleuthOtelVersion = "1.0.0-M1" +} + +dependencyManagement { + imports { + mavenBom "org.springframework.cloud:spring-cloud-dependencies:${releaseTrainVersion}" + mavenBom "org.springframework.cloud:spring-cloud-sleuth-otel-dependencies:${springCloudSleuthOtelVersion}" + } +} + +dependencies { + implementation("org.springframework.cloud:spring-cloud-starter-sleuth") { + exclude group: 'org.springframework.cloud', module: 'spring-cloud-sleuth-brave' + } + implementation "org.springframework.cloud:spring-cloud-sleuth-otel-autoconfigure" +} + +repositories { + mavenCentral() + maven { + url "https://repo.spring.io/snapshot" + } + maven { + url "https://repo.spring.io/milestone" + } + maven { + url "https://repo.spring.io/release" + } +} +``` + +#### `3.0.0-M6` + +##### Modules + +* New modules: `spring-cloud-sleuth-autoconfigure`, `spring-cloud-sleuth-api`, `spring-cloud-sleuth-instrumentation` + `spring-cloud-sleuth-core` removed and changed to `spring-cloud-sleuth-instrumentation` & `spring-cloud-sleuth-api` +* Removed `spring-cloud-starter-sleuth-otel` + To add OpenTelemetry support you need to add `spring-cloud-starter-sleuth` (adds Brave by default), exclude Brave and add `spring-cloud-sleuth-otel` dependency +* Except for the tests, `spring-cloud-sleuth-autoconfigure` is the only module that can have access to `@Configuration`, `@ConfiguraationProperties` classes. + Tests have been added to ensure such separation. + +##### Package moving + +* `org.springframework.cloud.sleuth.api` -> `org.springframework.cloud.sleuth` +* `org.springframework.cloud.sleuth.brave.autoconfig` -> `org.springframework.cloud.sleuth.autoconfig.brave` +* `org.springframework.cloud.sleuth.otel.autoconfig` -> `org.springframework.cloud.sleuth.autoconfig.otel` +* `org.springframework.cloud.sleuth` -> `org.springframework.cloud.sleuth` +* Instrumentation: `org.springframework.cloud.sleuth.annotation` -> `org.springframework.cloud.sleuth.instrument.annotation` +* All the autoconfiguration classes were moved under `org.springframework.cloud/sleuth.autoconfig` package + +##### Global class modifications + +* Any class registered as a bean is now public + +##### Classes + +* `RateLimitingSampler` constructor changed +* Merged a lot of auto configuration classes into one (e.g. `BraveAutoConfiguration` now imports various other configurations) +* Renamed `TraceBraveAutoConfiguration` to `BraveAutoConfiguration` +* Renamed `TraceOtelAutoConfiguration` to `OtelAutoConfiguration` +* Removed all `NoOp` implementations of the API + +To see the whole list check [this Github page](https://github.com/spring-cloud/spring-cloud-sleuth/issues?q=label%3A%22breaking+change%22+is%3Aclosed) and search for `3.0.0` milestones. + +You can also check the [Sleuth 3.0.0 migration guide](https://github.com/spring-cloud/spring-cloud-sleuth/wiki/Spring-Cloud-Sleuth-3.0-Migration-Guide). + +#### Up till `3.0.0-M5` + +* Introduces abstraction over tracers [PR 1757](https://github.com/spring-cloud/spring-cloud-sleuth/pull/1757) + * You can use Spring Cloud Sleuth's abstraction over Span's lifecycle [Check the docs](https://docs.spring.io/spring-cloud-sleuth/docs/3.0.x-SNAPSHOT/reference/html/using.html#using) + * You can use Brave or OpenTelemetry directly +* Module change / removal + * Point of entry should be `spring-cloud-starter-sleuth` (Brave support) or `spring-cloud-starter-otel` (OpenTelemetry support). + * If you want to use Zipkin: `spring-cloud-starter-zipkin` is removed and you should replace is with `spring-cloud-sleuth-zipkin` dependency. +* Enable reactor manual instrumentation when in gateway breaking change enhancement [Issue 1710](https://github.com/spring-cloud/spring-cloud-sleuth/issues/1710) +* Remove the legacy Sleuth keys, span naming breaking change [Issue 1564](https://github.com/spring-cloud/spring-cloud-sleuth/issues/1564) +* Remove the legacy MDC entries and remain with the Brave MDC ones only breaking change enhancement [Issue 1221](https://github.com/spring-cloud/spring-cloud-sleuth/issues/1221) + +# 2020.0.0-RC1 + +[All Issues](https://github.com/orgs/spring-cloud/projects/50) + +2020-12-11 + +- Spring Cloud Circuitbreaker `2.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-circuitbreaker/milestone/7?closed=1)) +- Spring Cloud Contract `3.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/73?closed=1)) +- Spring Cloud Kubernetes `2.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-kubernetes/milestone/27?closed=1)) +- Spring Cloud Commons `3.0.0-RC1` +- Spring Cloud Openfeign `3.0.0-RC1` +- Spring Cloud Cloudfoundry `3.0.0-RC1` +- Spring Cloud Security `3.0.0-RC1` +- Spring Cloud Bus `3.0.0-RC1` +- Spring Cloud Cli `3.0.0-RC1` +- Spring Cloud Zookeeper `3.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-zookeeper/milestone/32?closed=1)) +- Spring Cloud Sleuth `3.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/85?closed=1)) +- Spring Cloud Consul `3.0.0-RC1` +- Spring Cloud Starter Build `2020.0.0-RC1` +- Spring Cloud Gateway `3.0.0-RC1` +- Spring Cloud Netflix `3.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/97?closed=1)) +- Spring Cloud Vault `3.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-vault/milestone/43?closed=1)) +- Spring Cloud Config `3.0.0-RC1` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/83?closed=1)) + + +# 2020.0.0-M6 + +[All Issues](https://github.com/orgs/spring-cloud/projects/49) + +2020-12-01 + +- Spring Cloud Sleuth `3.0.0-M6` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/84?closed=1)) +- Spring Cloud Consul `3.0.0-M6` +- Spring Cloud Gateway `3.0.0-M6` +- Spring Cloud Zookeeper `3.0.0-M6` +- Spring Cloud Config `3.0.0-M6` +- Spring Cloud Cloudfoundry `3.0.0-M6` +- Spring Cloud Netflix `3.0.0-M6` +- Spring Cloud Kubernetes `2.0.0-M6` +- Spring Cloud Circuitbreaker `2.0.0-M6` +- Spring Cloud Contract `3.0.0-M6` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/72?closed=1)) +- Spring Cloud Starter Build `2020.0.0-M6` +- Spring Cloud Security `3.0.0-M6` +- Spring Cloud Bus `3.0.0-M6` +- Spring Cloud Cli `3.0.0-M6` +- Spring Cloud Vault `3.0.0-M6` +- Spring Cloud Openfeign `3.0.0-M6` +- Spring Cloud Commons `3.0.0-M6` + +# 2020.0.0-M5 + +[All Issues](https://github.com/orgs/spring-cloud/projects/46) + +2020-11-17 + +- Spring Cloud Consul `3.0.0-M5` +- Spring Cloud Gateway `3.0.0-M5` +- Spring Cloud Zookeeper `3.0.0-M5` +- Spring Cloud Sleuth `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/81?closed=1)) +- Spring Cloud Cloudfoundry `3.0.0-M5` +- Spring Cloud Config `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/82?closed=1)) +- Spring Cloud Kubernetes `2.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-kubernetes/milestone/24?closed=1)) +- Spring Cloud Netflix `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/95?closed=1)) +- Spring Cloud Starter Build `2020.0.0-M5` +- Spring Cloud Circuitbreaker `2.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-circuitbreaker/milestone/6?closed=1)) +- Spring Cloud Contract `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/70?closed=1)) +- Spring Cloud Security `3.0.0-M5` +- Spring Cloud Bus `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-bus/milestone/46?closed=1)) +- Spring Cloud Cli `3.0.0-M5` +- Spring Cloud Openfeign `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-openfeign/milestone/30?closed=1)) +- Spring Cloud Vault `3.0.0-M5` +- Spring Cloud Commons `3.0.0-M5` ([issues](https://github.com/spring-cloud/spring-cloud-commons/milestone/80?closed=1)) + + + + +# 2020.0.0-M4 + +[All Issues](https://github.com/orgs/spring-cloud/projects/43) + +2020-10-05 + +- Spring Cloud Sleuth `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/79?closed=1)) +- Spring Cloud Consul `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-consul/milestone/51?closed=1)) +- Spring Cloud Config `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/80?closed=1)) +- Spring Cloud Kubernetes `2.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-kubernetes/milestone/21?closed=1)) +- Spring Cloud Gateway `3.0.0-M4` +- Spring Cloud Circuitbreaker `2.0.0-M4` +- Spring Cloud Contract `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/68?closed=1)) +- Spring Cloud Starter Build `2020.0.0-M4` +- Spring Cloud Netflix `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/92?closed=1)) +- Spring Cloud Cloudfoundry `3.0.0-M4` +- Spring Cloud Security `3.0.0-M4` +- Spring Cloud Cli `3.0.0-M4` +- Spring Cloud Bus `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-bus/milestone/45?closed=1)) +- Spring Cloud Zookeeper `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-zookeeper/milestone/31?closed=1)) +- Spring Cloud Commons `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-commons/milestone/77?closed=1)) +- Spring Cloud Openfeign `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-openfeign/milestone/25?closed=1)) +- Spring Cloud Vault `3.0.0-M4` ([issues](https://github.com/spring-cloud/spring-cloud-vault/milestone/42?closed=1)) + + + + +# 2020.0.0-M3 + +[All Issues](https://github.com/orgs/spring-cloud/projects/42) + +2020-07-23 + +- Spring Cloud Sleuth `3.0.0-M3` +- Spring Cloud Kubernetes `2.0.0-M3` +- Spring Cloud Consul `3.0.0-M3` +- Spring Cloud Config `3.0.0-M3` ([issues](https://github.com/spring-cloud/spring-cloud-config/milestone/77?closed=1)) +- Spring Cloud Gateway `3.0.0-M3` +- Spring Cloud Starter Build `2020.0.0-M3` +- Spring Cloud Circuitbreaker `2.0.0-M3` +- Spring Cloud Contract `3.0.0-M3` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/67?closed=1)) +- Spring Cloud Cloudfoundry `3.0.0-M3` +- Spring Cloud Security `3.0.0-M3` +- Spring Cloud Netflix `3.0.0-M3` +- Spring Cloud Cli `3.0.0-M3` +- Spring Cloud Bus `3.0.0-M3` +- Spring Cloud Zookeeper `3.0.0-M3` +- Spring Cloud Commons `3.0.0-M3` +- Spring Cloud Vault `3.0.0-M3` +- Spring Cloud Openfeign `3.0.0-M3` + + +# 2020.0.0-M2 + +[All Issues](https://github.com/orgs/spring-cloud/projects/39) + +2020-05-29 + +- Spring Cloud Netflix `3.0.0-M2` +- Spring Cloud Sleuth `3.0.0-M2` +- Spring Cloud Consul `3.0.0-M2` +- Spring Cloud Kubernetes `2.0.0-M2` +- Spring Cloud Gateway `3.0.0-M2` ([issues](https://github.com/spring-cloud/spring-cloud-gateway/milestone/38?closed=1)) +- Spring Cloud Circuitbreaker `2.0.0-M2` +- Spring Cloud Contract `3.0.0-M2` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/65?closed=1)) +- Spring Cloud Starter Build `2020.0.0-M2` +- Spring Cloud Config `3.0.0-M2` +- Spring Cloud Build `3.0.0-M2` +- Spring Cloud Cloudfoundry `3.0.0-M2` +- Spring Cloud Security `3.0.0-M2` +- Spring Cloud Bus `3.0.0-M2` +- Spring Cloud Cli `3.0.0-M2` +- Spring Cloud Vault `3.0.0-M2` +- Spring Cloud Zookeeper `3.0.0-M2` +- Spring Cloud Commons `3.0.0-M2` +- Spring Cloud Openfeign `3.0.0-M2` + + +# 2020.0.0-M1 + +2020-04-16 + +- Spring Cloud Netflix `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-netflix/milestone/88?closed=1)) +- Spring Cloud Function `3.1.0.M1` +- Spring Cloud Sleuth `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-sleuth/milestone/74?closed=1)) +- Spring Cloud Consul `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-consul/milestone/47?closed=1)) +- Spring Cloud Kubernetes `2.0.0.M1` +- Spring Cloud Gateway `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-gateway/milestone/36?closed=1)) +- Spring Cloud Circuitbreaker `2.0.0.M1` +- Spring Cloud Contract `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-contract/milestone/63?closed=1)) +- Spring Cloud Starter Build `2020.0.0-M1` +- Spring Cloud Config `3.0.0.M1` +- Spring Cloud Build `3.0.0.M1` +- Spring Cloud Cloudfoundry `3.0.0.M1` +- Spring Cloud Security `3.0.0.M1` +- Spring Cloud Bus `3.0.0.M1` +- Spring Cloud Vault `3.0.0.M1` +- Spring Cloud Zookeeper `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-zookeeper/milestone/28?closed=1)) +- Spring Cloud Commons `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-commons/milestone/72?closed=1)) +- Spring Cloud Openfeign `3.0.0.M1` ([issues](https://github.com/spring-cloud/spring-cloud-openfeign/milestone/23?closed=1)) + + diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/COMMIT_EDITMSG b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/COMMIT_EDITMSG new file mode 100644 index 00000000..abfb3053 --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/COMMIT_EDITMSG @@ -0,0 +1 @@ +adding Spring Clouud 2020.0 release notes diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/index b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/index index 6d24ea12..a7171b93 100644 Binary files a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/index and b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/index differ diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/HEAD b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/HEAD index 03769567..15e49d8a 100644 --- a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/HEAD +++ b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/HEAD @@ -1 +1,2 @@ 0000000000000000000000000000000000000000 3fa536308bcdaf5c4670c0c438ead6b3cad990da Marcin Grzejszczak 1540806486 +0100 clone: from git@github.com:spring-projects/spring-cloud.wiki.git +3fa536308bcdaf5c4670c0c438ead6b3cad990da 1fa2c37fe634da1c5e640dcb461711d356f660f2 Ryan Baxter 1639686770 -0500 commit: adding Spring Clouud 2020.0 release notes diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/refs/heads/master b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/refs/heads/master index 03769567..15e49d8a 100644 --- a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/refs/heads/master +++ b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/logs/refs/heads/master @@ -1 +1,2 @@ 0000000000000000000000000000000000000000 3fa536308bcdaf5c4670c0c438ead6b3cad990da Marcin Grzejszczak 1540806486 +0100 clone: from git@github.com:spring-projects/spring-cloud.wiki.git +3fa536308bcdaf5c4670c0c438ead6b3cad990da 1fa2c37fe634da1c5e640dcb461711d356f660f2 Ryan Baxter 1639686770 -0500 commit: adding Spring Clouud 2020.0 release notes diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/1f/a2c37fe634da1c5e640dcb461711d356f660f2 b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/1f/a2c37fe634da1c5e640dcb461711d356f660f2 new file mode 100644 index 00000000..8fbe5806 --- /dev/null +++ b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/1f/a2c37fe634da1c5e640dcb461711d356f660f2 @@ -0,0 +1 @@ +xkN1 STnN"!pqRwSYg 57, 69Tx(JTB)ڐ|lZ9jC qp0܂x((%J לm~?3O0ʟy\2%p.&/m,Z< =+_>j~Q \ No newline at end of file diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/35/e014e66523b759069c13bdb290a453e75ca14c b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/35/e014e66523b759069c13bdb290a453e75ca14c new file mode 100644 index 00000000..7d124dbe Binary files /dev/null and b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/35/e014e66523b759069c13bdb290a453e75ca14c differ diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/b4/e40ce66b58da90ff7fc067259a647f422c1e89 b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/b4/e40ce66b58da90ff7fc067259a647f422c1e89 new file mode 100644 index 00000000..6cc45a7f Binary files /dev/null and b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/objects/b4/e40ce66b58da90ff7fc067259a647f422c1e89 differ diff --git a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/refs/heads/master b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/refs/heads/master index 1bd31d6e..68b9c9fc 100644 --- a/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/refs/heads/master +++ b/releaser-core/src/test/resources/projects/spring-cloud-wiki/git/refs/heads/master @@ -1 +1 @@ -3fa536308bcdaf5c4670c0c438ead6b3cad990da +1fa2c37fe634da1c5e640dcb461711d356f660f2