Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.adarshr.gradle.testlogger.TestLoggerPlugin
- import com.adarshr.gradle.testlogger.TestLoggerExtension
- import com.adarshr.gradle.testlogger.theme.ThemeType
- import org.gradle.api.logging.LogLevel
- import groovy.json.JsonOutput
- import groovy.json.JsonSlurper
- import io.spring.gradle.dependencymanagement.dsl.DependencyManagementExtension
- plugins {
- java
- `java-library`
- id("io.spring.dependency-management") version "1.0.11.RELEASE"
- id("io.freefair.aspectj.post-compile-weaving") version "6.4.0"
- id("ru.vyarus.quality") version "4.7.0"
- id("io.qameta.allure") version "2.9.6"
- id("com.adarshr.test-logger") version "3.2.0"
- id("org.sonarqube") version "3.3"
- id("io.ebean") version "13.6.4.1"
- }
- val lombokVersion by extra("1.18.24")
- val aspectjVersion by extra("1.9.9.1")
- val allureVersion by extra("2.18.0")
- val restAssuredVersion by extra("4.5.1")
- val manifoldVersion by extra("2022.1.19")
- val nettyVersion by extra("4.1.77.Final")
- val ebeanVersion by extra("13.6.4")
- java {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
- }
- sonarqube {
- properties {
- properties(
- hashMapOf<String, String>(
- "sonar.host.url" to (System.getenv("SONAR_URL") ?: ""),
- "sonar.login" to (System.getenv("SONAR_TOKEN") ?: ""),
- "sonar.projectKey" to "e2e",
- "sonar.qualitygate.wait" to "true",
- "sonar.sourceEncoding" to "UTF-8"
- )
- )
- }
- }
- configure(allprojects) {
- apply(plugin = "java")
- apply(plugin = "java-library")
- apply(plugin = "ru.vyarus.quality")
- apply(plugin = "io.qameta.allure")
- apply(plugin = "io.spring.dependency-management")
- apply(plugin = "io.freefair.aspectj.post-compile-weaving")
- apply(plugin = "com.adarshr.test-logger")
- repositories {
- mavenLocal()
- mavenCentral()
- maven { url = uri("https://oss.sonatype.org/content/repositories/snapshots/") }
- }
- }
- configure(subprojects) {
- group = "com.projectname"
- version = "1.0-SNAPSHOT"
- configure<DependencyManagementExtension> {
- dependencies {
- dependency("com.google.code.findbugs:annotations:3.0.1")
- dependency("com.google.code.findbugs:jsr305:3.0.2")
- dependency("io.qameta.allure:allure-testng:${allureVersion}")
- dependency("io.github.sskorol:test-data-supplier:2.0.0")
- dependency("org.testng:testng:7.6.0")
- dependency("org.aspectj:aspectjweaver:${aspectjVersion}")
- dependency("org.aspectj:aspectjrt:${aspectjVersion}")
- dependency("com.github.ben-manes.caffeine:caffeine:3.1.0")
- dependency("org.aeonbits.owner:owner:1.0.12")
- dependency("org.projectlombok:lombok:${lombokVersion}")
- dependency("org.assertj:assertj-core:3.22.0")
- dependency("org.apache.commons:commons-lang3:3.12.0")
- dependency("org.vibur:vibur-object-pool:25.0")
- dependency("org.slf4j:slf4j-reload4j:1.7.36")
- dependency("ch.qos.logback:logback-classic:1.2.11")
- dependency("io.rest-assured:rest-assured:${restAssuredVersion}")
- dependency("systems.manifold:manifold-ext:${manifoldVersion}")
- dependency("systems.manifold:manifold-ext-rt:${manifoldVersion}")
- dependency("org.jsoup:jsoup:1.15.1")
- dependency("org.awaitility:awaitility:4.2.0")
- dependency("io.ebean:ebean:${ebeanVersion}")
- dependency("io.ebean:ebean-test:${ebeanVersion}")
- dependency("io.ebean:querybean-generator:${ebeanVersion}")
- dependency("org.postgresql:postgresql:42.3.5")
- dependency("io.github.sskorol:cdt-java-client:5.0.0")
- dependency("io.netty:netty-transport-native-epoll:${nettyVersion}")
- dependency("io.netty:netty-transport-native-kqueue:${nettyVersion}")
- }
- }
- tasks.compileJava {
- options.encoding = "UTF-8"
- }
- tasks.compileTestJava {
- options.encoding = "UTF-8"
- options.compilerArgs.add("-parameters")
- }
- sonarqube {
- properties {
- properties(
- hashMapOf<String, String>(
- "sonar.sources" to "src/main"
- )
- )
- }
- }
- allure {
- adapter {
- allureJavaVersion.set(allureVersion)
- frameworks {
- testng {
- enabled.set(true)
- autoconfigureListeners.set(true)
- }
- }
- }
- }
- plugins.withType<TestLoggerPlugin> {
- configure<TestLoggerExtension> {
- theme = ThemeType.STANDARD_PARALLEL
- showCauses = true
- showExceptions = true
- showStackTraces = true
- showFullStackTraces = true
- showSummary = true
- showSimpleNames = true
- showStandardStreams = System.getenv("SHOW_STANDARD_STREAMS")?.toBoolean()
- logLevel = LogLevel.LIFECYCLE
- }
- }
- }
- class Executor(data: Map<String, String>) {
- val name: String = data.getOrDefault("name", "")
- val type: String = data.getOrDefault("type", "")
- var buildName: String = data.getOrDefault("buildName", "")
- var buildUrl: String = data.getOrDefault("buildUrl", "")
- }
- tasks.register<Copy>("copyApiResults") {
- println("Copying API results")
- from("${projectDir}/api/build/allure-results")
- into("${buildDir}/allure-results")
- }
- tasks.register<Copy>("copyUiResults") {
- println("Copying UI results")
- from("${projectDir}/ui/build/allure-results")
- into("${buildDir}/allure-results")
- }
- tasks.register<Copy>("copyEnvironmentConfig") {
- println("Copying environment properties")
- from("${projectDir}/environment.properties")
- into("${buildDir}/allure-results")
- }
- tasks.register<Copy>("copyAllureProperties") {
- println("Copying Allure properties")
- from("${projectDir}/allure.properties")
- into("${buildDir}/allure-results")
- }
- /**
- * We need to create a dynamic executor depending on GitLab env variables and overwrite a default one.
- */
- tasks.register<Copy>("copyExecutor") {
- dependsOn("copyApiResults", "copyUiResults", "copyEnvironmentConfig", "copyAllureProperties")
- val executorPath = "$projectDir/executor.json"
- val executor = File(executorPath)
- val data = Executor(JsonSlurper().parse(executor) as Map<String, String>)
- data.buildName = System.getenv("CI_COMMIT_TITLE") ?: "Local Build"
- data.buildUrl = System.getenv("CI_PIPELINE_URL") ?: "http://127.0.0.1"
- executor.writeText(JsonOutput.toJson(data))
- println("Copying executor.json")
- from(executorPath)
- into("${buildDir}/allure-results")
- }
- /**
- * For local usage only. On a GitLab, it's done on a pipeline level.
- */
- tasks.register<Copy>("copyHistory") {
- println("Copying history")
- from("${projectDir}/history")
- into("${buildDir}/allure-results/history")
- }
- /**
- * Call copySwaggerCoverage task to aggregate everything and prepare a final report.
- */
- tasks.register<Copy>("copySwaggerCoverage") {
- dependsOn("copyExecutor")
- println("Copying Swagger coverage")
- from("${projectDir}/api/build/reports/swagger")
- into("${buildDir}/reports/swagger")
- }
- tasks.withType(Wrapper::class) {
- gradleVersion = "7.4.2"
- }
Advertisement
Add Comment
Please, Sign In to add comment