close

Marcin Grzejszczak

Marcin Grzejszczak

Spring Cloud Sleuth / Contract / Pipelines

Warsaw, Poland

Author of "Mockito Instant" and "Mockito Cookbook" books. Contributor to several open source projects (including Rest-assured, Drools, Moco, Mockito). Co-author of the Groovy @Builder, "micro-infra-spring", "AccuREST" open source solutions. Author of Uptodate Gradle plugin, Spock subjects-collaborators extension and gradle-test-profiler open source projects. Co-founder of the Warsaw Groovy User Group. Currently working on the Spring Cloud project.
Blog Posts by Marcin Grzejszczak

Spring Cloud 2022.0.0-M2 (codename Kilburn) Has Been Released

On behalf of the community, I am pleased to announce that the Milestone 2 (M2) of the Spring Cloud 2022.0.0 Release Train is available today. The release can be found in Spring Milestone repository. You can check out the 2022.0 release notes for more information.

Notable Changes in the 2022.0.0-M2 Release Train

See the project page for all the issues and pull requests included in this release.

Spring Cloud 2022.0.0-M2 is compatible with Spring Boot 3.0.0-M2.

Spring Cloud Stream

  • Both Kafka and RabbitMQ binders for Spring Cloud Stream have been migrated as part of the core Spring Cloud Stream repository. With this change, Spring Cloud Stream now follows a mono-repo approach where all the framework-related codebase for Spring Cloud Stream is now part of a single repository. See more details here for the Kafka binder and here for the RabbitMQ binder. We recommend filing new feature requests and bug reports for Kafka and RabbitMQ binders in the core repository.
  • Introduced initial support for a new reactive Kafka binder based on Reactor Kafka. This support contains consumer and producer bindings using Reactor Kafka behind the scenes. See this issue for more details.
  • Also, given we’ve been relying on the new test binder for 3+ years now we have also removed the old test modules
Read more...

Spring Cloud Sleuth 3.1.0 is out!

With the release of the Spring Cloud 2021.0.0 (aka Jubilee) release train we’re more than happy to announce the general availability of Spring Cloud Sleuth 3.1.0. In this blog post we’ll describe the most notable released features.

Here is the list of most notable features, we’ll elaborate on them in the subsequent parts of this post.

Read more...

Spring Cloud 2021.0.0-RC1 (codename Jubilee) Has Been Released

On behalf of the community, I am pleased to announce that the Release Candidate 1 (RC1) of the Spring Cloud 2021.0 Release Train, codename Jubilee, is available today. The release can be found in Spring Milestone repository. You can check out the 2021.0 release notes for more information.

Notable Changes in the 2021.0 Release Train

RC1 is compatible with Spring Boot 2.6.0-RC1

See the project page for all the issues and pull requests included in this release.

Spring Cloud Commons

  • Adds support for per LoadBalancer client properties. (issue)
  • Adds X-Forwarded-* headers when using load-balanced RestTemplate. (issue)
Read more...

Spring Cloud 2020.0.3 (aka Ilford) Is Available

On behalf of the community, I am pleased to announce that Service Release 3 of the Spring Cloud 2020.0 Release Train (2020.0.3) is available today. The release can be found in Maven Central. You can check out the 2020.0 release notes for more information.

Notable Changes in the 2020.0.3 Release Train

The biggest change in this release was support for Spring Boot 2.5. Besides that, this release is primarily for bug fixes and dependency upgrades.

See all of the included issues and pull requests at the Github project.

Read more...

Spring Cloud Finchley SR4 Released

On behalf of the community, I am pleased to announce that the Service Release 4 (SR4) of the Spring Cloud Finchley Release Train is available today. The release can be found in Maven Central. You can check out the Finchley release notes for more information.

Notable Changes in the Finchley Release Train

Spring Cloud Commons

Bug Fixes

Spring Cloud Vault

Bug Fixes

Spring Cloud Config

Bug Fixes

Spring Cloud Gateway

Bug Fixes

Spring Cloud Netflix

Bug Fixes

Spring Cloud Sleuth

Bug Fixes

Spring Cloud Consul

Bug Fixes

Read more...

Spring Cloud Pipelines to Cloud Pipelines Migration

Spring Cloud Pipelines is a GitHub project that tries to solve the following problems:

  • Creation of a common deployment pipeline

  • Propagation of good testing and deployment practices

  • Reducing the time required to deploy a feature to production.

The first commit took place on 31-08-2016. Since then, we have gotten a lot of feedback from the community related to the suggested deployment pipeline and its concrete visualisations. Over those two years, the most important features we have managed to build are:

  • Opinionated deployment pipeline setup

  • Scripts for the pipeline, to verify backward compatibility of your project and allow zero-downtime deployment

  • Support for PHP, .NET, NodeJS, and JVM (Maven & Gradle) projects

  • Deployment option for Cloud Foundry

  • Deployment option for Kubernetes

  • Deployment option via Ansible

  • Pipeline visualisation in Jenkins by using Jenkins Job DSL

  • Pipeline visualisation in Jenkins by using Jenkinsfile

  • Pipeline visualisation in Concourse

We would like to announce the next 1.0.0.M9 release of Spring Cloud Pipelines, which will also be its last in the current form.

