OpenSearch/plugin/bwc-zip/build.gradle

122 lines
4.1 KiB
Groovy

import java.util.regex.Matcher
import org.elasticsearch.gradle.LoggedExec
/**
* This is a dummy project which does a local checkout of the previous
* wire compat version's branch, and builds a snapshot. This allows backcompat
* tests to test against the next unreleased version, closest to this version,
* without relying on snapshots.
*/
String bwcVersion = wireCompatVersions[-1]
if (bwcVersion.endsWith('-SNAPSHOT')) {
apply plugin: 'distribution'
def (String major, String minor, String bugfix) = bwcVersion.split('\\.')
String bwcBranch = bugfix == '0-SNAPSHOT' ? "${major}.x" : "${major}.${minor}"
File esCheckoutDir = file("${buildDir}/bwc/checkout-es-${bwcBranch}")
File xpackCheckoutDir = file("${esCheckoutDir}-extra/x-pack-elasticsearch")
task createElasticsearchClone(type: LoggedExec) {
onlyIf { esCheckoutDir.exists() == false }
commandLine = ['git', 'clone', rootDir, esCheckoutDir]
}
task createXPackClone(type: LoggedExec) {
onlyIf { xpackCheckoutDir.exists() == false }
commandLine = ['git', 'clone', project(':x-pack-elasticsearch').projectDir, xpackCheckoutDir]
}
// we use regular Exec here to ensure we always get output, regardless of logging level
task findElasticsearchUpstream(type: Exec) {
dependsOn createElasticsearchClone
workingDir = esCheckoutDir
commandLine = ['git', 'remote', '-v']
ignoreExitValue = true
ByteArrayOutputStream output = new ByteArrayOutputStream()
standardOutput = output
doLast {
if (execResult.exitValue != 0) {
output.toString('UTF-8').eachLine { line -> logger.error(line) }
execResult.assertNormalExitValue()
}
project.ext.esUpstreamExists = false
output.toString('UTF-8').eachLine {
if (it.contains("upstream")) {
project.ext.esUpstreamExists = true
}
}
}
}
task findXPackUpstream(type: Exec) {
dependsOn createXPackClone
workingDir = xpackCheckoutDir
commandLine = ['git', 'remote', '-v']
ignoreExitValue = true
ByteArrayOutputStream output = new ByteArrayOutputStream()
standardOutput = output
doLast {
if (execResult.exitValue != 0) {
output.toString('UTF-8').eachLine { line -> logger.error(line) }
execResult.assertNormalExitValue()
}
project.ext.xpackUpstreamExists = false
output.toString('UTF-8').eachLine {
if (it.contains("upstream")) {
project.ext.xpackUpstreamExists = true
}
}
}
}
task addElasticsearchUpstream(type: LoggedExec) {
dependsOn findElasticsearchUpstream
onlyIf { project.ext.esUpstreamExists == false }
workingDir = esCheckoutDir
commandLine = ['git', 'remote', 'add', 'upstream', 'git@github.com:elastic/elasticsearch.git']
}
task addXPackUpstream(type: LoggedExec) {
dependsOn findXPackUpstream
onlyIf { project.ext.xpackUpstreamExists == false }
workingDir = xpackCheckoutDir
commandLine = ['git', 'remote', 'add', 'upstream', 'git@github.com:elastic/x-pack-elasticsearch.git']
}
task fetchElasticsearchLatest(type: LoggedExec) {
dependsOn addElasticsearchUpstream
workingDir = esCheckoutDir
commandLine = ['git', 'fetch', 'upstream']
}
task fetchXPackLatest(type: LoggedExec) {
dependsOn addXPackUpstream
workingDir = xpackCheckoutDir
commandLine = ['git', 'fetch', 'upstream']
}
task checkoutElasticsearchBwcBranch(type: LoggedExec) {
dependsOn fetchElasticsearchLatest
workingDir = esCheckoutDir
commandLine = ['git', 'checkout', "upstream/${bwcBranch}"]
}
task checkoutXPackBwcBranch(type: LoggedExec) {
dependsOn fetchXPackLatest
workingDir = xpackCheckoutDir
commandLine = ['git', 'checkout', "upstream/${bwcBranch}"]
}
File bwcZip = file("${xpackCheckoutDir}/plugin/build/distributions/x-pack-${bwcVersion}.zip")
task buildBwcVersion(type: GradleBuild) {
dependsOn checkoutXPackBwcBranch, checkoutElasticsearchBwcBranch
dir = xpackCheckoutDir
tasks = [':x-pack-elasticsearch:plugin:assemble']
}
artifacts {
'default' file: bwcZip, name: 'x-pack', type: 'zip', builtBy: buildBwcVersion
}
}