Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DevoxxFR - Comment nous utilisons Kotlin et Gra...

DevoxxFR - Comment nous utilisons Kotlin et Gradle pour faire évoluer la communauté WireMock

Le projet WireMock et sa communauté de développeurs se développent rapidement. Alors, nous avons besoin d'outils de développement appropriés pour offrir la meilleure expérience de développement possible à nos principaux utilisateurs finaux et contributeurs. WireMock utilise Gradle Build Tool depuis longtemps, et nous adoptons Kotlin comme langage pour le développement d'extensions et les définitions de build. Même langage pour les développeurs pour le code d'extension, les scripts WireMock et les définitions de build? Ce serait cool!

Dans cette présentation, je vais expliquer comment nous utilisons et prévoyons d'utiliser Kotlin et Gradle Build Tool pour améliorer la productivité des développeurs. Nous allons discuter de Kotlin DSL pour WireMock, des Gradle Build Tool convention plugins pour le logiciel de builds partagés, du développement d'extensions de WireMock en Kotlin et de ses DSL bindings. Je vais utiliser les exemples de WireMock qui sont open source et disponibles sur GitHub.

Copyright Notice: Gradle, Inc. Gradle®, Develocity®, Build Scan®, and the Gradlephant logo are registered trademarks of Gradle, Inc. "Gradle" means "Gradle Build Tool" and does not reference Gradle, Inc. and/or its subsidiaries.

Avatar for Oleg Nenashev

Oleg Nenashev PRO

April 18, 2024
Tweet

Resources

More Decks by Oleg Nenashev

Other Decks in Technology

Transcript

  1. Comment nous utilisons Kotlin et Gradle Build Tool * pour

    faire évoluer la communauté WireMock Oleg Nenashev, @oleg_nenashev * Gradle® and the Gradlephant logo are registered trademarks of Gradle, Inc. "Gradle" means "Gradle Build Tool" and does not reference Gradle, Inc. and/or its subsidiaries.
  2. NOTE • Cette présentation diffère de celle présentée lors de

    Devoxx FR 24 • Elle a été modifiée le 8 octobre 2025 afin d'exclure la propriété intellectuelle de Gradle Inc • La plupart des informations sont toujours disponibles • Gradle® et le logo Gradlephant sont des marques déposées de Gradle, Inc. «Gradle» signifie «Gradle Build Tool» et ne fait pas référence à Gradle, Inc. et/ou à ses filiales 3
  3. > whoami @oleg_nenashev oleg-nenashev Dr. Nenashev / Mr. Jenkins Architecte

    de communauté Bricoleur d'automatisation #RussiansAgainstPutin #StandWithUkraine 1.x
  4. wiremock.org IF func(requête) THEN func(réponse) * * La réalité est

    BIEN plus compliquée WireMock JSON: Client library réponse requête Client App Serveur de l’API HTTP/2
  5. 12

  6. Écosystème de WireMock & JVM • Java • Kotlin •

    Scala • Groovy • Clojure • (?)Android • JUnit 4/5 • Testcontainers • Sprint Boot • Spring Cloud Contract • Quarkus • Maven/Gradle Build Tool • Spock • Pact
  7. DSL Bindings pour Kotlin 16 wiremock/kotlin-wiremock par Marcin Ziolo wiremock.get

    { url equalTo "/users/1" } returns { statusCode = 200 header = "Content-Type" to "application/json" body = """ { "id": 1, "name": "Bob" } """ }
  8. Adaptateur pour Kotest 17 kotest/kotest-extensions-wiremock class SomeTest : FunSpec({ val

    customerServiceServer = WireMockServer(9000) listener(WireMockListener(customerServiceServer, ListenerMode.PER_SPEC)) test("let me get customer information") { customerServiceServer.stubFor( WireMock.get(WireMock.urlEqualTo("/customers/123")) .willReturn(WireMock.ok()) ) val connection = URL("http://localhost:9000/customers/123") .openConnection() as HttpURLConnection connection.responseCode shouldBe 200 } // ... }) https://kotest.io
  9. 19

  10. Nous utilisons Gradle Build Tool dans WireMock • build.gradle dans

    WireMock Java ◦ wiremock/wiremock/blob/master/build.gradle • la majorité des plugins • la majorité des intégrations JVM • outils de développement 22
  11. Et Kotlin! 23 • 2023 - Kotlin est le langage

    par défaut pour les définitions Gradle Build Tool • Scripts, Plugins, Convention Plugins
  12. Convention Plugins en Gradle Build Tool Vous pouvez partager la

    logique • Dans votre project multi-repo 25 docs.gradle.org/current/samples/ sample_publishing_convention_plugins.html
  13. Convention Plugins en Gradle Build Tool Vous pouvez partager la

    logique • Dans votre projet multi-repo • … ou entre l’autres repositories 26 plugins.gradle.org
  14. Convention Plugins en Gradle Build Tool Vous pouvez partager la

    logique • Dans votre projet multi-repo ou entre les repositories • En DSL Kotlin/Groovy 27 D S L
  15. Convention Plugins en Gradle Build Tool Partagez la logique •

    Dans votre projet multi-repo ou entre les repositories • En DSL Kotlin/Groovy • Le libraire Kotlin plein github.com/zapzombies/gradle-convention-plugins
  16. WireMock Convention Plugin wiremock/gradle-wiremock-extension-plugins • Processus de build & test

    unifié • Gestion des dépendances unifié • Shading pour la bibliothèque WireMock et WireMock Standalone • Generation des POMs Maven • Automatisation des releases vers Maven Central 29
  17. 35

  18. Les conclusions • Kotlin est bon pour encapsuler la complexité

    de votre automatisation • Gradle Build Tool peut être simple pour les utilisateurs finaux • Considérez les plugins de convention et les catalogues de versions 36