Skip to content

Commit

Permalink
MBS-12124 create new upload-cd-build-result plugin (#1300)
Browse files Browse the repository at this point in the history
to get rid of CISteps about release
  • Loading branch information
dsvoronin authored Dec 3, 2021
1 parent 89c68d4 commit 45249a4
Show file tree
Hide file tree
Showing 8 changed files with 260 additions and 185 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.avito.ci.steps
import com.avito.android.plugin.artifactory.artifactoryAppBackupTask
import com.avito.android.plugin.artifactory.artifactoryPassword
import com.avito.android.plugin.artifactory.artifactoryUser
import com.avito.cd.CdBuildResult
import com.avito.cd.UploadCdBuildResultTask
import com.avito.cd.cdBuildConfig
import com.avito.cd.isCdBuildConfigPresent
Expand Down Expand Up @@ -51,13 +52,17 @@ public class UploadBuildResult(context: String, name: String) : SuppressibleBuil
group = cdTaskGroup
description = "Task for send CD build result"

this.user.set(project.artifactoryUser)
this.password.set(project.artifactoryPassword)
this.artifactoryUser.set(project.artifactoryUser)
this.artifactoryPassword.set(project.artifactoryPassword)
this.suppressErrors.set(suppressFailures)
this.reportUrl.set(reportLinksGenerator.generateReportLink(filterOnlyFailures = false))
this.planSlug.set(reportCoordinates.planSlug)
this.jobSlug.set(reportCoordinates.jobSlug)
this.runId.set(reportCoordinates.runId)
this.reportCoordinates.set(
CdBuildResult.TestResultsLink.ReportCoordinates(
planSlug = reportCoordinates.planSlug,
jobSlug = reportCoordinates.jobSlug,
runId = reportCoordinates.runId
)
)

project.tasks.namedOrNull(deployTaskName)?.also { deployTask -> dependsOn(deployTask) }

Expand Down
16 changes: 14 additions & 2 deletions subprojects/delivery/upload-cd-build-result/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
plugins {
id("convention.kotlin-jvm")
id("convention.publish-kotlin-library")
id("convention.publish-gradle-plugin")
id("convention.gradle-testing")
}

dependencies {
Expand All @@ -16,6 +17,17 @@ dependencies {
implementation(projects.subprojects.gradle.gradleExtensions)

testImplementation(projects.subprojects.common.testOkhttp)
testImplementation(projects.subprojects.gradle.testProject)
testImplementation(testFixtures(projects.subprojects.gradle.git))

gradleTestImplementation(projects.subprojects.gradle.testProject)
}

gradlePlugin {
plugins {
create("cdContract") {
id = "com.avito.android.upload-cd-build-result"
implementationClass = "com.avito.cd.UploadCdBuildResultPlugin"
displayName = "CD Contract Plugin"
}
}
}
322 changes: 161 additions & 161 deletions subprojects/delivery/upload-cd-build-result/locking/gradle.lockfile

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.avito.cd

import com.avito.test.gradle.TestProjectGenerator
import com.avito.test.gradle.gradlew
import com.avito.test.gradle.module.AndroidAppModule
import com.avito.test.gradle.plugin.plugins
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.io.TempDir
import java.io.File

internal class UploadCdBuildResultPluginTest {

@Test
fun `configuration - success`(@TempDir projectDir: File) {
TestProjectGenerator(
modules = listOf(
AndroidAppModule(
name = "app",
plugins = plugins {
id(PLUGIN_ID)
},
enableKotlinAndroidPlugin = false,
)
)
).generateIn(projectDir)

gradlew(projectDir, "tasks", dryRun = false)
}
}
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
package com.avito.cd

internal const val PLUGIN_ID = "com.avito.android.upload-cd-build-result"

internal const val CD_TASK_GROUP: String = "cd"

public const val uploadCdBuildResultTaskName: String = "uploadCdBuildResult"
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.avito.cd

import org.gradle.api.provider.Property

public abstract class UploadCdBuildResultExtension {

public abstract val artifactoryUser: Property<String>

public abstract val artifactoryPassword: Property<String>

public abstract val suppressFailures: Property<Boolean>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.avito.cd

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.register

public class UploadCdBuildResultPlugin : Plugin<Project> {

override fun apply(project: Project) {

val extension = project.extensions.create<UploadCdBuildResultExtension>("uploadCdBuildResult")

project.tasks.register<UploadCdBuildResultTask>(uploadCdBuildResultTaskName) {
group = CD_TASK_GROUP
description = "Task for sending CD build result to service"

this.artifactoryUser.set(extension.artifactoryUser)
this.artifactoryPassword.set(extension.artifactoryPassword)
this.suppressErrors.set(extension.suppressFailures)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import org.gradle.api.tasks.TaskAction
public abstract class UploadCdBuildResultTask : DefaultTask() {

@get:Input
public abstract val user: Property<String>
public abstract val artifactoryUser: Property<String>

@get:Input
public abstract val password: Property<String>
public abstract val artifactoryPassword: Property<String>

@get:Input
public abstract val suppressErrors: Property<Boolean>
Expand All @@ -23,25 +23,15 @@ public abstract class UploadCdBuildResultTask : DefaultTask() {
public abstract val reportUrl: Property<String>

@get:Input
public abstract val planSlug: Property<String>

@get:Input
public abstract val jobSlug: Property<String>

@get:Input
public abstract val runId: Property<String>
public abstract val reportCoordinates: Property<CdBuildResult.TestResultsLink.ReportCoordinates>

@TaskAction
public fun sendCdBuildResult() {
val gitState = project.gitState()
createUploadAction().send(
testResults = CdBuildResult.TestResultsLink(
reportUrl.get(),
CdBuildResult.TestResultsLink.ReportCoordinates(
planSlug = planSlug.get(),
jobSlug = jobSlug.get(),
runId = runId.get()
)
reportUrl = reportUrl.get(),
reportCoordinates = reportCoordinates.get()
),
buildOutput = project.buildOutput.get(),
cdBuildConfig = project.cdBuildConfig.get(),
Expand All @@ -55,8 +45,8 @@ public abstract class UploadCdBuildResultTask : DefaultTask() {
return UploadCdBuildResultTaskAction(
gson = uploadCdGson,
client = Providers.client(
user = user.get(),
password = password.get(),
user = artifactoryUser.get(),
password = artifactoryPassword.get(),
),
suppressErrors = suppressErrors.get()
)
Expand Down

0 comments on commit 45249a4

Please sign in to comment.