mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-10 06:55:32 +00:00
9d85f377c7
This commit updates the logic for determining which branch to use to make it consistent with the logic in elasticsearch. This change means that testing BWC within the same major picks the correct branch. Original commit: elastic/x-pack-elasticsearch@2d75d15c41
195 lines
7.4 KiB
Groovy
195 lines
7.4 KiB
Groovy
import java.util.regex.Matcher
|
|
import org.elasticsearch.gradle.LoggedExec
|
|
|
|
/**
|
|
* Subdirectories of this project are dummy projects which does a local
|
|
* checkout of the appropriate version's branch, and builds a snapshot. This
|
|
* allows backcompat tests to test against the next unreleased versions
|
|
* without relying on snapshots.
|
|
*/
|
|
|
|
subprojects {
|
|
String bwcVersion
|
|
boolean enabled = true
|
|
if (project.name == 'stable-snapshot') {
|
|
/* bwc-stable is only used if the last version is on a stable branch instead
|
|
* of a release branch */
|
|
enabled = indexCompatVersions[-1].bugfix == 0
|
|
bwcVersion = indexCompatVersions[-1]
|
|
} else if (project.name == 'release-snapshot') {
|
|
if (indexCompatVersions[-1].bugfix == 0) {
|
|
/* The last version is on a stable branch so it is handled by the bwc-stable
|
|
* project. This project will instead handle the version before that which
|
|
* *should* be on a release branch. */
|
|
bwcVersion = indexCompatVersions[-2]
|
|
} else {
|
|
// The last version is on a release branch so it is handled by this project
|
|
bwcVersion = indexCompatVersions[-1]
|
|
}
|
|
} else {
|
|
throw new InvalidUserDataException("Unsupport project name ${project.name}")
|
|
}
|
|
if (enabled) {
|
|
apply plugin: 'distribution'
|
|
// Not published so no need to assemble
|
|
tasks.remove(assemble)
|
|
build.dependsOn.remove('assemble')
|
|
|
|
def (String major, String minor, String bugfix) = bwcVersion.split('\\.')
|
|
def (String currentMajor, String currentMinor, String currentBugfix) = version.split('\\.')
|
|
String bwcBranch
|
|
if (project.name == 'stable-snapshot' && major != currentMajor) {
|
|
bwcBranch = "${major}.x"
|
|
} else {
|
|
bwcBranch = "${major}.${minor}"
|
|
}
|
|
|
|
File esCheckoutDir = file("${buildDir}/bwc/checkout-es-${bwcBranch}")
|
|
File xpackCheckoutDir = file("${esCheckoutDir}-extra/x-pack-elasticsearch")
|
|
|
|
final String remote = System.getProperty("tests.bwc.remote", "elastic")
|
|
|
|
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 findElasticsearchRemote(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.esRemoteExists = false
|
|
output.toString('UTF-8').eachLine {
|
|
if (it.contains("${remote}\tgit@github.com:${remote}/elasticsearch.git")) {
|
|
project.ext.esRemoteExists = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task findXPackRemote(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.xpackRemoteExists = false
|
|
output.toString('UTF-8').eachLine {
|
|
if (it.contains("${remote}\tgit@github.com:${remote}/x-pack-elasticsearch.git")) {
|
|
project.ext.xpackRemoteExists = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task addElasticsearchRemote(type: LoggedExec) {
|
|
dependsOn findElasticsearchRemote
|
|
onlyIf { project.ext.esRemoteExists == false }
|
|
workingDir = esCheckoutDir
|
|
commandLine = ['git', 'remote', 'add', "${remote}", "git@github.com:${remote}/elasticsearch.git"]
|
|
}
|
|
|
|
task addXPackRemote(type: LoggedExec) {
|
|
dependsOn findXPackRemote
|
|
onlyIf { project.ext.xpackRemoteExists == false }
|
|
workingDir = xpackCheckoutDir
|
|
commandLine = ['git', 'remote', 'add', "${remote}", "git@github.com:${remote}/x-pack-elasticsearch.git"]
|
|
}
|
|
|
|
task fetchElasticsearchLatest(type: LoggedExec) {
|
|
dependsOn addElasticsearchRemote
|
|
workingDir = esCheckoutDir
|
|
commandLine = ['git', 'fetch', '--all']
|
|
}
|
|
|
|
task fetchXPackLatest(type: LoggedExec) {
|
|
dependsOn addXPackRemote
|
|
workingDir = xpackCheckoutDir
|
|
commandLine = ['git', 'fetch', '--all']
|
|
}
|
|
|
|
String esBuildMetadataKey = "bwc_refspec_${project.path.substring(1)}_elasticsearch"
|
|
task checkoutElasticsearchBwcBranch(type: LoggedExec) {
|
|
dependsOn fetchElasticsearchLatest
|
|
def String refspec = System.getProperty("tests.bwc.refspec", buildMetadata.get(esBuildMetadataKey, "${remote}/${bwcBranch}"))
|
|
workingDir = esCheckoutDir
|
|
commandLine = ['git', 'checkout', refspec]
|
|
}
|
|
|
|
String xpackBuildMetadataKey = "bwc_refspec_${project.path.substring(1)}_xpack"
|
|
task checkoutXPackBwcBranch(type: LoggedExec) {
|
|
dependsOn fetchXPackLatest
|
|
def String refspec = System.getProperty("tests.bwc.refspec", buildMetadata.get(xpackBuildMetadataKey, "${remote}/${bwcBranch}"))
|
|
workingDir = xpackCheckoutDir
|
|
commandLine = ['git', 'checkout', refspec]
|
|
}
|
|
|
|
File esBuildMetadataFile = project.file("build/${project.name}_elasticsearch/build_metadata")
|
|
task writeElasticsearchBuildMetadata(type: LoggedExec) {
|
|
dependsOn checkoutElasticsearchBwcBranch
|
|
workingDir = esCheckoutDir
|
|
commandLine = ['git', 'rev-parse', 'HEAD']
|
|
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.mkdir(esBuildMetadataFile.parent)
|
|
esBuildMetadataFile.setText("${esBuildMetadataKey}=${output.toString('UTF-8')}", 'UTF-8')
|
|
}
|
|
}
|
|
|
|
File xpackBuildMetadataFile = project.file("build/${project.name}_xpack/build_metadata")
|
|
task writeXPackBuildMetadata(type: LoggedExec) {
|
|
dependsOn checkoutXPackBwcBranch
|
|
workingDir = xpackCheckoutDir
|
|
commandLine = ['git', 'rev-parse', 'HEAD']
|
|
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.mkdir(xpackBuildMetadataFile.parent)
|
|
xpackBuildMetadataFile.setText("${xpackBuildMetadataKey}=${output.toString('UTF-8')}", 'UTF-8')
|
|
}
|
|
}
|
|
|
|
File bwcZip = file("${xpackCheckoutDir}/plugin/build/distributions/x-pack-${bwcVersion}.zip")
|
|
task buildBwcVersion(type: GradleBuild) {
|
|
dependsOn checkoutXPackBwcBranch, checkoutElasticsearchBwcBranch, writeElasticsearchBuildMetadata, writeXPackBuildMetadata
|
|
dir = xpackCheckoutDir
|
|
tasks = [':x-pack-elasticsearch:plugin:assemble']
|
|
}
|
|
|
|
artifacts {
|
|
'default' file: bwcZip, name: 'x-pack', type: 'zip', builtBy: buildBwcVersion
|
|
}
|
|
}
|
|
}
|