sskorol

Root build.gradle

Sep 2nd, 2022 (edited)
1,364
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 7.42 KB | None | 0 0
  1. import com.adarshr.gradle.testlogger.TestLoggerPlugin
  2. import com.adarshr.gradle.testlogger.TestLoggerExtension
  3. import com.adarshr.gradle.testlogger.theme.ThemeType
  4. import org.gradle.api.logging.LogLevel
  5. import groovy.json.JsonOutput
  6. import groovy.json.JsonSlurper
  7. import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension
  8.  
  9. plugins {
  10.     java
  11.     `java-library`
  12.     id("io.spring.dependency-management") version "1.0.11.RELEASE"
  13.     id("io.freefair.aspectj.post-compile-weaving") version "6.4.0"
  14.     id("ru.vyarus.quality") version "4.7.0"
  15.     id("io.qameta.allure") version "2.9.6"
  16.     id("com.adarshr.test-logger") version "3.2.0"
  17.     id("org.sonarqube") version "3.3"
  18.     id("io.ebean") version "13.6.4.1"
  19. }
  20.  
  21. val lombokVersion by extra("1.18.24")
  22. val aspectjVersion by extra("1.9.9.1")
  23. val allureVersion by extra("2.18.0")
  24. val restAssuredVersion by extra("4.5.1")
  25. val manifoldVersion by extra("2022.1.19")
  26. val nettyVersion by extra("4.1.77.Final")
  27. val ebeanVersion by extra("13.6.4")
  28.  
  29. java {
  30.     sourceCompatibility = JavaVersion.VERSION_17
  31.     targetCompatibility = JavaVersion.VERSION_17
  32. }
  33.  
  34. sonarqube {
  35.     properties {
  36.         properties(
  37.             hashMapOf<String, String>(
  38.                 "sonar.host.url" to (System.getenv("SONAR_URL") ?: ""),
  39.                 "sonar.login" to (System.getenv("SONAR_TOKEN") ?: ""),
  40.                 "sonar.projectKey" to "e2e",
  41.                 "sonar.qualitygate.wait" to "true",
  42.                 "sonar.sourceEncoding" to "UTF-8"
  43.             )
  44.         )
  45.     }
  46. }
  47.  
  48. configure(allprojects) {
  49.     apply(plugin = "java")
  50.     apply(plugin = "java-library")
  51.     apply(plugin = "ru.vyarus.quality")
  52.     apply(plugin = "io.qameta.allure")
  53.     apply(plugin = "io.spring.dependency-management")
  54.     apply(plugin = "io.freefair.aspectj.post-compile-weaving")
  55.     apply(plugin = "com.adarshr.test-logger")
  56.  
  57.     repositories {
  58.         mavenLocal()
  59.         mavenCentral()
  60.         maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
  61.     }
  62. }
  63.  
  64. configure(subprojects) {
  65.     group = "com.projectname"
  66.     version = "1.0-SNAPSHOT"
  67.  
  68.     configure<DependencyManagementExtension> {
  69.         dependencies {
  70.             dependency("com.google.code.findbugs:annotations:3.0.1")
  71.             dependency("com.google.code.findbugs:jsr305:3.0.2")
  72.             dependency("io.qameta.allure:allure-testng:${allureVersion}")
  73.             dependency("io.github.sskorol:test-data-supplier:2.0.0")
  74.             dependency("org.testng:testng:7.6.0")
  75.             dependency("org.aspectj:aspectjweaver:${aspectjVersion}")
  76.             dependency("org.aspectj:aspectjrt:${aspectjVersion}")
  77.             dependency("com.github.ben-manes.caffeine:caffeine:3.1.0")
  78.             dependency("org.aeonbits.owner:owner:1.0.12")
  79.             dependency("org.projectlombok:lombok:${lombokVersion}")
  80.             dependency("org.assertj:assertj-core:3.22.0")
  81.             dependency("org.apache.commons:commons-lang3:3.12.0")
  82.             dependency("org.vibur:vibur-object-pool:25.0")
  83.             dependency("org.slf4j:slf4j-reload4j:1.7.36")
  84.             dependency("ch.qos.logback:logback-classic:1.2.11")
  85.             dependency("io.rest-assured:rest-assured:${restAssuredVersion}")
  86.             dependency("systems.manifold:manifold-ext:${manifoldVersion}")
  87.             dependency("systems.manifold:manifold-ext-rt:${manifoldVersion}")
  88.             dependency("org.jsoup:jsoup:1.15.1")
  89.             dependency("org.awaitility:awaitility:4.2.0")
  90.             dependency("io.ebean:ebean:${ebeanVersion}")
  91.             dependency("io.ebean:ebean-test:${ebeanVersion}")
  92.             dependency("io.ebean:querybean-generator:${ebeanVersion}")
  93.             dependency("org.postgresql:postgresql:42.3.5")
  94.             dependency("io.github.sskorol:cdt-java-client:5.0.0")
  95.             dependency("io.netty:netty-transport-native-epoll:${nettyVersion}")
  96.             dependency("io.netty:netty-transport-native-kqueue:${nettyVersion}")
  97.         }
  98.     }
  99.  
  100.     tasks.compileJava {
  101.         options.encoding = "UTF-8"
  102.     }
  103.  
  104.     tasks.compileTestJava {
  105.         options.encoding = "UTF-8"
  106.         options.compilerArgs.add("-parameters")
  107.     }
  108.  
  109.     sonarqube {
  110.         properties {
  111.             properties(
  112.                 hashMapOf<String, String>(
  113.                     "sonar.sources" to "src/main"
  114.                 )
  115.             )
  116.         }
  117.     }
  118.  
  119.     allure {
  120.         adapter {
  121.             allureJavaVersion.set(allureVersion)
  122.             frameworks {
  123.                 testng {
  124.                     enabled.set(true)
  125.                     autoconfigureListeners.set(true)
  126.                 }
  127.             }
  128.         }
  129.     }
  130.  
  131.     plugins.withType<TestLoggerPlugin> {
  132.         configure<TestLoggerExtension> {
  133.             theme = ThemeType.STANDARD_PARALLEL
  134.             showCauses = true
  135.             showExceptions = true
  136.             showStackTraces = true
  137.             showFullStackTraces = true
  138.             showSummary = true
  139.             showSimpleNames = true
  140.             showStandardStreams = System.getenv("SHOW_STANDARD_STREAMS")?.toBoolean()
  141.             logLevel = LogLevel.LIFECYCLE
  142.         }
  143.     }
  144. }
  145.  
  146. class Executor(data: Map<String, String>) {
  147.     val name: String = data.getOrDefault("name", "")
  148.     val type: String = data.getOrDefault("type", "")
  149.     var buildName: String = data.getOrDefault("buildName", "")
  150.     var buildUrl: String = data.getOrDefault("buildUrl", "")
  151. }
  152.  
  153. tasks.register<Copy>("copyApiResults") {
  154.     println("Copying API results")
  155.     from("${projectDir}/api/build/allure-results")
  156.     into("${buildDir}/allure-results")
  157. }
  158.  
  159. tasks.register<Copy>("copyUiResults") {
  160.     println("Copying UI results")
  161.     from("${projectDir}/ui/build/allure-results")
  162.     into("${buildDir}/allure-results")
  163. }
  164.  
  165. tasks.register<Copy>("copyEnvironmentConfig") {
  166.     println("Copying environment properties")
  167.     from("${projectDir}/environment.properties")
  168.     into("${buildDir}/allure-results")
  169. }
  170.  
  171. tasks.register<Copy>("copyAllureProperties") {
  172.     println("Copying Allure properties")
  173.     from("${projectDir}/allure.properties")
  174.     into("${buildDir}/allure-results")
  175. }
  176.  
  177. /**
  178.  * We need to create a dynamic executor depending on GitLab env variables and overwrite a default one.
  179.  */
  180. tasks.register<Copy>("copyExecutor") {
  181.     dependsOn("copyApiResults", "copyUiResults", "copyEnvironmentConfig", "copyAllureProperties")
  182.     val executorPath = "$projectDir/executor.json"
  183.     val executor = File(executorPath)
  184.     val data = Executor(JsonSlurper().parse(executor) as Map<String, String>)
  185.     data.buildName = System.getenv("CI_COMMIT_TITLE") ?: "Local Build"
  186.     data.buildUrl = System.getenv("CI_PIPELINE_URL") ?: "http://127.0.0.1"
  187.     executor.writeText(JsonOutput.toJson(data))
  188.  
  189.     println("Copying executor.json")
  190.     from(executorPath)
  191.     into("${buildDir}/allure-results")
  192. }
  193.  
  194. /**
  195.  * For local usage only. On a GitLab, it's done on a pipeline level.
  196.  */
  197. tasks.register<Copy>("copyHistory") {
  198.     println("Copying history")
  199.     from("${projectDir}/history")
  200.     into("${buildDir}/allure-results/history")
  201. }
  202.  
  203. /**
  204.  * Call copySwaggerCoverage task to aggregate everything and prepare a final report.
  205.  */
  206. tasks.register<Copy>("copySwaggerCoverage") {
  207.     dependsOn("copyExecutor")
  208.     println("Copying Swagger coverage")
  209.     from("${projectDir}/api/build/reports/swagger")
  210.     into("${buildDir}/reports/swagger")
  211. }
  212.  
  213. tasks.withType(Wrapper::class) {
  214.     gradleVersion = "7.4.2"
  215. }
  216.  
Advertisement
Add Comment
Please, Sign In to add comment