Read more...

Spring Cloud Pipelines 1.0.0.M8 Released

On behalf of the Spring Cloud team, it is my pleasure to announce a new milestone release of Spring Cloud Pipelines - 1.0.0.M8.

What’s new?

This release adds a lot of new features and quality and testing improvements. As for main features, we’ve added support for a project with multiple modules, and for mono-repos (projects with standalone application sources in it). As for quality and testing, we’re approaching 200 Bash tests (we’ve written missing tests for the Concourse pipeline). We’ve started publishing the project’s sources as a downloadable artifact. That way instead of cloning the repo or downloading the ~25mb archive, you can fetch around 150kb of sources. The docs for 1.0.0.M8 are available here

From now on, we’re attaching the distributions in tar.gz and zip formats, with sources only to each release.

Thanks

Super special thanks go to the one and only @ciberkleid for all her hard work on the project (look at that!!! - #130) and to @jugglinhats (#148) Kudos Cora and Oleg and everybody involved in the project!

Read more...

Spring Cloud Contract in a polyglot world

This article contains a short reminder of what Contract Testing is, how Spring Cloud Contract implements it, and how Spring Cloud Contract can be used in a polyglot world.

What is Contract Testing

In order to increase the certainty that our systems behave properly, we write different types of tests. According to the test pyramid the main types of tests are unit, integration, and UI. The more complex the tests, the more time and effort they require and the more brittle they become.

In a distributed system, one of the most frequent problems is testing integrations between applications. Let’s assume that your service sends a REST request to another application. When using Spring Boot, you can write a @SpringBootTest in which you test that behavior. You set up a Spring context, you prepare a request to be sent…​ and where do you send it? You haven’t started the other application, so you get a Connection Refused exception. You can try mocking the real HTTP call and returning a fake response. However, if you do that, you do not test any real HTTP integration, serialization and deserialization mechanisms, and so on. You could also start a fake HTTP server (for example, WireMock) and simulate how it should behave. The problem here is that you, as a client of an API, define how the server behaves. In other words, if you tell the fake server to return text testText when a request is sent to endpoint /myEndpoint, it does just that, even if the real server does not have such an endpoint. In short, the problem is that the stubs might not be reliable.

Read more...

Spring Cloud Pipelines 1.0.0.M7 Released

On behalf of the Spring Cloud team, it is my pleasure to announce a new milestone release of Spring Cloud Pipelines - 1.0.0.M7.

What’s new?

This release adds a lot of new features and quality and testing improvements. As for main features, we’ve added Kubernetes support for Jenkins and Concourse. As for quality and testing, we’ve written over 150 Bash tests, added Shellcheck, EditorConfig and written more Jenkins tests. We’ve also unified the project’s documentation that now can be available for each milestone under Spring Cloud Static gh-pages. The docs for 1.0.0.M7 are available here - http://cloud.spring.io/spring-cloud-static/spring-cloud-pipelines/1.0.0.M7/

Read more...

Spring Cloud Pipelines 1.0.0.M6 Released

On behalf of the Spring Cloud team it is my pleasure to announce a new milestone release of Spring Cloud Pipelines - 1.0.0.M6.

What’s new?

Pipeline descriptor

Each application can contain a file called pipeline.yml with the following structure:

lowercaseEnvironmentName1:
    services:
        - type: service1Type
          name: service1Name
          coordinates: value
        - type: service2Type
          name: service2Name
          key: value
lowercaseEnvironmentName2:
    services:
        - type: service3Type
          name: service3Name
          coordinates: value
        - type: service4Type
          name: service4Name
          key: value

For a given environment we declare a list of infrastructure services that we want to have deployed. Services have

  • type (example: eureka, mysql, rabbitmq, stubrunner) - this value gets then applied to the deployService Bash function

  • name - name of the service to get deployed

  • coordinates - coordinate that allows you to fetch the binary of the service. Examples: It can be a maven coordinate groupid:artifactid:version, docker image organization/nameOfImage, etc.

  • arbitrary key value pairs - you can customize the services as you wish

The stubrunner type can also have the useClasspath flag turned on to true or false.

Example:

test:
  services:
    - type: rabbitmq
      name: rabbitmq-github-webhook
    - type: mysql
      name: mysql-github-webhook
    - type: eureka
      name: eureka-github-webhook
      coordinates: com.example.eureka:github-eureka:0.0.1.M1
    - type: stubrunner
      name: stubrunner-github-webhook
      coordinates: com.example.eureka:github-analytics-stub-runner-boot-classpath-stubs:0.0.1.M1
      useClasspath: true
stage:
  services:
    - type: rabbitmq
      name: rabbitmq-github
    - type: mysql
      name: mysql-github
    - type: eureka
      name: github-eureka
      coordinates: com.example.eureka:github-eureka:0.0.1.M1

When the deployment to test or deployment to stage occurs, Spring Cloud Pipelines will:

  • for test environment, delete existing services and redeploy the ones from the list

  • for stage environment, if the service is not available it will get deployed. Otherwise nothing will happen

Release Notes

You can click here to see the Release Notes for more information about what’s been done for this milestone.

Read more...