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 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 pour améliorer la productivité des développeurs. Nous allons discuter Kotlin DSL pour Gradle, les “Gradle convention plugins” pour le logiciel des builds partagées, le développement d'extensions du WireMock dans Kotlin et ses DSL bindings. Je vais utiliser les exemples du 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. > whoami @oleg_nenashev oleg-nenashev Dr. Nenashev / Mr. Jenkins Architecte

    de communauté Bricoleur d'automatisation #RussiansAgainstPutin #StandWithUkraine 1.x
  3. 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
  4. 11

  5. É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
  6. DSL Bindings pour Kotlin 15 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" } """ }
  7. Adaptateur pour Kotest 16 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
  8. 18

  9. 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 21
  10. Et Kotlin! 22 • 2023 - Kotlin est le langage

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

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

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

    logique • Dans votre projet multi-repo ou entre les repositories • En DSL Kotlin/Groovy 26 D S L
  14. 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
  15. 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 28
  16. 34

  17. 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 35