mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-08 22:14:59 +00:00
This commit changes the task type of the checkoutBwcBranch task to Exec from LoggedExec so that the output of the checkout command is shown. This enables us to see the SHA used for the checkout which can be useful when debugging a BWC break. Relates #25166
127 lines
4.6 KiB
Groovy
127 lines
4.6 KiB
Groovy
/*
|
|
* 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 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
|
|
boolean enabled = true
|
|
if (project.name == 'bwc-stable-snapshot') {
|
|
/* bwc-stable is only used if the last version is on a stable branch instead
|
|
* of a bugfix branch */
|
|
enabled = indexCompatVersions[-1].bugfix == 0
|
|
bwcVersion = indexCompatVersions[-1]
|
|
} else if (project.name == 'bwc-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 stable 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'
|
|
|
|
def (String major, String minor, String bugfix) = bwcVersion.split('\\.')
|
|
def (String currentMajor, String currentMinor, String currentBugfix) = version.split('\\.')
|
|
String bwcBranch
|
|
if (project.name == 'bwc-stable-snapshot') {
|
|
bwcBranch = "${major}.x"
|
|
} else {
|
|
bwcBranch = "${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']
|
|
}
|
|
|
|
// this is an Exec task so that the SHA that is checked out is logged
|
|
task checkoutBwcBranch(type: Exec) {
|
|
dependsOn fetchLatest
|
|
workingDir = checkoutDir
|
|
commandLine = ['git', 'checkout', "upstream/${bwcBranch}"]
|
|
}
|
|
|
|
File bwcDeb = file("${checkoutDir}/distribution/zip/build/distributions/elasticsearch-${bwcVersion}.deb")
|
|
File bwcRpm = file("${checkoutDir}/distribution/zip/build/distributions/elasticsearch-${bwcVersion}.rpm")
|
|
File bwcZip = file("${checkoutDir}/distribution/zip/build/distributions/elasticsearch-${bwcVersion}.zip")
|
|
task buildBwcVersion(type: GradleBuild) {
|
|
dependsOn checkoutBwcBranch
|
|
dir = checkoutDir
|
|
tasks = [':distribution:deb:assemble', ':distribution:rpm:assemble', ':distribution:zip:assemble']
|
|
}
|
|
|
|
|
|
artifacts {
|
|
'default' file: bwcDeb, name: 'elasticsearch', type: 'deb', builtBy: buildBwcVersion
|
|
'default' file: bwcRpm, name: 'elasticsearch', type: 'rpm', builtBy: buildBwcVersion
|
|
'default' file: bwcZip, name: 'elasticsearch', type: 'zip', builtBy: buildBwcVersion
|
|
}
|
|
}
|