sskorol

API build module

Sep 2nd, 2022
1,259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.59 KB | None | 0 0
  1. description = "API"
  2.  
  3. val agent: Configuration by configurations.creating
  4. val restAssuredVersion by extra("4.5.1")
  5. val swaggerVersion by extra("2.2.0")
  6. val allureVersion by extra("2.18.0")
  7. val coveragePath: String by extra("${buildDir}/reports/swagger/coverage")
  8.  
  9. configurations {
  10.     testImplementation {
  11.         extendsFrom(configurations.annotationProcessor.get())
  12.     }
  13. }
  14.  
  15. tasks.compileJava {
  16.     options.compilerArgs.add("-Xplugin:Manifold")
  17. }
  18.  
  19. tasks.compileTestJava {
  20.     options.compilerArgs.add("-Xplugin:Manifold")
  21. }
  22.  
  23. dependencies {
  24.     agent("org.aspectj:aspectjweaver")
  25.  
  26.     implementation(project(":jira-client"))
  27.     implementation(project(":model"))
  28.  
  29.     implementation("io.rest-assured:rest-assured")
  30.     implementation("io.rest-assured:json-path:${restAssuredVersion}")
  31.     implementation("io.rest-assured:xml-path:${restAssuredVersion}")
  32.     implementation("io.rest-assured:json-schema-validator:${restAssuredVersion}")
  33.     implementation("io.qameta.allure:allure-rest-assured:${allureVersion}") {
  34.         exclude(group = "org.slf4j", module = "slf4j-api")
  35.     }
  36.     implementation("commons-validator:commons-validator:1.7")
  37.     implementation("io.swagger.core.v3:swagger-core:2.2.0")
  38.     implementation("io.swagger:swagger-models:1.6.6")
  39.     implementation("com.github.viclovsky:swagger-coverage-rest-assured:1.5.0") {
  40.         exclude(group = "org.slf4j", module = "slf4j-simple")
  41.     }
  42.  
  43.     implementation("org.aeonbits.owner:owner")
  44.     implementation("com.github.ben-manes.caffeine:caffeine")
  45.     implementation("io.qameta.allure:allure-testng") {
  46.         exclude(group = "org.testng", module = "testng")
  47.     }
  48.     implementation("ch.qos.logback:logback-classic:1.2.11")
  49.     implementation("io.github.sskorol:test-data-supplier")
  50.     implementation("org.testng:testng")
  51.     implementation("org.assertj:assertj-core")
  52.     implementation("org.aspectj:aspectjrt")
  53.     implementation("org.aspectj:aspectjweaver")
  54.     implementation("systems.manifold:manifold-ext")
  55.     implementation("systems.manifold:manifold-ext-rt")
  56.     implementation("org.jsoup:jsoup")
  57.     implementation("org.awaitility:awaitility")
  58.  
  59.     compileOnly("com.google.code.findbugs:annotations")
  60.     compileOnly("com.google.code.findbugs:jsr305")
  61.  
  62.     implementation("io.ebean:ebean")
  63.     implementation("org.postgresql:postgresql")
  64.     testImplementation("io.ebean:ebean-test")
  65.     annotationProcessor("io.ebean:querybean-generator")
  66.     testAnnotationProcessor("io.ebean:querybean-generator")
  67.  
  68.     annotationProcessor("systems.manifold:manifold-ext")
  69.     testAnnotationProcessor("systems.manifold:manifold-ext")
  70.     annotationProcessor("org.projectlombok:lombok")
  71.     compileOnly("org.projectlombok:lombok")
  72.     testImplementation("org.projectlombok:lombok")
  73.     testAnnotationProcessor("org.projectlombok:lombok")
  74. }
  75.  
  76. tasks.register<Delete>("cleanRootBuild") {
  77.     delete(rootProject.buildDir)
  78. }
  79.  
  80. tasks.clean {
  81.     dependsOn("cleanRootBuild")
  82. }
  83.  
  84. tasks.test {
  85.     val shouldTrackCoverage = System.getenv("SHOULD_TRACK_COVERAGE") ?: "true"
  86.     val suiteName = System.getenv("API_SUITE_NAME") ?: "smoke-suite-api"
  87.     val jiraUrl = System.getenv("JIRA_URL")
  88.     val jiraIssuePattern = "${jiraUrl}/browse/{}"
  89.     val loggingPattern = "[%1\$tF %1\$tT] [%4\$-4s] %5\$s%6\$s%n"
  90.  
  91.     systemProperty("allure.model.indentOutput", true)
  92.     systemProperty("allure.link.issue.pattern", jiraIssuePattern)
  93.     systemProperty("allure.link.tms.pattern", jiraIssuePattern)
  94.     systemProperty("java.util.logging.SimpleFormatter.format", loggingPattern)
  95.     systemProperty("org.freemarker.loggerLibrary", "SLF4J")
  96.  
  97.     useTestNG(closureOf<TestNGOptions> {
  98.         useDefaultListeners = false
  99.         suites("src/test/resources/${suiteName}.xml")
  100.     })
  101.  
  102.     doFirst {
  103.         jvmArgs("-javaagent:${agent.singleFile}")
  104.     }
  105.  
  106.     if (shouldTrackCoverage.toBoolean()) {
  107.         finalizedBy("generateSwaggerReport")
  108.     }
  109. }
  110.  
  111. tasks.register<Exec>("generateSwaggerReport") {
  112.     val binPath = "${projectDir}/bin"
  113.     commandLine("sh", "-c", "java -jar ${binPath}/swagger-coverage-cli-1.0.3.jar " +
  114.             "-s ${binPath}/swaggerSpec.json " +
  115.             "-c ${binPath}/swaggerConfig.json " +
  116.             "-i $coveragePath")
  117. }
  118.  
  119. tasks.register<Exec>("pullSwaggerSpec") {
  120.     val apiHost = System.getenv("API_URL") ?: "api.dev.project.name.com"
  121.     commandLine("wget", "https://${apiHost}/swagger/?format=openapi", "-O", "bin/swaggerSpec.json")
  122. }
  123.  
  124. sonarqube {
  125.     properties {
  126.         properties(
  127.             hashMapOf<String, String>(
  128.                 "sonar.branch" to "api"
  129.             )
  130.         )
  131.     }
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment