/* * 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 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 checkoutDir = file("${buildDir}/bwc/checkout-${bwcBranch}") task createClone(type: LoggedExec) { onlyIf { checkoutDir.exists() == false } commandLine = ['git', 'clone', rootDir, checkoutDir] } // we use regular Exec here to ensure we always get output, regardless of logging level task findUpstream(type: Exec) { dependsOn createClone workingDir = checkoutDir 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.upstreamExists = false output.toString('UTF-8').eachLine { if (it.contains("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) { onlyIf { project.gradle.startParameter.isOffline() == false } dependsOn addUpstream workingDir = checkoutDir commandLine = ['git', 'fetch', 'upstream'] } task checkoutBwcBranch(type: LoggedExec) { dependsOn fetchLatest workingDir = checkoutDir commandLine = ['git', 'checkout', "upstream/${bwcBranch}"] } File bwcZip = file("${checkoutDir}/distribution/zip/build/distributions/elasticsearch-${bwcVersion}.zip") task buildBwcVersion(type: GradleBuild) { dependsOn checkoutBwcBranch dir = checkoutDir tasks = [':distribution:zip:assemble'] } artifacts { 'default' file: bwcZip, name: 'elasticsearch', type: 'zip', builtBy: buildBwcVersion } }