/
PushReleaseTask.groovy
34 lines (27 loc) · 1.16 KB
/
PushReleaseTask.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package pl.allegro.tech.build.axion.release
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.TaskAction
import pl.allegro.tech.build.axion.release.domain.Releaser
import pl.allegro.tech.build.axion.release.domain.VersionConfig
import pl.allegro.tech.build.axion.release.domain.scm.ScmPushResult
import pl.allegro.tech.build.axion.release.infrastructure.di.Context
import pl.allegro.tech.build.axion.release.infrastructure.di.GradleAwareContext
class PushReleaseTask extends DefaultTask {
@Input
@Optional
VersionConfig versionConfig
@TaskAction
void release() {
VersionConfig config = GradleAwareContext.configOrCreateFromProject(project, versionConfig)
Context context = GradleAwareContext.create(project, config)
Releaser releaser = context.releaser()
ScmPushResult result = releaser.pushRelease()
if(!result.success) {
def message = result.remoteMessage.orElse("Unknown error during push")
logger.error("remote message: ${message}")
throw new ReleaseFailedException(message)
}
}
}