|
@@ -0,0 +1,84 @@
|
|
|
+/*
|
|
|
+ * Licensed to Elasticsearch under one or more contributor
|
|
|
+ * license agreements. See the NOTICE file distributed with
|
|
|
+ * this work for additional information regarding copyright
|
|
|
+ * ownership. Elasticsearch licenses this file to you under
|
|
|
+ * the Apache License, Version 2.0 (the "License"); you may
|
|
|
+ * not use this file except in compliance with the License.
|
|
|
+ * You may obtain a copy of the License at
|
|
|
+ *
|
|
|
+ * http://www.apache.org/licenses/LICENSE-2.0
|
|
|
+ *
|
|
|
+ * Unless required by applicable law or agreed to in writing,
|
|
|
+ * software distributed under the License is distributed on an
|
|
|
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
|
+ * KIND, either express or implied. See the License for the
|
|
|
+ * specific language governing permissions and limitations
|
|
|
+ * under the License.
|
|
|
+ */
|
|
|
+
|
|
|
+import java.util.regex.Matcher
|
|
|
+import org.elasticsearch.gradle.LoggedExec
|
|
|
+
|
|
|
+/**
|
|
|
+ * This is a dummy project which does a local worktree 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'
|
|
|
+
|
|
|
+// TODO: generate this, by introspecting Version.java for last previous minor
|
|
|
+String BWC_VERSION = "5.4.0-SNAPSHOT"
|
|
|
+
|
|
|
+String checkoutDir = "${buildDir}/bwc/checkout-5.x"
|
|
|
+task createClone(type: LoggedExec) {
|
|
|
+ onlyIf { new File(checkoutDir).exists() == false }
|
|
|
+ commandLine = ['git', 'clone', rootDir, checkoutDir]
|
|
|
+}
|
|
|
+
|
|
|
+task findUpstream(type: LoggedExec) {
|
|
|
+ dependsOn createClone
|
|
|
+ workingDir = checkoutDir
|
|
|
+ commandLine = ['git', 'remote', '-v']
|
|
|
+ doLast {
|
|
|
+ project.ext.upstreamExists = false
|
|
|
+ output.toString('UTF-8').eachLine {
|
|
|
+ if (it.contains("remote \"upstream\"")) {
|
|
|
+ project.ext.upstreamExists = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+task addUpstream(type: LoggedExec) {
|
|
|
+ dependsOn findUpstream
|
|
|
+ onlyIf { project.ext.upstreamExists == false }
|
|
|
+ workingDir = checkoutDir
|
|
|
+ commandLine = ['git', 'remote', 'add', 'upstream', 'https://github.com/elastic/elasticsearch.git']
|
|
|
+}
|
|
|
+
|
|
|
+task fetchLatest(type: LoggedExec) {
|
|
|
+ dependsOn addUpstream
|
|
|
+ workingDir = checkoutDir
|
|
|
+ commandLine = ['git', 'fetch', 'upstream', '5.x']
|
|
|
+}
|
|
|
+
|
|
|
+task checkoutBwcBranch(type: LoggedExec) {
|
|
|
+ dependsOn fetchLatest
|
|
|
+ workingDir = checkoutDir
|
|
|
+ commandLine = ['git', 'checkout', 'upstream/5.x']
|
|
|
+}
|
|
|
+
|
|
|
+File bwcZip = file("${checkoutDir}/distribution/zip/build/distributions/elasticsearch-${BWC_VERSION}.zip")
|
|
|
+task buildBwcVersion(type: LoggedExec) {
|
|
|
+ dependsOn checkoutBwcBranch
|
|
|
+ workingDir = checkoutDir
|
|
|
+ commandLine = ['gradle', ':distribution:zip:assemble']
|
|
|
+}
|
|
|
+
|
|
|
+artifacts {
|
|
|
+ 'default' file: bwcZip, name: 'elasticsearch', type: 'zip', builtBy: buildBwcVersion
|
|
|
+}
|
|
|
+
|