From 474ef7cd8d59294c2a1f0865426a1be7e89c7d57 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Wed, 24 Apr 2019 15:26:36 -0400 Subject: [PATCH 01/11] wip --- .../jib/gradle/ExtraDirectoryParameters.java | 23 +++++++++++++----- .../cloud/tools/jib/gradle/JibExtension.java | 24 ++++++++++++------- 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java index 2d419becc5..9e1df92629 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java @@ -57,7 +57,10 @@ public List getPathStrings() { public List getPaths() { // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a // String to make them go away. - String property = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH); + String deprecatedProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH); + String newProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS); + + String property = newProperty != null ? newProperty : deprecatedProperty; if (property != null) { List pathStrings = ConfigurationPropertyValidator.parseListProperty(property); return pathStrings.stream().map(Paths::get).collect(Collectors.toList()); @@ -71,12 +74,17 @@ public List getPaths() { * * @param paths paths to set. */ - // non-plural to retain backward-compatibility for the "jib.extraDirectory.path" config parameter - public void setPath(Object paths) { + public void setPaths(Object paths) { this.paths = project.files(paths).getFiles().stream().map(File::toPath).collect(Collectors.toList()); } + // for the deprecated "jib.extraDirectory.path" config parameter + @Deprecated + public void setPath(File path) { + this.paths = Collections.singletonList(path.toPath()); + } + /** * Gets the permissions for files in the extra layer on the container. Maps from absolute path on * the container to a 3-digit octal string representation of the file permission bits (e.g. {@code @@ -86,9 +94,12 @@ public void setPath(Object paths) { */ @Input public Map getPermissions() { - if (System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS) != null) { - return ConfigurationPropertyValidator.parseMapProperty( - System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS)); + String deprecatedProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS); + String newProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS); + + String property = newProperty != null ? newProperty : deprecatedProperty; + if (property != null) { + return ConfigurationPropertyValidator.parseMapProperty(property); } return permissions; } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index 70d35d5255..5c1b0262fe 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -17,6 +17,7 @@ package com.google.cloud.tools.jib.gradle; import com.google.cloud.tools.jib.plugins.common.PropertyNames; +import java.io.File; import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.model.ObjectFactory; @@ -48,8 +49,8 @@ * format = OCI * appRoot = '/app' * } - * extraDirectory { - * path = file('path/to/extra/dir') + * extraDirectories { + * paths = ['/path/to/extra/dir', 'can/be/relative/to/project/root'] * permissions = [ * '/path/on/container/file1': 744, * '/path/on/container/file2': 123 @@ -67,7 +68,7 @@ public class JibExtension { private final BaseImageParameters from; private final TargetImageParameters to; private final ContainerParameters container; - private final ExtraDirectoryParameters extraDirectory; + private final ExtraDirectoryParameters extraDirectories; private final Property allowInsecureRegistries; @@ -77,7 +78,7 @@ public JibExtension(Project project) { from = objectFactory.newInstance(BaseImageParameters.class); to = objectFactory.newInstance(TargetImageParameters.class); container = objectFactory.newInstance(ContainerParameters.class); - extraDirectory = objectFactory.newInstance(ExtraDirectoryParameters.class, project); + extraDirectories = objectFactory.newInstance(ExtraDirectoryParameters.class, project); allowInsecureRegistries = objectFactory.property(Boolean.class); @@ -98,7 +99,7 @@ public void container(Action action) { } public void extraDirectory(Action action) { - action.execute(extraDirectory); + action.execute(extraDirectories); } /** @@ -107,9 +108,14 @@ public void extraDirectory(Action action) { * * @param extraDirectories paths to set. */ - // non-plural to retain backward-compatibility for the "jib.extraDirectory" config parameter - public void setExtraDirectory(Object extraDirectories) { - this.extraDirectory.setPath(extraDirectories); + public void setExtraDirectories(Object extraDirectories) { + this.extraDirectories.setPaths(extraDirectories); + } + + @Deprecated + // for the deprecated "jib.extraDirectory" config parameter + public void setExtraDirectory(File extraDirectories) { + this.extraDirectories.setPath(extraDirectories); } public void setAllowInsecureRegistries(boolean allowInsecureRegistries) { @@ -137,7 +143,7 @@ public ContainerParameters getContainer() { @Nested @Optional public ExtraDirectoryParameters getExtraDirectory() { - return extraDirectory; + return extraDirectories; } @Input From fbbe7d3638029d3b453239918ff92be271e18eef Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Wed, 24 Apr 2019 17:08:26 -0400 Subject: [PATCH 02/11] wip --- .../cloud/tools/jib/gradle/BuildTarTask.java | 2 +- .../gradle/ExtraDirectoriesParameters.java | 98 +++++++++++++++++++ .../jib/gradle/ExtraDirectoryParameters.java | 64 ++++-------- .../cloud/tools/jib/gradle/FilesTask.java | 2 +- .../cloud/tools/jib/gradle/FilesTaskV2.java | 2 +- .../jib/gradle/GradleRawConfiguration.java | 4 +- .../cloud/tools/jib/gradle/JibExtension.java | 54 +++++++--- .../tools/jib/gradle/JibExtensionTest.java | 71 ++++++++++++-- 8 files changed, 232 insertions(+), 65 deletions(-) create mode 100644 jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java index c5c09a81cd..35e791ed7a 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java @@ -81,7 +81,7 @@ public void setTargetImage(String targetImage) { @InputFiles public FileCollection getInputFiles() { List extraDirectories = - Preconditions.checkNotNull(jibExtension).getExtraDirectory().getPaths(); + Preconditions.checkNotNull(jibExtension).getExtraDirectoriesPaths(); return extraDirectories .stream() .map(Path::toFile) diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java new file mode 100644 index 0000000000..4b25eb647a --- /dev/null +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java @@ -0,0 +1,98 @@ +/* + * Copyright 2018 Google LLC. + * + * Licensed 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 com.google.cloud.tools.jib.gradle; + +import com.google.cloud.tools.jib.plugins.common.ConfigurationPropertyValidator; +import com.google.cloud.tools.jib.plugins.common.PropertyNames; +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import javax.inject.Inject; +import org.gradle.api.Project; +import org.gradle.api.tasks.Input; +import org.gradle.api.tasks.Internal; + +/** Object in {@link JibExtension} that configures the extra directory. */ +public class ExtraDirectoriesParameters { + + private final Project project; + + private List paths; + private Map permissions = Collections.emptyMap(); + + @Inject + public ExtraDirectoriesParameters(Project project) { + this.project = project; + paths = + Collections.singletonList( + project.getProjectDir().toPath().resolve("src").resolve("main").resolve("jib")); + } + + @Input + public List getPathStrings() { + // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a + // String to make them go away. + return getPaths().stream().map(Path::toString).collect(Collectors.toList()); + } + + @Internal + public List getPaths() { + // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a + // String to make them go away. + String property = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS); + if (property != null) { + List pathStrings = ConfigurationPropertyValidator.parseListProperty(property); + return pathStrings.stream().map(Paths::get).collect(Collectors.toList()); + } + return paths; + } + + /** + * Sets paths. {@code paths} can be any suitable object describing file paths convertible by + * {@link Project#files} (such as {@code List}). + * + * @param paths paths to set. + */ + public void setPaths(Object paths) { + this.paths = + project.files(paths).getFiles().stream().map(File::toPath).collect(Collectors.toList()); + } + + /** + * Gets the permissions for files in the extra layer on the container. Maps from absolute path on + * the container to a 3-digit octal string representation of the file permission bits (e.g. {@code + * "/path/on/container" -> "755"}). + * + * @return the permissions map from path on container to file permissions + */ + @Input + public Map getPermissions() { + String property = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS); + if (property != null) { + return ConfigurationPropertyValidator.parseMapProperty(property); + } + return permissions; + } + + public void setPermissions(Map permissions) { + this.permissions = permissions; + } +} diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java index 9e1df92629..de5da2b1a6 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java @@ -22,67 +22,45 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collections; -import java.util.List; import java.util.Map; -import java.util.stream.Collectors; -import javax.inject.Inject; -import org.gradle.api.Project; +import javax.annotation.Nullable; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Internal; /** Object in {@link JibExtension} that configures the extra directory. */ +@Deprecated public class ExtraDirectoryParameters { - private final Project project; - - private List paths; - private Map permissions = Collections.emptyMap(); - - @Inject - public ExtraDirectoryParameters(Project project) { - this.project = project; - paths = - Collections.singletonList( - project.getProjectDir().toPath().resolve("src").resolve("main").resolve("jib")); - } + @Deprecated @Nullable private Path path; + @Deprecated private Map permissions = Collections.emptyMap(); + @Deprecated @Input - public List getPathStrings() { + @Nullable + public String getPathString() { // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a // String to make them go away. - return getPaths().stream().map(Path::toString).collect(Collectors.toList()); + return getPath() == null ? null : getPath().toString(); } + @Deprecated @Internal - public List getPaths() { + @Nullable + public Path getPath() { // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a // String to make them go away. - String deprecatedProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH); - String newProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS); - - String property = newProperty != null ? newProperty : deprecatedProperty; + String property = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH); if (property != null) { - List pathStrings = ConfigurationPropertyValidator.parseListProperty(property); - return pathStrings.stream().map(Paths::get).collect(Collectors.toList()); + return Paths.get(property); } - return paths; - } - - /** - * Sets paths. {@code paths} can be any suitable object describing file paths convertible by - * {@link Project#files} (such as {@code List}). - * - * @param paths paths to set. - */ - public void setPaths(Object paths) { - this.paths = - project.files(paths).getFiles().stream().map(File::toPath).collect(Collectors.toList()); + return path; } // for the deprecated "jib.extraDirectory.path" config parameter @Deprecated - public void setPath(File path) { - this.paths = Collections.singletonList(path.toPath()); + public void setPath(File file) { + // TODO: warn + this.path = file.toPath(); } /** @@ -92,19 +70,19 @@ public void setPath(File path) { * * @return the permissions map from path on container to file permissions */ + @Deprecated @Input public Map getPermissions() { - String deprecatedProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS); - String newProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS); - - String property = newProperty != null ? newProperty : deprecatedProperty; + String property = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS); if (property != null) { return ConfigurationPropertyValidator.parseMapProperty(property); } return permissions; } + @Deprecated public void setPermissions(Map permissions) { + // TODO: warn this.permissions = permissions; } } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java index d59523fe4b..a11b71a274 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java @@ -150,7 +150,7 @@ public void listFiles() { printProjectFiles(project); // Print extra layer - List extraDirectories = jibExtension.getExtraDirectory().getPaths(); + List extraDirectories = jibExtension.getExtraDirectoriesPaths(); extraDirectories.stream().filter(Files::exists).forEach(System.out::println); // Find project dependencies diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java index 1d8e4a4a6a..b3dbcc6273 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java @@ -69,7 +69,7 @@ public void listFiles() throws IOException { addProjectFiles(project); // Add extra layer - List extraDirectories = jibExtension.getExtraDirectory().getPaths(); + List extraDirectories = jibExtension.getExtraDirectoriesPaths(); extraDirectories.stream().filter(Files::exists).forEach(skaffoldFilesOutput::addInput); // Find project dependencies diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java index de7ae2fd03..e8fa990e4b 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java @@ -152,11 +152,11 @@ public Optional getProperty(String propertyName) { @Override public List getExtraDirectories() { - return jibExtension.getExtraDirectory().getPaths(); + return jibExtension.getExtraDirectoriesPaths(); } @Override public Map getExtraDirectoryPermissions() { - return TaskCommon.convertPermissionsMap(jibExtension.getExtraDirectory().getPermissions()); + return TaskCommon.convertPermissionsMap(jibExtension.getExtraDirectoriesPermissions()); } } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index 5c1b0262fe..f38e46b8f3 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -18,6 +18,10 @@ import com.google.cloud.tools.jib.plugins.common.PropertyNames; import java.io.File; +import java.nio.file.Path; +import java.util.Collections; +import java.util.List; +import java.util.Map; import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.model.ObjectFactory; @@ -68,7 +72,8 @@ public class JibExtension { private final BaseImageParameters from; private final TargetImageParameters to; private final ContainerParameters container; - private final ExtraDirectoryParameters extraDirectories; + @Deprecated private final ExtraDirectoryParameters extraDirectory; + private final ExtraDirectoriesParameters extraDirectories; private final Property allowInsecureRegistries; @@ -78,7 +83,8 @@ public JibExtension(Project project) { from = objectFactory.newInstance(BaseImageParameters.class); to = objectFactory.newInstance(TargetImageParameters.class); container = objectFactory.newInstance(ContainerParameters.class); - extraDirectories = objectFactory.newInstance(ExtraDirectoryParameters.class, project); + extraDirectory = objectFactory.newInstance(ExtraDirectoryParameters.class); + extraDirectories = objectFactory.newInstance(ExtraDirectoriesParameters.class, project); allowInsecureRegistries = objectFactory.property(Boolean.class); @@ -98,13 +104,25 @@ public void container(Action action) { action.execute(container); } + @Deprecated public void extraDirectory(Action action) { + action.execute(extraDirectory); + } + + public void extraDirectories(Action action) { action.execute(extraDirectories); } + @Deprecated + // for the deprecated "jib.extraDirectory" config parameter + public void setExtraDirectory(File extraDirectory) { + this.extraDirectory.setPath(extraDirectory); + } + /** * Sets extra directory paths. {@code extraDirectories} can be any suitable object describing file - * paths convertible by {@link Project#files} (such as {@code List}). + * paths convertible by {@link Project#files} (such as {@code List} or {@code + * List}). * * @param extraDirectories paths to set. */ @@ -112,12 +130,6 @@ public void setExtraDirectories(Object extraDirectories) { this.extraDirectories.setPaths(extraDirectories); } - @Deprecated - // for the deprecated "jib.extraDirectory" config parameter - public void setExtraDirectory(File extraDirectories) { - this.extraDirectories.setPath(extraDirectories); - } - public void setAllowInsecureRegistries(boolean allowInsecureRegistries) { this.allowInsecureRegistries.set(allowInsecureRegistries); } @@ -142,8 +154,28 @@ public ContainerParameters getContainer() { @Nested @Optional - public ExtraDirectoryParameters getExtraDirectory() { - return extraDirectories; + public List getExtraDirectoriesPaths() { + Path deprecatedPath = extraDirectory.getPath(); + List paths = extraDirectories.getPaths(); + + if (deprecatedPath != null && !paths.isEmpty()) { + throw new IllegalArgumentException( + "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); + } + return deprecatedPath != null ? Collections.singletonList(deprecatedPath) : paths; + } + + @Nested + @Optional + public Map getExtraDirectoriesPermissions() { + Map deprecatedPermissions = extraDirectory.getPermissions(); + Map permissions = extraDirectories.getPermissions(); + + if (!deprecatedPermissions.isEmpty() && !permissions.isEmpty()) { + throw new IllegalArgumentException( + "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); + } + return !deprecatedPermissions.isEmpty() ? deprecatedPermissions : permissions; } @Input diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java index c4ca5edbb9..98a1f82082 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java @@ -151,13 +151,15 @@ public void testContainer() { } @Test - public void testExtraDirectory() { + public void testExtraDirectories_default() { Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "src", "main", "jib")), - testJibExtension.getExtraDirectory().getPaths()); - Assert.assertEquals( - Collections.emptyMap(), testJibExtension.getExtraDirectory().getPermissions()); + testJibExtension.getExtraDirectoriesPaths()); + Assert.assertEquals(Collections.emptyMap(), testJibExtension.getExtraDirectoriesPermissions()); + } + @Test + public void testExtraDirectories_deprecatedConfig() { testJibExtension.extraDirectory( extraDirectory -> { extraDirectory.setPath(Paths.get("test", "path").toFile()); @@ -165,10 +167,67 @@ public void testExtraDirectory() { }); Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), - testJibExtension.getExtraDirectory().getPaths()); + testJibExtension.getExtraDirectoriesPaths()); Assert.assertEquals( ImmutableMap.of("file1", "123", "file2", "456"), - testJibExtension.getExtraDirectory().getPermissions()); + testJibExtension.getExtraDirectoriesPermissions()); + } + + @Test + public void testExtraDirectories_string() { + testJibExtension.extraDirectories( + extraDirectories -> { + extraDirectories.setPaths("test/path"); + extraDirectories.setPermissions(ImmutableMap.of("file1", "123", "file2", "456")); + }); + Assert.assertEquals( + Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), + testJibExtension.getExtraDirectoriesPaths()); + Assert.assertEquals( + ImmutableMap.of("file1", "123", "file2", "456"), + testJibExtension.getExtraDirectoriesPermissions()); + } + + @Test + public void testExtraDirectories_file() { + testJibExtension.extraDirectories( + extraDirectories -> { + extraDirectories.setPaths(Paths.get("test", "path").toFile()); + }); + Assert.assertEquals( + Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), + testJibExtension.getExtraDirectoriesPaths()); + } + + @Test + public void testExtraDirectories_stringList() { + testJibExtension.extraDirectories( + extraDirectories -> { + extraDirectories.setPaths(Arrays.asList("test/path", "another/path")); + extraDirectories.setPermissions(ImmutableMap.of("file1", "123", "file2", "456")); + }); + + String projectRoot = fakeProject.getProjectDir().getPath(); + Assert.assertEquals( + Arrays.asList( + Paths.get(projectRoot, "test", "path"), Paths.get(projectRoot, "another", "path")), + testJibExtension.getExtraDirectoriesPaths()); + } + + @Test + public void testExtraDirectories_fileList() { + testJibExtension.extraDirectories( + extraDirectories -> { + extraDirectories.setPaths( + Arrays.asList( + Paths.get("test", "path").toFile(), Paths.get("another", "path").toFile())); + }); + + String projectRoot = fakeProject.getProjectDir().getPath(); + Assert.assertEquals( + Arrays.asList( + Paths.get(projectRoot, "test", "path"), Paths.get(projectRoot, "another", "path")), + testJibExtension.getExtraDirectoriesPaths()); } @Test From 85817efaef155e5bb3d4c7cbeeabc59b5e5372e7 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Thu, 25 Apr 2019 10:54:58 -0400 Subject: [PATCH 03/11] wip --- .../tools/jib/gradle/BuildDockerTask.java | 1 + .../tools/jib/gradle/BuildImageTask.java | 1 + .../cloud/tools/jib/gradle/BuildTarTask.java | 3 +- .../gradle/ExtraDirectoriesParameters.java | 15 +++- .../jib/gradle/ExtraDirectoryParameters.java | 88 ------------------- .../cloud/tools/jib/gradle/FilesTask.java | 2 +- .../cloud/tools/jib/gradle/FilesTaskV2.java | 2 +- .../jib/gradle/GradleRawConfiguration.java | 4 +- .../cloud/tools/jib/gradle/JibExtension.java | 44 +++------- .../cloud/tools/jib/gradle/TaskCommon.java | 21 ++++- .../tools/jib/gradle/JibExtensionTest.java | 21 ++--- .../tools/jib/gradle/TaskCommonTest.java | 3 + 12 files changed, 65 insertions(+), 140 deletions(-) delete mode 100644 jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java create mode 100644 jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildDockerTask.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildDockerTask.java index 2454ac5ee2..5b2fe93695 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildDockerTask.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildDockerTask.java @@ -101,6 +101,7 @@ public void buildDocker() // Asserts required @Input parameters are not null. Preconditions.checkNotNull(jibExtension); + TaskCommon.checkDeprecatedUsage(jibExtension, getLogger()); TaskCommon.disableHttpLogging(); try { diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildImageTask.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildImageTask.java index b821d08462..e367562666 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildImageTask.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildImageTask.java @@ -78,6 +78,7 @@ public void buildImage() MainClassInferenceException { // Asserts required @Input parameters are not null. Preconditions.checkNotNull(jibExtension); + TaskCommon.checkDeprecatedUsage(jibExtension, getLogger()); TaskCommon.disableHttpLogging(); try { diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java index 35e791ed7a..0f1e7c74e6 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildTarTask.java @@ -81,7 +81,7 @@ public void setTargetImage(String targetImage) { @InputFiles public FileCollection getInputFiles() { List extraDirectories = - Preconditions.checkNotNull(jibExtension).getExtraDirectoriesPaths(); + Preconditions.checkNotNull(jibExtension).getExtraDirectories().getPaths(); return extraDirectories .stream() .map(Path::toFile) @@ -105,6 +105,7 @@ public void buildTar() MainClassInferenceException { // Asserts required @Input parameters are not null. Preconditions.checkNotNull(jibExtension); + TaskCommon.checkDeprecatedUsage(jibExtension, getLogger()); TaskCommon.disableHttpLogging(); try { diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java index 4b25eb647a..5490df5796 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java @@ -57,7 +57,9 @@ public List getPathStrings() { public List getPaths() { // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a // String to make them go away. - String property = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS); + String deprecatedProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH); + String newProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS); + String property = newProperty != null ? newProperty : deprecatedProperty; if (property != null) { List pathStrings = ConfigurationPropertyValidator.parseListProperty(property); return pathStrings.stream().map(Paths::get).collect(Collectors.toList()); @@ -67,7 +69,7 @@ public List getPaths() { /** * Sets paths. {@code paths} can be any suitable object describing file paths convertible by - * {@link Project#files} (such as {@code List}). + * {@link Project#files} (such as {@link File}, {@code List}, or {@code List}). * * @param paths paths to set. */ @@ -76,6 +78,11 @@ public void setPaths(Object paths) { project.files(paths).getFiles().stream().map(File::toPath).collect(Collectors.toList()); } + @Deprecated + public void setPath(File path) { + setPaths(path); + } + /** * Gets the permissions for files in the extra layer on the container. Maps from absolute path on * the container to a 3-digit octal string representation of the file permission bits (e.g. {@code @@ -85,7 +92,9 @@ public void setPaths(Object paths) { */ @Input public Map getPermissions() { - String property = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS); + String deprecatedProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS); + String newProperty = System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS); + String property = newProperty != null ? newProperty : deprecatedProperty; if (property != null) { return ConfigurationPropertyValidator.parseMapProperty(property); } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java deleted file mode 100644 index de5da2b1a6..0000000000 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoryParameters.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2018 Google LLC. - * - * Licensed 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 com.google.cloud.tools.jib.gradle; - -import com.google.cloud.tools.jib.plugins.common.ConfigurationPropertyValidator; -import com.google.cloud.tools.jib.plugins.common.PropertyNames; -import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Collections; -import java.util.Map; -import javax.annotation.Nullable; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.Internal; - -/** Object in {@link JibExtension} that configures the extra directory. */ -@Deprecated -public class ExtraDirectoryParameters { - - @Deprecated @Nullable private Path path; - @Deprecated private Map permissions = Collections.emptyMap(); - - @Deprecated - @Input - @Nullable - public String getPathString() { - // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a - // String to make them go away. - return getPath() == null ? null : getPath().toString(); - } - - @Deprecated - @Internal - @Nullable - public Path getPath() { - // Gradle warns about @Input annotations on File objects, so we have to expose a getter for a - // String to make them go away. - String property = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH); - if (property != null) { - return Paths.get(property); - } - return path; - } - - // for the deprecated "jib.extraDirectory.path" config parameter - @Deprecated - public void setPath(File file) { - // TODO: warn - this.path = file.toPath(); - } - - /** - * Gets the permissions for files in the extra layer on the container. Maps from absolute path on - * the container to a 3-digit octal string representation of the file permission bits (e.g. {@code - * "/path/on/container" -> "755"}). - * - * @return the permissions map from path on container to file permissions - */ - @Deprecated - @Input - public Map getPermissions() { - String property = System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS); - if (property != null) { - return ConfigurationPropertyValidator.parseMapProperty(property); - } - return permissions; - } - - @Deprecated - public void setPermissions(Map permissions) { - // TODO: warn - this.permissions = permissions; - } -} diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java index a11b71a274..e32ad05486 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTask.java @@ -150,7 +150,7 @@ public void listFiles() { printProjectFiles(project); // Print extra layer - List extraDirectories = jibExtension.getExtraDirectoriesPaths(); + List extraDirectories = jibExtension.getExtraDirectories().getPaths(); extraDirectories.stream().filter(Files::exists).forEach(System.out::println); // Find project dependencies diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java index b3dbcc6273..6c5b2938a4 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/FilesTaskV2.java @@ -69,7 +69,7 @@ public void listFiles() throws IOException { addProjectFiles(project); // Add extra layer - List extraDirectories = jibExtension.getExtraDirectoriesPaths(); + List extraDirectories = jibExtension.getExtraDirectories().getPaths(); extraDirectories.stream().filter(Files::exists).forEach(skaffoldFilesOutput::addInput); // Find project dependencies diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java index e8fa990e4b..eed3b424a3 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/GradleRawConfiguration.java @@ -152,11 +152,11 @@ public Optional getProperty(String propertyName) { @Override public List getExtraDirectories() { - return jibExtension.getExtraDirectoriesPaths(); + return jibExtension.getExtraDirectories().getPaths(); } @Override public Map getExtraDirectoryPermissions() { - return TaskCommon.convertPermissionsMap(jibExtension.getExtraDirectoriesPermissions()); + return TaskCommon.convertPermissionsMap(jibExtension.getExtraDirectories().getPermissions()); } } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index f38e46b8f3..06c92ab51b 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -18,10 +18,6 @@ import com.google.cloud.tools.jib.plugins.common.PropertyNames; import java.io.File; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Map; import org.gradle.api.Action; import org.gradle.api.Project; import org.gradle.api.model.ObjectFactory; @@ -72,18 +68,18 @@ public class JibExtension { private final BaseImageParameters from; private final TargetImageParameters to; private final ContainerParameters container; - @Deprecated private final ExtraDirectoryParameters extraDirectory; private final ExtraDirectoriesParameters extraDirectories; - private final Property allowInsecureRegistries; + @Deprecated boolean extraDirectoryConfigured; + @Deprecated boolean extraDirectoriesConfigured; + public JibExtension(Project project) { ObjectFactory objectFactory = project.getObjects(); from = objectFactory.newInstance(BaseImageParameters.class); to = objectFactory.newInstance(TargetImageParameters.class); container = objectFactory.newInstance(ContainerParameters.class); - extraDirectory = objectFactory.newInstance(ExtraDirectoryParameters.class); extraDirectories = objectFactory.newInstance(ExtraDirectoriesParameters.class, project); allowInsecureRegistries = objectFactory.property(Boolean.class); @@ -105,18 +101,21 @@ public void container(Action action) { } @Deprecated - public void extraDirectory(Action action) { - action.execute(extraDirectory); + public void extraDirectory(Action action) { + extraDirectoryConfigured = true; + action.execute(extraDirectories); } public void extraDirectories(Action action) { + extraDirectoriesConfigured = true; action.execute(extraDirectories); } @Deprecated // for the deprecated "jib.extraDirectory" config parameter public void setExtraDirectory(File extraDirectory) { - this.extraDirectory.setPath(extraDirectory); + extraDirectoryConfigured = true; + this.extraDirectories.setPaths(extraDirectory); } /** @@ -127,6 +126,7 @@ public void setExtraDirectory(File extraDirectory) { * @param extraDirectories paths to set. */ public void setExtraDirectories(Object extraDirectories) { + extraDirectoriesConfigured = true; this.extraDirectories.setPaths(extraDirectories); } @@ -154,28 +154,8 @@ public ContainerParameters getContainer() { @Nested @Optional - public List getExtraDirectoriesPaths() { - Path deprecatedPath = extraDirectory.getPath(); - List paths = extraDirectories.getPaths(); - - if (deprecatedPath != null && !paths.isEmpty()) { - throw new IllegalArgumentException( - "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); - } - return deprecatedPath != null ? Collections.singletonList(deprecatedPath) : paths; - } - - @Nested - @Optional - public Map getExtraDirectoriesPermissions() { - Map deprecatedPermissions = extraDirectory.getPermissions(); - Map permissions = extraDirectories.getPermissions(); - - if (!deprecatedPermissions.isEmpty() && !permissions.isEmpty()) { - throw new IllegalArgumentException( - "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); - } - return !deprecatedPermissions.isEmpty() ? deprecatedPermissions : permissions; + public ExtraDirectoriesParameters getExtraDirectories() { + return extraDirectories; } @Input diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java index 3464a0d197..f7563fa465 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java @@ -19,12 +19,13 @@ import com.google.api.client.http.HttpTransport; import com.google.cloud.tools.jib.configuration.FilePermissions; import com.google.cloud.tools.jib.filesystem.AbsoluteUnixPath; -import com.google.common.annotations.VisibleForTesting; +import com.google.cloud.tools.jib.plugins.common.PropertyNames; import java.util.HashMap; import java.util.Map; import java.util.logging.Level; import javax.annotation.Nullable; import org.gradle.api.Project; +import org.gradle.api.logging.Logger; import org.gradle.api.plugins.WarPluginConvention; import org.gradle.api.tasks.bundling.War; import org.gradle.internal.logging.events.LogEvent; @@ -67,6 +68,23 @@ static void disableHttpLogging() { java.util.logging.Logger.getLogger(HttpTransport.class.getName()).setLevel(Level.OFF); } + @Deprecated + static void checkDeprecatedUsage(JibExtension jibExtension, Logger logger) { + if (jibExtension.extraDirectoryConfigured + || System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH) != null + || System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS) != null) { + logger.warn( + "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " + + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "'jib.extraDirectories.permissions'"); + + if (jibExtension.extraDirectoriesConfigured) { + throw new IllegalArgumentException( + "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); + } + } + } + /** * Validates and converts a {@code String->String} file-path-to-file-permissions map to an * equivalent {@code AbsoluteUnixPath->FilePermission} map. @@ -74,7 +92,6 @@ static void disableHttpLogging() { * @param stringMap the map to convert (example entry: {@code "/path/on/container" -> "755"}) * @return the converted map */ - @VisibleForTesting static Map convertPermissionsMap( Map stringMap) { Map permissionsMap = new HashMap<>(); diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java index 98a1f82082..77e9d3079d 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java @@ -154,23 +154,24 @@ public void testContainer() { public void testExtraDirectories_default() { Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "src", "main", "jib")), - testJibExtension.getExtraDirectoriesPaths()); - Assert.assertEquals(Collections.emptyMap(), testJibExtension.getExtraDirectoriesPermissions()); + testJibExtension.getExtraDirectories().getPaths()); + Assert.assertEquals( + Collections.emptyMap(), testJibExtension.getExtraDirectories().getPermissions()); } @Test public void testExtraDirectories_deprecatedConfig() { testJibExtension.extraDirectory( extraDirectory -> { - extraDirectory.setPath(Paths.get("test", "path").toFile()); + extraDirectory.setPaths(Paths.get("test", "path").toFile()); extraDirectory.setPermissions(ImmutableMap.of("file1", "123", "file2", "456")); }); Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), - testJibExtension.getExtraDirectoriesPaths()); + testJibExtension.getExtraDirectories().getPaths()); Assert.assertEquals( ImmutableMap.of("file1", "123", "file2", "456"), - testJibExtension.getExtraDirectoriesPermissions()); + testJibExtension.getExtraDirectories().getPermissions()); } @Test @@ -182,10 +183,10 @@ public void testExtraDirectories_string() { }); Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), - testJibExtension.getExtraDirectoriesPaths()); + testJibExtension.getExtraDirectories().getPaths()); Assert.assertEquals( ImmutableMap.of("file1", "123", "file2", "456"), - testJibExtension.getExtraDirectoriesPermissions()); + testJibExtension.getExtraDirectories().getPermissions()); } @Test @@ -196,7 +197,7 @@ public void testExtraDirectories_file() { }); Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), - testJibExtension.getExtraDirectoriesPaths()); + testJibExtension.getExtraDirectories().getPaths()); } @Test @@ -211,7 +212,7 @@ public void testExtraDirectories_stringList() { Assert.assertEquals( Arrays.asList( Paths.get(projectRoot, "test", "path"), Paths.get(projectRoot, "another", "path")), - testJibExtension.getExtraDirectoriesPaths()); + testJibExtension.getExtraDirectories().getPaths()); } @Test @@ -227,7 +228,7 @@ public void testExtraDirectories_fileList() { Assert.assertEquals( Arrays.asList( Paths.get(projectRoot, "test", "path"), Paths.get(projectRoot, "another", "path")), - testJibExtension.getExtraDirectoriesPaths()); + testJibExtension.getExtraDirectories().getPaths()); } @Test diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java new file mode 100644 index 0000000000..5f13fd8fa9 --- /dev/null +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java @@ -0,0 +1,3 @@ +package com.google.cloud.tools.jib.gradle; + +public class TaskCommonTest {} From b92289f3ea54c91480bfbcb6144e399e9be3b582 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Thu, 25 Apr 2019 17:05:58 -0400 Subject: [PATCH 04/11] finally done, hopefully --- .../projects/simple/build-extra-dirs.gradle | 2 +- .../projects/simple/build-extra-dirs2.gradle | 4 +- .../gradle/projects/simple/build.gradle | 2 +- .../projects/simple/complex-build.gradle | 4 +- .../cloud/tools/jib/gradle/TaskCommon.java | 4 +- .../tools/jib/gradle/JibExtensionTest.java | 38 +++++- .../tools/jib/gradle/TaskCommonTest.java | 125 +++++++++++++++++- .../complex-service/build.gradle | 6 +- .../gradle/projects/simple/build.gradle | 4 +- 9 files changed, 171 insertions(+), 18 deletions(-) diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle index d185ff2603..47602598ca 100644 --- a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle @@ -15,4 +15,4 @@ dependencies { } jib.to.image = System.getProperty("_TARGET_IMAGE") -jib.extraDirectory = ['src/main/custom-extra-dir', 'src/main/custom-extra-dir2'] +jib.extraDirectories = ['src/main/custom-extra-dir', 'src/main/custom-extra-dir2'] diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs2.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs2.gradle index 07ebab8972..362d5b54da 100644 --- a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs2.gradle +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs2.gradle @@ -15,7 +15,7 @@ dependencies { } jib.to.image = System.getProperty("_TARGET_IMAGE") -jib.extraDirectory { - path = files('src/main/custom-extra-dir', 'src/main/custom-extra-dir2') +jib.extraDirectories { + paths = files('src/main/custom-extra-dir', 'src/main/custom-extra-dir2') permissions = ['/baz':'705'] } diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle index b350cfeb4d..aab8a467ba 100644 --- a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle @@ -28,5 +28,5 @@ jib { workingDirectory = '/home' extraClasspath = ['/d1','/d2'] } - extraDirectory = file('src/main/custom-extra-dir') + extraDirectories = file('src/main/custom-extra-dir') } diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/complex-build.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/complex-build.gradle index 9a9b9d1fbe..de303ff081 100644 --- a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/complex-build.gradle +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/complex-build.gradle @@ -39,8 +39,8 @@ jib { labels = [key1:'value1', key2:'value2'] volumes = ['/var/log', '/var/log2'] } - extraDirectory { - path = file('src/main/custom-extra-dir') + extraDirectories { + paths = file('src/main/custom-extra-dir') permissions = ['/foo':'755', '/bar/cat':'777'] } allowInsecureRegistries = true diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java index f7563fa465..e9f43fb710 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java @@ -78,7 +78,9 @@ static void checkDeprecatedUsage(JibExtension jibExtension, Logger logger) { + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); - if (jibExtension.extraDirectoriesConfigured) { + if (jibExtension.extraDirectoriesConfigured + || System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS) != null + || System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS) != null) { throw new IllegalArgumentException( "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); } diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java index 77e9d3079d..3eb7cec16a 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java @@ -56,6 +56,8 @@ private static void clearProperties() { System.clearProperty("jib.container.user"); System.clearProperty("jib.extraDirectory.path"); System.clearProperty("jib.extraDirectory.permissions"); + System.clearProperty("jib.extraDirectories.paths"); + System.clearProperty("jib.extraDirectories.permissions"); } @Before @@ -163,9 +165,12 @@ public void testExtraDirectories_default() { public void testExtraDirectories_deprecatedConfig() { testJibExtension.extraDirectory( extraDirectory -> { - extraDirectory.setPaths(Paths.get("test", "path").toFile()); + extraDirectory.setPath(Paths.get("test", "path").toFile()); extraDirectory.setPermissions(ImmutableMap.of("file1", "123", "file2", "456")); }); + Assert.assertTrue(testJibExtension.extraDirectoryConfigured); + Assert.assertFalse(testJibExtension.extraDirectoriesConfigured); + Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), testJibExtension.getExtraDirectories().getPaths()); @@ -175,12 +180,15 @@ public void testExtraDirectories_deprecatedConfig() { } @Test - public void testExtraDirectories_string() { + public void testExtraDirectories() { testJibExtension.extraDirectories( extraDirectories -> { extraDirectories.setPaths("test/path"); extraDirectories.setPermissions(ImmutableMap.of("file1", "123", "file2", "456")); }); + Assert.assertFalse(testJibExtension.extraDirectoryConfigured); + Assert.assertTrue(testJibExtension.extraDirectoriesConfigured); + Assert.assertEquals( Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), testJibExtension.getExtraDirectories().getPaths()); @@ -190,7 +198,7 @@ public void testExtraDirectories_string() { } @Test - public void testExtraDirectories_file() { + public void testExtraDirectories_fileForPaths() { testJibExtension.extraDirectories( extraDirectories -> { extraDirectories.setPaths(Paths.get("test", "path").toFile()); @@ -201,7 +209,7 @@ public void testExtraDirectories_file() { } @Test - public void testExtraDirectories_stringList() { + public void testExtraDirectories_stringListForPaths() { testJibExtension.extraDirectories( extraDirectories -> { extraDirectories.setPaths(Arrays.asList("test/path", "another/path")); @@ -216,7 +224,7 @@ public void testExtraDirectories_stringList() { } @Test - public void testExtraDirectories_fileList() { + public void testExtraDirectories_fileListForPaths() { testJibExtension.extraDirectories( extraDirectories -> { extraDirectories.setPaths( @@ -280,5 +288,25 @@ public void testProperties() { Assert.assertTrue(testJibExtension.getContainer().getUseCurrentTimestamp()); System.setProperty("jib.container.user", "myUser"); Assert.assertEquals("myUser", testJibExtension.getContainer().getUser()); + System.setProperty("jib.extraDirectories.paths", "/foo,/bar/baz"); + Assert.assertEquals( + Arrays.asList(Paths.get("/foo"), Paths.get("/bar/baz")), + testJibExtension.getExtraDirectories().getPaths()); + System.setProperty("jib.extraDirectories.permissions", "/foo/bar=707,/baz=456"); + Assert.assertEquals( + ImmutableMap.of("/foo/bar", "707", "/baz", "456"), + testJibExtension.getExtraDirectories().getPermissions()); + } + + @Test + public void testDeprecatedProperties() { + System.setProperty("jib.extraDirectory.path", "/foo,/bar/baz"); + Assert.assertEquals( + Arrays.asList(Paths.get("/foo"), Paths.get("/bar/baz")), + testJibExtension.getExtraDirectories().getPaths()); + System.setProperty("jib.extraDirectory.permissions", "/foo/bar=707,/baz=456"); + Assert.assertEquals( + ImmutableMap.of("/foo/bar", "707", "/baz", "456"), + testJibExtension.getExtraDirectories().getPermissions()); } } diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java index 5f13fd8fa9..11bc572a55 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java @@ -1,3 +1,126 @@ +/* + * Copyright 2019 Google LLC. + * + * Licensed 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 com.google.cloud.tools.jib.gradle; -public class TaskCommonTest {} +import org.gradle.api.logging.Logger; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +/** Tests for {@link TaskCommon}. */ +@RunWith(MockitoJUnitRunner.class) +public class TaskCommonTest { + + @Mock private JibExtension jibExtension; + @Mock private Logger logger; + + @Before + public void setUp() { + Assert.assertNull(System.getProperty("jib.extraDirectory.path")); + Assert.assertNull(System.getProperty("jib.extraDirectory.permissions")); + Assert.assertNull(System.getProperty("jib.extraDirectories.paths")); + Assert.assertNull(System.getProperty("jib.extraDirectories.permissions")); + } + + @After + public void tearDown() { + System.clearProperty("jib.extraDirectory.path"); + System.clearProperty("jib.extraDirectory.permissions"); + System.clearProperty("jib.extraDirectories.paths"); + System.clearProperty("jib.extraDirectories.permissions"); + } + + @Test + public void testCheckDeprecatedUsage_default() { + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Mockito.verify(logger, Mockito.never()).warn(Mockito.anyString()); + } + + @Test + public void testCheckDeprecatedUsage_extraDirectoriesConfigured() { + jibExtension.extraDirectoriesConfigured = true; + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Mockito.verify(logger, Mockito.never()).warn(Mockito.anyString()); + } + + @Test + public void testCheckDeprecatedUsage_extraDirectoryPathPropertySet() { + System.setProperty("jib.extraDirectory.path", "something"); + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Mockito.verify(logger, Mockito.times(1)) + .warn( + "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " + + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "'jib.extraDirectories.permissions'"); + } + + @Test + public void testCheckDeprecatedUsage_extraDirectoryPermissionsPropertySet() { + System.setProperty("jib.extraDirectory.permissions", "something"); + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Mockito.verify(logger, Mockito.times(1)) + .warn( + "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " + + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "'jib.extraDirectories.permissions'"); + } + + @Test + public void testCheckDeprecatedUsage_extraDirectoryAndExtraDirectoriesPropertiesSet() { + System.setProperty("jib.extraDirectory.path", "something"); + System.setProperty("jib.extraDirectories.permissions", "something"); + + try { + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Assert.fail(); + } catch (IllegalArgumentException ex) { + Assert.assertEquals( + "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'", + ex.getMessage()); + } + } + + @Test + public void testCheckDeprecatedUsage_extraDirectoryConfigured() { + jibExtension.extraDirectoryConfigured = true; + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Mockito.verify(logger, Mockito.times(1)) + .warn( + "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " + + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "'jib.extraDirectories.permissions'"); + } + + @Test + public void testCheckDeprecatedUsage_extraDirectoryAndExtraDirectoriesConfigured() { + jibExtension.extraDirectoryConfigured = true; + jibExtension.extraDirectoriesConfigured = true; + try { + TaskCommon.checkDeprecatedUsage(jibExtension, logger); + Assert.fail(); + } catch (IllegalArgumentException ex) { + Assert.assertEquals( + "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'", + ex.getMessage()); + } + } +} diff --git a/jib-gradle-plugin/src/test/resources/gradle/projects/multi-service/complex-service/build.gradle b/jib-gradle-plugin/src/test/resources/gradle/projects/multi-service/complex-service/build.gradle index 92ca5a3e66..eacc676f1c 100644 --- a/jib-gradle-plugin/src/test/resources/gradle/projects/multi-service/complex-service/build.gradle +++ b/jib-gradle-plugin/src/test/resources/gradle/projects/multi-service/complex-service/build.gradle @@ -17,8 +17,8 @@ jib { to { image = System.getProperty("_TARGET_IMAGE") } - extraDirectory { - path = file('src/main/other-jib') + extraDirectories { + paths = file('src/main/other-jib') } } @@ -34,4 +34,4 @@ dependencies { compile project(':lib') compile 'org.apache.commons:commons-io:1.3.2' compile 'com.google.guava:guava:HEAD-jre-SNAPSHOT' -} \ No newline at end of file +} diff --git a/jib-gradle-plugin/src/test/resources/gradle/projects/simple/build.gradle b/jib-gradle-plugin/src/test/resources/gradle/projects/simple/build.gradle index 52d0f7cab5..6dab9e5207 100644 --- a/jib-gradle-plugin/src/test/resources/gradle/projects/simple/build.gradle +++ b/jib-gradle-plugin/src/test/resources/gradle/projects/simple/build.gradle @@ -18,7 +18,7 @@ jib { to { image = System.getProperty("_TARGET_IMAGE") } - extraDirectory { - path = file('src/main/custom-extra-dir') + extraDirectories { + paths = file('src/main/custom-extra-dir') } } From b4654fd36e674397e02e48124f4c6ea4f39ed44d Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Mon, 29 Apr 2019 14:11:49 -0400 Subject: [PATCH 05/11] Minor changes --- .../tools/jib/gradle/ExtraDirectoriesParameters.java | 2 +- .../google/cloud/tools/jib/gradle/JibExtension.java | 4 ++-- .../google/cloud/tools/jib/gradle/TaskCommon.java | 4 ++-- .../cloud/tools/jib/gradle/TaskCommonTest.java | 12 ++++++------ .../maven/projects/simple/pom-complex-properties.xml | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java index 5490df5796..9b7521951e 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java @@ -30,7 +30,7 @@ import org.gradle.api.tasks.Input; import org.gradle.api.tasks.Internal; -/** Object in {@link JibExtension} that configures the extra directory. */ +/** Object in {@link JibExtension} that configures the extra directories. */ public class ExtraDirectoriesParameters { private final Project project; diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index 06c92ab51b..60c7311a40 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -115,12 +115,12 @@ public void extraDirectories(Action action) // for the deprecated "jib.extraDirectory" config parameter public void setExtraDirectory(File extraDirectory) { extraDirectoryConfigured = true; - this.extraDirectories.setPaths(extraDirectory); + this.extraDirectories.setPath(extraDirectory); } /** * Sets extra directory paths. {@code extraDirectories} can be any suitable object describing file - * paths convertible by {@link Project#files} (such as {@code List} or {@code + * paths convertible by {@link Project#files} (such as {@link File}, {@code List} or {@code * List}). * * @param extraDirectories paths to set. diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java index e9f43fb710..d6148edd50 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java @@ -74,8 +74,8 @@ static void checkDeprecatedUsage(JibExtension jibExtension, Logger logger) { || System.getProperty(PropertyNames.EXTRA_DIRECTORY_PATH) != null || System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS) != null) { logger.warn( - "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " - + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " + + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); if (jibExtension.extraDirectoriesConfigured diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java index 11bc572a55..f391c04b18 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java @@ -68,8 +68,8 @@ public void testCheckDeprecatedUsage_extraDirectoryPathPropertySet() { TaskCommon.checkDeprecatedUsage(jibExtension, logger); Mockito.verify(logger, Mockito.times(1)) .warn( - "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " - + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " + + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); } @@ -79,8 +79,8 @@ public void testCheckDeprecatedUsage_extraDirectoryPermissionsPropertySet() { TaskCommon.checkDeprecatedUsage(jibExtension, logger); Mockito.verify(logger, Mockito.times(1)) .warn( - "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " - + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " + + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); } @@ -105,8 +105,8 @@ public void testCheckDeprecatedUsage_extraDirectoryConfigured() { TaskCommon.checkDeprecatedUsage(jibExtension, logger); Mockito.verify(logger, Mockito.times(1)) .warn( - "'jib.extraDirectory', 'jib.extraDirectory.path', 'jib.extraDirectory.permissions' are " - + "deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " + + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); } diff --git a/jib-maven-plugin/src/test/resources/maven/projects/simple/pom-complex-properties.xml b/jib-maven-plugin/src/test/resources/maven/projects/simple/pom-complex-properties.xml index 9e392e7e84..b8c1dc77e3 100644 --- a/jib-maven-plugin/src/test/resources/maven/projects/simple/pom-complex-properties.xml +++ b/jib-maven-plugin/src/test/resources/maven/projects/simple/pom-complex-properties.xml @@ -27,8 +27,8 @@ key1=value1,key2=value2 /var/log,/var/log2 Docker - ${project.basedir}/src/main/jib-custom - /foo=755,/bar/cat=777 + ${project.basedir}/src/main/jib-custom + /foo=755,/bar/cat=777 true From 853fd80bffa202dd9bcf303ef8b991143b3c7107 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Mon, 29 Apr 2019 14:28:21 -0400 Subject: [PATCH 06/11] Add getter for deprecated usage --- .../com/google/cloud/tools/jib/gradle/JibExtension.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index 60c7311a40..cd8a875ef9 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -152,6 +152,14 @@ public ContainerParameters getContainer() { return container; } + @Deprecated + @Nested + @Optional + public ExtraDirectoriesParameters getExtraDirectory() { + extraDirectoryConfigured = true; + return extraDirectories; + } + @Nested @Optional public ExtraDirectoriesParameters getExtraDirectories() { From 37145c86926970b4be4c6e64d2916373cc07db08 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Mon, 29 Apr 2019 14:54:58 -0400 Subject: [PATCH 07/11] Show deprecation warning properly --- .../tools/jib/gradle/ExtraDirectoriesParameters.java | 8 ++++++-- .../com/google/cloud/tools/jib/gradle/JibExtension.java | 3 +-- .../com/google/cloud/tools/jib/gradle/TaskCommon.java | 2 +- .../com/google/cloud/tools/jib/gradle/TaskCommonTest.java | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java index 9b7521951e..219b52eb94 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/ExtraDirectoriesParameters.java @@ -34,13 +34,15 @@ public class ExtraDirectoriesParameters { private final Project project; + @Deprecated private final JibExtension jibExtension; private List paths; private Map permissions = Collections.emptyMap(); @Inject - public ExtraDirectoriesParameters(Project project) { + public ExtraDirectoriesParameters(Project project, JibExtension jibExtension) { this.project = project; + this.jibExtension = jibExtension; paths = Collections.singletonList( project.getProjectDir().toPath().resolve("src").resolve("main").resolve("jib")); @@ -74,13 +76,15 @@ public List getPaths() { * @param paths paths to set. */ public void setPaths(Object paths) { + jibExtension.extraDirectoriesConfigured = true; this.paths = project.files(paths).getFiles().stream().map(File::toPath).collect(Collectors.toList()); } @Deprecated public void setPath(File path) { - setPaths(path); + jibExtension.extraDirectoryConfigured = true; + this.paths = Collections.singletonList(path.toPath()); } /** diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index cd8a875ef9..24e8b89d21 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -80,7 +80,7 @@ public JibExtension(Project project) { from = objectFactory.newInstance(BaseImageParameters.class); to = objectFactory.newInstance(TargetImageParameters.class); container = objectFactory.newInstance(ContainerParameters.class); - extraDirectories = objectFactory.newInstance(ExtraDirectoriesParameters.class, project); + extraDirectories = objectFactory.newInstance(ExtraDirectoriesParameters.class, project, this); allowInsecureRegistries = objectFactory.property(Boolean.class); @@ -156,7 +156,6 @@ public ContainerParameters getContainer() { @Nested @Optional public ExtraDirectoriesParameters getExtraDirectory() { - extraDirectoryConfigured = true; return extraDirectories; } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java index d6148edd50..b25ef10633 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java @@ -82,7 +82,7 @@ static void checkDeprecatedUsage(JibExtension jibExtension, Logger logger) { || System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PATHS) != null || System.getProperty(PropertyNames.EXTRA_DIRECTORIES_PERMISSIONS) != null) { throw new IllegalArgumentException( - "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'"); + "You cannot configure both 'jib.extraDirectory.path' and 'jib.extraDirectories.paths'"); } } } diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java index f391c04b18..24bd745e68 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java @@ -94,7 +94,7 @@ public void testCheckDeprecatedUsage_extraDirectoryAndExtraDirectoriesProperties Assert.fail(); } catch (IllegalArgumentException ex) { Assert.assertEquals( - "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'", + "You cannot configure both 'jib.extraDirectory.path' and 'jib.extraDirectories.paths'", ex.getMessage()); } } @@ -119,7 +119,7 @@ public void testCheckDeprecatedUsage_extraDirectoryAndExtraDirectoriesConfigured Assert.fail(); } catch (IllegalArgumentException ex) { Assert.assertEquals( - "You cannot configure both 'jib.extraDirectory' and 'jib.extraDirectories'", + "You cannot configure both 'jib.extraDirectory.path' and 'jib.extraDirectories.paths'", ex.getMessage()); } } From 2c43f1239a93ac492c5104a23bca68e2731cbe97 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Mon, 29 Apr 2019 15:55:13 -0400 Subject: [PATCH 08/11] Fix test --- .../com/google/cloud/tools/jib/gradle/JibExtensionTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java index 3eb7cec16a..40aab0338a 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/JibExtensionTest.java @@ -172,7 +172,7 @@ public void testExtraDirectories_deprecatedConfig() { Assert.assertFalse(testJibExtension.extraDirectoriesConfigured); Assert.assertEquals( - Arrays.asList(Paths.get(fakeProject.getProjectDir().getPath(), "test", "path")), + Arrays.asList(Paths.get("test", "path")), testJibExtension.getExtraDirectories().getPaths()); Assert.assertEquals( ImmutableMap.of("file1", "123", "file2", "456"), From 4d47bc4593e4dbcabf76ec68e48e6e617edbaa6b Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Wed, 1 May 2019 13:17:01 -0400 Subject: [PATCH 09/11] Add tests for deprecated usage --- .../cloud/tools/jib/gradle/JibRunHelper.java | 4 +- .../gradle/SingleProjectIntegrationTest.java | 48 +++++++++++++++++++ .../simple/build-extra-dir-deprecated.gradle | 20 ++++++++ .../simple/build-extra-dir-deprecated2.gradle | 18 +++++++ .../simple/build-extra-dir-deprecated3.gradle | 18 +++++++ .../projects/simple/build-extra-dirs.gradle | 2 +- .../gradle/projects/simple/build.gradle | 2 +- .../cloud/tools/jib/gradle/JibExtension.java | 12 ----- 8 files changed, 109 insertions(+), 15 deletions(-) create mode 100644 jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated.gradle create mode 100644 jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated2.gradle create mode 100644 jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated3.gradle diff --git a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/JibRunHelper.java b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/JibRunHelper.java index b2cb9a63ef..fa06d3f1a4 100644 --- a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/JibRunHelper.java +++ b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/JibRunHelper.java @@ -89,7 +89,7 @@ static void buildAndRunAdditionalTag( assertCreationTimeEpoch(additionalImageReference); } - static void buildToDockerDaemon( + static BuildResult buildToDockerDaemon( TestProject testProject, String imageReference, String gradleBuildFile) throws IOException, InterruptedException, DigestException { BuildResult buildResult = @@ -106,6 +106,8 @@ static void buildToDockerDaemon( String history = new Command("docker", "history", imageReference).run(); Assert.assertThat(history, CoreMatchers.containsString("jib-gradle-plugin")); + + return buildResult; } static String buildToDockerDaemonAndRun( diff --git a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java index 2dcefd38ed..192c7e457e 100644 --- a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java +++ b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java @@ -129,6 +129,15 @@ private static void assertDockerInspect(String imageReference) + " }")); } + private static void assertExtraDirectoryDeprecationWarning(BuildResult buildResult) { + Assert.assertThat( + buildResult.getOutput(), + CoreMatchers.containsString( + "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " + + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "'jib.extraDirectories.permissions'")); + } + private static String buildAndRunComplex( String imageReference, String username, String password, LocalRegistry targetRegistry) throws IOException, InterruptedException { @@ -232,6 +241,45 @@ public void testDockerDaemon_simpleWithIncompatibleJava11() } } + @Test + public void testDockerDaemon_simple_deprecatedExtraDirectory() + throws DigestException, IOException, InterruptedException { + String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); + BuildResult buildResult = + JibRunHelper.buildToDockerDaemon( + simpleTestProject, targetImage, "build-extra-dir-deprecated.gradle"); + Assert.assertEquals( + "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", + new Command("docker", "run", "--rm", targetImage).run()); + assertExtraDirectoryDeprecationWarning(buildResult); + } + + @Test + public void testDockerDaemon_simple_deprecatedExtraDirectory2() + throws DigestException, IOException, InterruptedException { + String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); + BuildResult buildResult = + JibRunHelper.buildToDockerDaemon( + simpleTestProject, targetImage, "build-extra-dir-deprecated2.gradle"); + Assert.assertEquals( + "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", + new Command("docker", "run", "--rm", targetImage).run()); + assertExtraDirectoryDeprecationWarning(buildResult); + } + + @Test + public void testDockerDaemon_simple_deprecatedExtraDirectory3() + throws DigestException, IOException, InterruptedException { + String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); + BuildResult buildResult = + JibRunHelper.buildToDockerDaemon( + simpleTestProject, targetImage, "build-extra-dir-deprecated3.gradle"); + Assert.assertEquals( + "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", + new Command("docker", "run", "--rm", targetImage).run()); + assertExtraDirectoryDeprecationWarning(buildResult); + } + @Test public void testDockerDaemon_simple_multipleExtraDirectories() throws DigestException, IOException, InterruptedException { diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated.gradle new file mode 100644 index 0000000000..f330a8f97a --- /dev/null +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated.gradle @@ -0,0 +1,20 @@ +plugins { + id 'java' + id 'com.google.cloud.tools.jib' +} + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + compile files('libs/dependency-1.0.0.jar') +} + +jib.to.image = System.getProperty("_TARGET_IMAGE") +jib.extraDirectory { + path = file('src/main/custom-extra-dir') +} diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated2.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated2.gradle new file mode 100644 index 0000000000..4eeb3e5c56 --- /dev/null +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated2.gradle @@ -0,0 +1,18 @@ +plugins { + id 'java' + id 'com.google.cloud.tools.jib' +} + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + compile files('libs/dependency-1.0.0.jar') +} + +jib.to.image = System.getProperty("_TARGET_IMAGE") +jib.extraDirectory = file('src/main/custom-extra-dir') diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated3.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated3.gradle new file mode 100644 index 0000000000..3d0a53203f --- /dev/null +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dir-deprecated3.gradle @@ -0,0 +1,18 @@ +plugins { + id 'java' + id 'com.google.cloud.tools.jib' +} + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 + +repositories { + mavenCentral() +} + +dependencies { + compile files('libs/dependency-1.0.0.jar') +} + +jib.to.image = System.getProperty("_TARGET_IMAGE") +jib.extraDirectory.path = file('src/main/custom-extra-dir') diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle index 47602598ca..d3a4ff06c8 100644 --- a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build-extra-dirs.gradle @@ -15,4 +15,4 @@ dependencies { } jib.to.image = System.getProperty("_TARGET_IMAGE") -jib.extraDirectories = ['src/main/custom-extra-dir', 'src/main/custom-extra-dir2'] +jib.extraDirectories.paths = ['src/main/custom-extra-dir', 'src/main/custom-extra-dir2'] diff --git a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle index aab8a467ba..84b461ad2a 100644 --- a/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle +++ b/jib-gradle-plugin/src/integration-test/resources/gradle/projects/simple/build.gradle @@ -28,5 +28,5 @@ jib { workingDirectory = '/home' extraClasspath = ['/d1','/d2'] } - extraDirectories = file('src/main/custom-extra-dir') + extraDirectories.paths = file('src/main/custom-extra-dir') } diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java index 24e8b89d21..d7760e0004 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/JibExtension.java @@ -118,18 +118,6 @@ public void setExtraDirectory(File extraDirectory) { this.extraDirectories.setPath(extraDirectory); } - /** - * Sets extra directory paths. {@code extraDirectories} can be any suitable object describing file - * paths convertible by {@link Project#files} (such as {@link File}, {@code List} or {@code - * List}). - * - * @param extraDirectories paths to set. - */ - public void setExtraDirectories(Object extraDirectories) { - extraDirectoriesConfigured = true; - this.extraDirectories.setPaths(extraDirectories); - } - public void setAllowInsecureRegistries(boolean allowInsecureRegistries) { this.allowInsecureRegistries.set(allowInsecureRegistries); } From 45a8a394f01c410c2cbb0db85d8cbbee9edadfa4 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Thu, 2 May 2019 16:07:19 -0400 Subject: [PATCH 10/11] Remove code dup in test --- .../gradle/SingleProjectIntegrationTest.java | 36 ++++++------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java index 192c7e457e..72d7fd5e98 100644 --- a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java +++ b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java @@ -129,7 +129,14 @@ private static void assertDockerInspect(String imageReference) + " }")); } - private static void assertExtraDirectoryDeprecationWarning(BuildResult buildResult) { + private static void assertExtraDirectoryDeprecationWarning(String pomXml) + throws DigestException, IOException, InterruptedException { + String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); + BuildResult buildResult = + JibRunHelper.buildToDockerDaemon(simpleTestProject, targetImage, pomXml); + Assert.assertEquals( + "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", + new Command("docker", "run", "--rm", targetImage).run()); Assert.assertThat( buildResult.getOutput(), CoreMatchers.containsString( @@ -244,40 +251,19 @@ public void testDockerDaemon_simpleWithIncompatibleJava11() @Test public void testDockerDaemon_simple_deprecatedExtraDirectory() throws DigestException, IOException, InterruptedException { - String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); - BuildResult buildResult = - JibRunHelper.buildToDockerDaemon( - simpleTestProject, targetImage, "build-extra-dir-deprecated.gradle"); - Assert.assertEquals( - "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", - new Command("docker", "run", "--rm", targetImage).run()); - assertExtraDirectoryDeprecationWarning(buildResult); + assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated.gradle"); } @Test public void testDockerDaemon_simple_deprecatedExtraDirectory2() throws DigestException, IOException, InterruptedException { - String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); - BuildResult buildResult = - JibRunHelper.buildToDockerDaemon( - simpleTestProject, targetImage, "build-extra-dir-deprecated2.gradle"); - Assert.assertEquals( - "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", - new Command("docker", "run", "--rm", targetImage).run()); - assertExtraDirectoryDeprecationWarning(buildResult); + assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated.gradle2"); } @Test public void testDockerDaemon_simple_deprecatedExtraDirectory3() throws DigestException, IOException, InterruptedException { - String targetImage = "localhost:6000/simpleimage:gradle" + System.nanoTime(); - BuildResult buildResult = - JibRunHelper.buildToDockerDaemon( - simpleTestProject, targetImage, "build-extra-dir-deprecated3.gradle"); - Assert.assertEquals( - "Hello, world. \nrw-r--r--\nrw-r--r--\nfoo\ncat\n", - new Command("docker", "run", "--rm", targetImage).run()); - assertExtraDirectoryDeprecationWarning(buildResult); + assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated.gradle3"); } @Test From f5f5c826c102da58fb695c3da5dbca83190af885 Mon Sep 17 00:00:00 2001 From: Chanseok Oh Date: Thu, 2 May 2019 17:22:05 -0400 Subject: [PATCH 11/11] Update warning message; fix tests --- .../tools/jib/gradle/SingleProjectIntegrationTest.java | 6 +++--- .../java/com/google/cloud/tools/jib/gradle/TaskCommon.java | 2 +- .../com/google/cloud/tools/jib/gradle/TaskCommonTest.java | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java index 72d7fd5e98..7af925c53f 100644 --- a/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java +++ b/jib-gradle-plugin/src/integration-test/java/com/google/cloud/tools/jib/gradle/SingleProjectIntegrationTest.java @@ -141,7 +141,7 @@ private static void assertExtraDirectoryDeprecationWarning(String pomXml) buildResult.getOutput(), CoreMatchers.containsString( "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " - + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "are deprecated; use 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'")); } @@ -257,13 +257,13 @@ public void testDockerDaemon_simple_deprecatedExtraDirectory() @Test public void testDockerDaemon_simple_deprecatedExtraDirectory2() throws DigestException, IOException, InterruptedException { - assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated.gradle2"); + assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated2.gradle"); } @Test public void testDockerDaemon_simple_deprecatedExtraDirectory3() throws DigestException, IOException, InterruptedException { - assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated.gradle3"); + assertExtraDirectoryDeprecationWarning("build-extra-dir-deprecated3.gradle"); } @Test diff --git a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java index b25ef10633..8b7ef5654d 100644 --- a/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java +++ b/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/TaskCommon.java @@ -75,7 +75,7 @@ static void checkDeprecatedUsage(JibExtension jibExtension, Logger logger) { || System.getProperty(PropertyNames.EXTRA_DIRECTORY_PERMISSIONS) != null) { logger.warn( "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " - + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "are deprecated; use 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); if (jibExtension.extraDirectoriesConfigured diff --git a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java index 24bd745e68..882c213a75 100644 --- a/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java +++ b/jib-gradle-plugin/src/test/java/com/google/cloud/tools/jib/gradle/TaskCommonTest.java @@ -69,7 +69,7 @@ public void testCheckDeprecatedUsage_extraDirectoryPathPropertySet() { Mockito.verify(logger, Mockito.times(1)) .warn( "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " - + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "are deprecated; use 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); } @@ -80,7 +80,7 @@ public void testCheckDeprecatedUsage_extraDirectoryPermissionsPropertySet() { Mockito.verify(logger, Mockito.times(1)) .warn( "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " - + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "are deprecated; use 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); } @@ -106,7 +106,7 @@ public void testCheckDeprecatedUsage_extraDirectoryConfigured() { Mockito.verify(logger, Mockito.times(1)) .warn( "'jib.extraDirectory', 'jib.extraDirectory.path', and 'jib.extraDirectory.permissions' " - + "are deprecated; use 'jib.extraDirectories', 'jib.extraDirectories.paths' and " + + "are deprecated; use 'jib.extraDirectories.paths' and " + "'jib.extraDirectories.permissions'"); }