Skip to content

Commit

Permalink
Update BWC version logic to adapt to removal of M.x branch (#79521)
Browse files Browse the repository at this point in the history
Going forward we will no longer maintain an `M.x` branch which is
intended to be the next minor version where `master` is always `M+1`.
This simplifies a lot of our logic to no longer care much about major
vs minor version.
  • Loading branch information
mark-vieira committed Oct 20, 2021
1 parent 7c0dbe6 commit 8f1204c
Show file tree
Hide file tree
Showing 18 changed files with 413 additions and 1,122 deletions.
3 changes: 1 addition & 2 deletions .backportrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,14 @@
"upstream": "elastic/elasticsearch",
"targetBranchChoices": [
{ "name": "master", "checked": true },
{ "name": "7.x", "checked": true },
"7.16",
"7.15",
"7.14",
"6.8"
],
"targetPRLabels": ["backport"],
"branchLabelMapping": {
"^v8.0.0$": "master",
"^v7.16.0$": "7.x",
"^v(\\d+).(\\d+).\\d+$": "$1.$2"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
github-hooks: true
status-context: elasticsearch-ci/packaging-tests-windows-sample
cancel-builds-on-update: true
white-list-target-branches:
- master
black-list-target-branches:
- 7.16
- 7.15
- 6.8
excluded-regions:
- ^docs/.*
black-list-labels:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
github-hooks: true
status-context: elasticsearch-ci/packaging-tests-windows
cancel-builds-on-update: true
white-list-target-branches:
- master
black-list-target-branches:
- 7.16
- 7.15
- 6.8
excluded-regions:
- ^docs/.*
white-list-labels:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
github-hooks: true
status-context: elasticsearch-ci/rest-compatibility
cancel-builds-on-update: true
white-list-target-branches:
- master
black-list-target-branches:
- 7.16
- 7.15
- 6.8
excluded-regions:
- ^docs/.*
black-list-labels:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ class InternalBwcGitPluginFuncTest extends AbstractGitAwareGradleFuncTest {
bwcGitConfig {
bwcVersion = project.provider { Version.fromString("7.9.1") }
bwcBranch = project.provider { "7.x" }
bwcBranch = project.provider { "7.9" }
checkoutDir = project.provider{file("build/checkout")}
}
"""
execute("git branch origin/7.x", file("cloned"))
execute("git branch origin/7.9", file("cloned"))
}

def "current repository can be cloned"() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,41 +26,15 @@ class InternalDistributionBwcSetupPluginFuncTest extends AbstractGitAwareGradleF
buildFile << """
apply plugin: 'elasticsearch.internal-distribution-bwc-setup'
"""
execute("git branch origin/7.x", file("cloned"))
execute("git branch origin/7.10", file("cloned"))
}

def "builds distribution from branches via archives assemble"() {
given:
buildFile.text = ""
internalBuild(buildFile, "7.10.1", "7.11.0", "7.12.0")
buildFile << """
apply plugin: 'elasticsearch.internal-distribution-bwc-setup'
"""
when:
def result = gradleRunner(":distribution:bwc:${bwcProject}:buildBwcDarwinTar",
":distribution:bwc:${bwcProject}:buildBwcOssDarwinTar",
"-DtestRemoteRepo=" + remoteGitRepo,
"-Dbwc.remote=origin",
"-Dbwc.dist.version=${bwcDistVersion}-SNAPSHOT")
.build()
then:
result.task(":distribution:bwc:${bwcProject}:buildBwcDarwinTar").outcome == TaskOutcome.SUCCESS
result.task(":distribution:bwc:${bwcProject}:buildBwcOssDarwinTar").outcome == TaskOutcome.SUCCESS

and: "assemble task triggered"
assertOutputContains(result.output, "[$bwcDistVersion] > Task :distribution:archives:darwin-tar:${expectedAssembleTaskName}")
assertOutputContains(result.output, "[$bwcDistVersion] > Task :distribution:archives:oss-darwin-tar:${expectedAssembleTaskName}")

where:
bwcDistVersion | bwcProject | expectedAssembleTaskName
"7.10.1" | "bugfix" | "assemble"
execute("git branch origin/8.0", file("cloned"))
execute("git branch origin/7.16", file("cloned"))
execute("git branch origin/7.15", file("cloned"))
}

def "builds distribution from branches via archives extractedAssemble"() {
given:
buildFile.text = ""
internalBuild(buildFile, "7.12.1", "7.13.0", "7.14.0")
internalBuild()
buildFile << """
apply plugin: 'elasticsearch.internal-distribution-bwc-setup'
"""
Expand All @@ -79,66 +53,29 @@ class InternalDistributionBwcSetupPluginFuncTest extends AbstractGitAwareGradleF

where:
bwcDistVersion | bwcProject | expectedAssembleTaskName
"7.14.0" | "minor" | "extractedAssemble"
"8.0.0" | "minor" | "extractedAssemble"
"7.16.0" | "staged" | "extractedAssemble"
"7.15.2" | "bugfix" | "extractedAssemble"
}

@Unroll
def "supports #platform aarch distributions"() {
when:
def result = gradleRunner(":distribution:bwc:minor:buildBwc${platform.capitalize()}Aarch64Tar",
":distribution:bwc:minor:buildBwcOss${platform.capitalize()}Aarch64Tar",
"-DtestRemoteRepo=" + remoteGitRepo,
"-Dbwc.remote=origin",
"-Dbwc.dist.version=${bwcDistVersion}-SNAPSHOT")
.build()
then:
result.task(":distribution:bwc:minor:buildBwc${platform.capitalize()}Aarch64Tar").outcome == TaskOutcome.SUCCESS
result.task(":distribution:bwc:minor:buildBwcOss${platform.capitalize()}Aarch64Tar").outcome == TaskOutcome.SUCCESS

and: "assemble tasks triggered"
assertOutputContains(result.output, "[$bwcDistVersion] > Task :distribution:archives:${platform}-aarch64-tar:extractedAssemble")
assertOutputContains(result.output, "[$bwcDistVersion] > Task :distribution:archives:oss-${platform}-aarch64-tar:extractedAssemble")

where:
bwcDistVersion | platform
"7.12.0" | "darwin"
"7.12.0" | "linux"
}

def "bwc distribution archives can be resolved as bwc project artifact"() {
setup:
buildFile << """
configurations {
dists
}
dependencies {
dists project(path: ":distribution:bwc:bugfix", configuration:"darwin-tar")
}
tasks.register("resolveDistributionArchive") {
inputs.files(configurations.dists)
doLast {
configurations.dists.files.each {
println "distfile " + (it.absolutePath - project.rootDir.absolutePath)
}
}
}
"""
when:
def result = gradleRunner(":resolveDistributionArchive",
"-DtestRemoteRepo=" + remoteGitRepo,
"-Dbwc.remote=origin")
.build()
then:
result.task(":resolveDistributionArchive").outcome == TaskOutcome.SUCCESS
result.task(":distribution:bwc:bugfix:buildBwcDarwinTar").outcome == TaskOutcome.SUCCESS

and: "assemble task triggered"
result.output.contains("[7.10.1] > Task :distribution:archives:darwin-tar:assemble")
result.output.contains("distfile /distribution/bwc/bugfix/build/bwc/checkout-7.10/distribution/archives/darwin-tar/" +
"build/distributions/elasticsearch-7.10.1-SNAPSHOT-darwin-x86_64.tar.gz")
"8.0.0" | "darwin"
"8.0.0" | "linux"
}

def "bwc expanded distribution folder can be resolved as bwc project artifact"() {
Expand Down Expand Up @@ -174,10 +111,10 @@ class InternalDistributionBwcSetupPluginFuncTest extends AbstractGitAwareGradleF
result.task(":resolveExpandedDistribution").outcome == TaskOutcome.SUCCESS
result.task(":distribution:bwc:minor:buildBwcDarwinTar").outcome == TaskOutcome.SUCCESS
and: "assemble task triggered"
result.output.contains("[7.12.0] > Task :distribution:archives:darwin-tar:extractedAssemble")
result.output.contains("expandedRootPath /distribution/bwc/minor/build/bwc/checkout-7.x/" +
result.output.contains("[8.0.0] > Task :distribution:archives:darwin-tar:extractedAssemble")
result.output.contains("expandedRootPath /distribution/bwc/minor/build/bwc/checkout-8.0/" +
"distribution/archives/darwin-tar/build/install")
result.output.contains("nested folder /distribution/bwc/minor/build/bwc/checkout-7.x/" +
"distribution/archives/darwin-tar/build/install/elasticsearch-7.12.0-SNAPSHOT")
result.output.contains("nested folder /distribution/bwc/minor/build/bwc/checkout-8.0/" +
"distribution/archives/darwin-tar/build/install/elasticsearch-8.0.0-SNAPSHOT")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest
elasticsearch_distributions {
test_distro {
version = "7.12.0"
version = "8.0.0"
type = "archive"
platform = "linux"
architecture = Architecture.current();
Expand Down Expand Up @@ -86,7 +86,7 @@ class InternalDistributionDownloadPluginFuncTest extends AbstractGradleFuncTest
elasticsearch_distributions {
test_distro {
version = "7.12.0"
version = "8.0.0"
type = "archive"
platform = "linux"
architecture = Architecture.current();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {

def "yamlRestTestVxCompatTest does nothing when there are no tests"() {
given:
addSubProject(":distribution:bwc:minor") << """
addSubProject(":distribution:bwc:staged") << """
configurations { checkout }
artifacts {
checkout(new File(projectDir, "checkoutDir"))
Expand All @@ -53,11 +53,11 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {
result.task(transformTask).outcome == TaskOutcome.NO_SOURCE
}

def "yamlRestTestVxCompatTest executes and copies api and transforms tests from :bwc:minor"() {
def "yamlRestTestVxCompatTest executes and copies api and transforms tests from :bwc:staged"() {
given:
internalBuild()

addSubProject(":distribution:bwc:minor") << """
addSubProject(":distribution:bwc:staged") << """
configurations { checkout }
artifacts {
checkout(new File(projectDir, "checkoutDir"))
Expand Down Expand Up @@ -90,8 +90,8 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {
String api = "foo.json"
String test = "10_basic.yml"
//add the compatible test and api files, these are the prior version's normal yaml rest tests
file("distribution/bwc/minor/checkoutDir/rest-api-spec/src/main/resources/rest-api-spec/api/" + api) << ""
file("distribution/bwc/minor/checkoutDir/src/yamlRestTest/resources/rest-api-spec/test/" + test) << ""
file("distribution/bwc/staged/checkoutDir/rest-api-spec/src/main/resources/rest-api-spec/api/" + api) << ""
file("distribution/bwc/staged/checkoutDir/src/yamlRestTest/resources/rest-api-spec/test/" + test) << ""

when:
def result = gradleRunner("yamlRestTestV${compatibleVersion}CompatTest").build()
Expand Down Expand Up @@ -136,7 +136,7 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {
def "yamlRestTestVxCompatTest is wired into check and checkRestCompat"() {
given:

addSubProject(":distribution:bwc:minor") << """
addSubProject(":distribution:bwc:staged") << """
configurations { checkout }
artifacts {
checkout(new File(projectDir, "checkoutDir"))
Expand Down Expand Up @@ -180,7 +180,7 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {
given:
internalBuild()

addSubProject(":distribution:bwc:minor") << """
addSubProject(":distribution:bwc:staged") << """
configurations { checkout }
artifacts {
checkout(new File(projectDir, "checkoutDir"))
Expand Down Expand Up @@ -224,7 +224,7 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {

setupRestResources([], [])

file("distribution/bwc/minor/checkoutDir/src/yamlRestTest/resources/rest-api-spec/test/test.yml" ) << """
file("distribution/bwc/staged/checkoutDir/src/yamlRestTest/resources/rest-api-spec/test/test.yml" ) << """
"one":
- do:
do_.some.key_to_replace:
Expand Down

0 comments on commit 8f1204c

Please sign in to comment.