Fix build on sles with new docker version (#36707)
The build hash for some Docker versions is longer than 7 characters. Closes #36414
This commit is contained in:
parent
9c2980a55e
commit
9f75b6ea58
|
@ -293,18 +293,7 @@ class BuildPlugin implements Plugin<Project> {
|
|||
it.standardOutput = dockerVersionOutput
|
||||
})
|
||||
final String dockerVersion = dockerVersionOutput.toString().trim()
|
||||
final Matcher matcher = dockerVersion =~ /Docker version (\d+\.\d+)\.\d+(?:-ce)?, build [0-9a-f]{7}/
|
||||
assert matcher.matches() : dockerVersion
|
||||
final dockerMajorMinorVersion = matcher.group(1)
|
||||
final String[] majorMinor = dockerMajorMinorVersion.split("\\.")
|
||||
if (Integer.parseInt(majorMinor[0]) < 17
|
||||
|| (Integer.parseInt(majorMinor[0]) == 17 && Integer.parseInt(majorMinor[1]) < 5)) {
|
||||
final String message = String.format(
|
||||
Locale.ROOT,
|
||||
"building Docker images requires Docker version 17.05+ due to use of multi-stage builds yet was [%s]",
|
||||
dockerVersion)
|
||||
throwDockerRequiredException(message)
|
||||
}
|
||||
checkDockerVersionRecent(dockerVersion)
|
||||
|
||||
final ByteArrayOutputStream dockerImagesErrorOutput = new ByteArrayOutputStream()
|
||||
// the Docker binary executes, check that we can execute a privileged command
|
||||
|
@ -339,6 +328,21 @@ class BuildPlugin implements Plugin<Project> {
|
|||
}
|
||||
}
|
||||
|
||||
protected static void checkDockerVersionRecent(String dockerVersion) {
|
||||
final Matcher matcher = dockerVersion =~ /Docker version (\d+\.\d+)\.\d+(?:-ce)?, build [0-9a-f]{7,40}/
|
||||
assert matcher.matches(): dockerVersion
|
||||
final dockerMajorMinorVersion = matcher.group(1)
|
||||
final String[] majorMinor = dockerMajorMinorVersion.split("\\.")
|
||||
if (Integer.parseInt(majorMinor[0]) < 17
|
||||
|| (Integer.parseInt(majorMinor[0]) == 17 && Integer.parseInt(majorMinor[1]) < 5)) {
|
||||
final String message = String.format(
|
||||
Locale.ROOT,
|
||||
"building Docker images requires Docker version 17.05+ due to use of multi-stage builds yet was [%s]",
|
||||
dockerVersion)
|
||||
throwDockerRequiredException(message)
|
||||
}
|
||||
}
|
||||
|
||||
private static void throwDockerRequiredException(final String message) {
|
||||
throw new GradleException(
|
||||
message + "\nyou can address this by attending to the reported issue, "
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
/*
|
||||
* 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.
|
||||
*/
|
||||
package org.elasticsearch.gradle;
|
||||
|
||||
import org.elasticsearch.gradle.test.GradleUnitTestCase;
|
||||
import org.gradle.api.GradleException;
|
||||
import org.junit.Test;
|
||||
|
||||
|
||||
public class BuildPluginTests extends GradleUnitTestCase {
|
||||
|
||||
public void testPassingDockerVersions() {
|
||||
BuildPlugin.checkDockerVersionRecent("Docker version 18.06.1-ce, build e68fc7a215d7");
|
||||
BuildPlugin.checkDockerVersionRecent("Docker version 17.05.0, build e68fc7a");
|
||||
BuildPlugin.checkDockerVersionRecent("Docker version 17.05.1, build e68fc7a");
|
||||
}
|
||||
|
||||
@Test(expected = GradleException.class)
|
||||
public void testFailingDockerVersions() {
|
||||
BuildPlugin.checkDockerVersionRecent("Docker version 17.04.0, build e68fc7a");
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue