117 lines
3.6 KiB
Groovy
117 lines
3.6 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
|
||
|
* major version's stable branch, and builds a snapshot. This allows backcompat
|
||
|
* tests in the next major version to test against the next unreleased minor
|
||
|
* version, without relying on snapshots.
|
||
|
*/
|
||
|
|
||
|
apply plugin: 'distribution'
|
||
|
|
||
|
File esCheckoutDir = file("${buildDir}/bwc/checkout-es-5.x")
|
||
|
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/5.x']
|
||
|
}
|
||
|
|
||
|
task checkoutXPackBwcBranch(type: LoggedExec) {
|
||
|
dependsOn fetchXPackLatest
|
||
|
workingDir = xpackCheckoutDir
|
||
|
commandLine = ['git', 'checkout', 'upstream/5.x']
|
||
|
}
|
||
|
|
||
|
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
|
||
|
}
|
||
|
|