Commit Graph

3113 Commits

Author SHA1 Message Date
Andy Wilkinson 89a06608d2 Update spring-boot-maven-plugin to use docker-test plugin
See gh-41228
2024-06-26 19:46:29 +01:00
Andy Wilkinson 7d5a761d51 Update spring-boot-gradle-plugin to use docker-test plugin
See gh-41228
2024-06-26 19:46:25 +01:00
Andy Wilkinson d5ef5e9c9d Update spring-boot-buildpack-platform to use docker-test plugin
See gh-41228
2024-06-26 19:46:08 +01:00
Andy Wilkinson 07442f8366 Exclude plexus-utils in favor of Maven's build-in version
Closes gh-41248
2024-06-26 16:59:23 +01:00
Phillip Webb 85f6641a7e Allow 'npipe://' prefix in Docker host address
Update `LocalHttpClientTransport` to support explicit `npipe://` prefix
in the host name. This is the format used in the Docker config from
v4.31.1 onward.

Fixes gh-41199
2024-06-25 12:40:11 -07:00
Phillip Webb 2a4582b084 Update copyright year of changed files 2024-06-19 22:54:40 -07:00
Andy Wilkinson 491f34d25c Improve container test code
Replace `DockerImageNames` with a enum and relocate it from the
`testcontainers` to `container` package. The enum now also
becomes a common location that we can use to apply container
configuration such as timeouts.

Closes gh-41164

Co-authored-by: Phillip Webb <phil.webb@broadcom.com>
2024-06-19 20:10:03 -07:00
Scott Frederick e228ed39b3 Support CNB builders that do not specify a stack
Fixes gh-41046
2024-06-12 15:16:21 -05:00
Phillip Webb bcbcafaab2 Polish "Use method references when possible in test code"
See gh-40974
2024-06-11 12:58:04 -07:00
Ahmed Ashour 207327d97c Use method references when possible in test code
See gh-40974
2024-06-11 12:58:00 -07:00
Phillip Webb dcccb3b2b1 Polish "Use method references when possible"
See gh-40974
2024-06-11 12:57:59 -07:00
Ahmed Ashour 507229eef8 Use method references when possible
See gh-40974
2024-06-11 12:57:55 -07:00
Ahmed Ashour 2c5934dab2 Use 'switch' instead of 'if'
See gh-40985
2024-06-11 12:24:11 -07:00
Scott Frederick 2bb74b261c Disable stale checking for local Docker daemon connections
Fixes gh-40697
2024-06-10 17:27:02 -05:00
Andy Wilkinson 217c2c862b Ignore file entries in META-INF/versions of multi-release jar
Fixes gh-41001
2024-06-06 13:28:36 +01:00
Andy Wilkinson dd6f516d66 Test Gradle Plugin against 8.8
Closes gh-40573
2024-06-03 08:29:02 +01:00
Andy Wilkinson 5ee0580339 Upgrade to the latest Framework 6.0.x release
Closes gh-40929
2024-05-28 16:52:00 +01:00
Andy Wilkinson d80cf05406 Remove unnecessary use of SingletonSupplier
As of Framework 6.1, it contains a field of a type that's
incompatible with Gradle's configuration cache.

Fixes gh-40911
2024-05-28 10:50:33 +01:00
Scott Frederick 4e5cd2c2fd Fix default security options for bootBuildImage task
Fixes gh-39830
2024-05-22 07:56:15 -05:00
Scott Frederick 7f2b917851 Merge branch '3.1.x' into 3.2.x
Closes gh-40818
2024-05-17 11:41:23 -05:00
Scott Frederick 70aceb21eb Relocate test CNB builder and buildpack
The test CNB builder and buildpack used in integration tests have moved
from a projects.registry.vmware.com registry to ghcr.io/spring-io. This
commit modifies tests to use the new location.

Closes gh-40800
2024-05-17 10:59:41 -05:00
Scott Frederick d38c1e06b3 Ignore exceptions when deleting caches in bind cache tests
See gh-40760
2024-05-16 22:19:04 -05:00
Scott Frederick bdc6508b62 Catch any exception when deleting image building workspace
See gh-40760
2024-05-16 21:19:51 -05:00
Scott Frederick cd441130bd Warn when image building workspace directories cannot be deleted
When the `buildWorkspace` location in the
`spring-boot:build-image` Maven goal or `bootBuildImage` Gradle
task is configured to use a local bind source, the location
is passed to the CNB lifecycle without further processing by
Spring Boot. The lifecycle is in control of creating any files
in the specified location. Spring Boot tries to remove the
directories at the specified location after an image is
successfully created, but should not fail the image build
if the lifecycle has created files or directories with
permissions that keep them from being deleted successfully.

Fixes gh-40760
2024-05-16 17:37:44 -05:00
Andy Wilkinson 524424bc98 Merge branch '3.1.x' into 3.2.x
Closes gh-40795
2024-05-16 18:20:52 +01:00
Andy Wilkinson a1d5369a9c Limit configuration cache testing to the latest version of Gradle
Closes gh-40794
2024-05-16 18:20:13 +01:00
Andy Wilkinson 493efd6798 Merge branch '3.1.x' into 3.2.x
Closes gh-40792
2024-05-16 18:06:32 +01:00
Andy Wilkinson f35ecfbdca Reduce and update the versions of Maven that we test against
Closes gh-40791
2024-05-16 18:05:24 +01:00
Andy Wilkinson feaccef3a4 Temporarily disable tests for image building with bind caches
See gh-40760
2024-05-16 17:22:02 +01:00
Moritz Halbritter 364af04377 Merge branch '3.1.x' into 3.2.x
Closes gh-40700
2024-05-13 11:30:42 +02:00
Yanming Zhou 0e450d602d Use CollectionUtils.isEmpty() and StringUtils.hasLength()
See gh-40645
2024-05-13 11:26:56 +02:00
Phillip Webb 24bfe5087f Fix checkstyle violation
See gh-40549
2024-05-08 18:28:09 -07:00
Phillip Webb 8457fc333f Adapt Windows path handling fix to deal with Jetty
Update `NestedLocation` to deal with the fact that Jetty attempts
to fix URLs.

See gh-40549
2024-05-08 18:04:17 -07:00
Phillip Webb 7708ec7592 Fix Windows path handling for nested jars
Update `Path` creation for nested locations to allow both UNC and classic
file references to be used. This commit attempts to align our URL
handling with that of standard file URLs. The `NestedLocation` class
no longer attempts to remove leading all `\` characters and instead
only removes the first `\` when the second char is `:`. This duplicates
the logic found in Java's own internal `WindowsUriSupport` class which
is used when calling `Path.of(url)` with a `file:` URL.

Fixes gh-40549
2024-05-08 15:44:03 -07:00
Moritz Halbritter c47cdda824 Merge branch '3.1.x' into 3.2.x
Closes gh-40624
2024-05-06 09:51:39 +02:00
Moritz Halbritter d18fb9ce65 Upgrade to bcprov-jdk18on 1.78.1
Closes gh-40621
2024-05-06 09:49:32 +02:00
Phillip Webb 8a72e55106 Fix UriPathEncoder bug to improve performance
Fix `isAllowed` check and write test to ensure that additional object
instances are not created unnecessarily.

See gh-40615
2024-05-03 12:29:41 -07:00
Phillip Webb d0ce4daec1 Use URI encoded values when creating NestedPath URIs
Update `NestedPath.toUri()` so that the URI is constructed using encoded
strings.

Fixes gh-40615
2024-05-02 15:53:01 -07:00
Moritz Halbritter 75dac1435f Merge branch '3.1.x' into 3.2.x 2024-05-02 14:48:04 +02:00
Moritz Halbritter 68a63a7797 Polish 2024-05-02 14:47:53 +02:00
Andy Wilkinson c7ec6080ce Publish a runtime variant that supports Java 22
In order to support Java 22, we must use spring-core 6.1.x.
spring-core 6.1.x is a multi-release jar so, in order to support Java
22, a version of Gradle that supports multi-release jars must be
used.

This commit adds a new variant to spring-boot-gradle-plugin for
modern versions of Gradle. When Gradle's plugin API version is 8.7 or
later, we use spring-core 6.1.x. spring-core 6.0.x is used at all
other times.

Closes gh-40074
2024-05-02 10:45:18 +01:00
Moritz Halbritter 888ae040e4 Merge branch '3.1.x' into 3.2.x
Closes gh-40605
2024-05-02 10:51:10 +02:00
Moritz Halbritter 64b302032c Polish "Change Spring Boot CLI init command docs default build system to gradle"
See gh-40603
2024-05-02 10:49:51 +02:00
coursar 1a786fc788 Change Spring Boot CLI init command docs default build system to gradle
See gh-40603
2024-05-02 10:44:33 +02:00
yokotaso 5b4bd61720 Fix possible NullPointerException from getPermission()
Fix regression in `JarUrlConnection` where a NullPointerException could
be thrown internally causing performance issues.

When the SecurityManager is present, the following stack trace is
thrown:

java.lang.NullPointerException: Cannot invoke "java.net.URLConnection.getPermission()" because "this.jarFileConnection" is null
        at org.springframework.boot.loader.net.protocol.jar.JarUrlConnection.getPermission(JarUrlConnection.java:175)
        at java.base/jdk.internal.loader.URLClassPath.check(URLClassPath.java:553)
        at java.base/jdk.internal.loader.URLClassPath$Loader.findResource(URLClassPath.java:612)
        at java.base/jdk.internal.loader.URLClassPath.findResource(URLClassPath.java:296)
        at java.base/java.net.URLClassLoader$2.run(URLClassLoader.java:629)
        at java.base/java.net.URLClassLoader$2.run(URLClassLoader.java:627)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
        at java.base/java.net.URLClassLoader.findResource(URLClassLoader.java:626)
        at org.springframework.boot.loader.net.protocol.jar.JarUrlClassLoader.findResource(JarUrlClassLoader.java:70)
        at java.base/java.lang.ClassLoader.getResource(ClassLoader.java:1403)
        at java.base/java.net.URLClassLoader.getResourceAsStream(URLClassLoader.java:290)
        at java.base/java.lang.Class.getResourceAsStream(Class.java:2850)

See gh-39856
2024-05-01 22:42:52 -07:00
Scott Frederick 21a0bc7fee Merge branch '3.1.x' into 3.2.x
Closes gh-40576
2024-04-29 16:42:53 -05:00
Moritz Halbritter 5707ca83e9 Merge branch '3.1.x' into 3.2.x
Closes gh-40529
2024-04-26 11:12:46 +02:00
chaewss d51282aff5 Remove unnecessary null check for expectedDeprecationMessages
See gh-40524
2024-04-26 11:12:20 +02:00
Moritz Halbritter f13e487724 Close streams in test before deleting file 2024-04-26 09:20:36 +02:00
Phillip Webb 9e40970280 Support gzip compressed image layers
Update buildpack support to allow gzip compressed image layers to be
used when returned by the Docker engine. This update is restores
buildpack support when using Docker Desktop with the "Use containerd
for pulling and storing images" option enabled.

This commit introduces a new `ExportedImageTar` class to deal with the
intricacies of determining the mimetype of a layer. The class deals with
the parsing of `index.json' and related manifest blobs in order to
obtain layer information. The legacy `manifest.json` format is also
supported should `index.json` be missing.

Tests have been added to ensure that export archives from Docker Engine,
Docker Desktop (with and without containerd), and Podman can be used.

Fixes gh-40100

Co-authored-by: Moritz Halbritter <moritz.halbritter@broadcom.com>
Co-authored-by: Scott Frederick <scott.frederick@broadcom.com>
2024-04-25 11:51:59 -07:00
Moritz Halbritter b416db4dee Merge branch '3.1.x' into 3.2.x
Closes gh-40498
2024-04-24 14:04:08 +02:00
Moritz Halbritter 2cb19f368e Polish "Remove unnecessary nesting of calls to String.format"
See gh-40494
2024-04-24 13:57:07 +02:00
Hyeon Sung 0cf15fcad0 Remove unnecessary nesting of calls to String.format
See gh-40494
2024-04-24 13:55:04 +02:00
Scott Frederick fc03fded39 Merge branch '3.1.x' into 3.2.x
Closes gh-40475
2024-04-22 13:27:57 -05:00
Scott Frederick cdf207cf74 Stop expecting deprecations in NativeImagePluginActionIntegrationTests
Closes gh-35709
2024-04-22 13:14:37 -05:00
Andy Wilkinson deffda47f6 Merge branch '3.1.x' into 3.2.x
Closes gh-40464
2024-04-22 11:18:22 +01:00
Andy Wilkinson ca4d64ed16 Use absolute path when showing classpath where main class was not found
Closes gh-40463
2024-04-22 11:16:37 +01:00
Phillip Webb 38af8cd362 Merge branch '3.1.x' into 3.2.x 2024-04-18 12:52:54 -07:00
Phillip Webb 20db2b54c7 Update copyright year of changed files 2024-04-18 12:52:29 -07:00
Moritz Halbritter 8df899b510 Merge branch '3.1.x' into 3.2.x
Closes gh-40427
2024-04-18 11:59:50 +02:00
Moritz Halbritter 3479304e13 Disable creation time verification on Linux
Closes gh-40423
2024-04-18 11:58:46 +02:00
Phillip Webb 78e12251e9 Optimize VirtualZipDataBlock
Add some optimizations to `VirtualZipDataBlock` that help when
sequentially reading the block from a JarInputStream.

Closes gh-40125
2024-04-16 22:16:00 -07:00
Phillip Webb 9b0593efe3 Fallback to RandomAccessFile on ClosedByInterruptException
Refine the fix for gh-38611 so that `ClosedByInterruptException` no
longer retries in a loop.

Our previous fix was flawed due to the fact that another interrupt
could occur after we clear the first and whilst we are reading data.
If this happens 10 times in a row, we raise an exception and end up
causing NoClassDefFoundError errors.

Our new approach retains the use of `FileChannel` and a direct buffer
up to the point that a `ClosedByInterruptException` is raised or the
thread is detected as interrupted.  At that point, we temporarily
switch to using a `RandomAccessFile` to access the data. This will
block the thread until the data has been read.

Fixes gh-40096
2024-04-16 14:47:07 -07:00
Phillip Webb 4203e1f2fa Rename FileChannelDataBlock to FileDataBlock
Rename the internal `FileChannelDataBlock` to `FileDataBlock` since we
want to fallback to a `RandomAccessFile` when a thread is interrupted.

See gh-40096
2024-04-16 14:46:56 -07:00
Andy Wilkinson 45e9412d9b Merge branch '3.1.x' into 3.2.x
Closes gh-40323
2024-04-11 16:54:33 +01:00
Andy Wilkinson baf5a7f130 Make includes configurable via a property
See gh-39837
2024-04-11 16:32:17 +01:00
Andy Wilkinson 2a6293940b Polish "Make excludes configurable via property"
See gh-39837
2024-04-11 16:31:24 +01:00
Matti Tahvonen 58fc8f8c01 Make excludes configurable via property
See gh-39837
2024-04-11 15:43:31 +01:00
Scott Frederick 1c2a43d1e6 Merge branch '3.1.x' into 3.2.x
Closes gh-40165
2024-04-03 16:30:41 -05:00
Felix 8a42935dad Apply instanceof pattern matching
See gh-40085
2024-04-03 16:30:01 -05:00
Moritz Halbritter 957facf1cc Merge branch '3.1.x' into 3.2.x
Closes gh-40117
2024-03-27 09:35:44 +01:00
Moritz Halbritter ff66036e90 Remove redundant Regex escapes
Closes gh-40116
2024-03-27 09:34:28 +01:00
Andy Wilkinson 0ec5eab8af Merge branch '3.1.x' into 3.2.x
Closes gh-40097
2024-03-25 10:42:14 +00:00
Andy Wilkinson aee88115ea Test Gradle plugin against Gradle 8.7
This commit includes some changes to test Gradle scripts to avoid
Gradle 8.7's new deprecation warning about URI conversion.

Closes gh-40093
2024-03-25 10:24:21 +00:00
Andy Wilkinson e2d53fa0e9 Ensure that Maven Plugin uses a consistent Framework dependency version
Fixes gh-39927
2024-03-13 18:38:38 +00:00
Eddú Meléndez 244f7c595c Remove redpanda image compatibility
Testcontainers added redpandadata/redpanda as valid image

Closes gh-39801
2024-02-29 15:30:12 +01:00
Andy Wilkinson 306d52db77 Merge branch '3.1.x' into 3.2.x
Closes gh-39793
2024-02-28 17:19:46 +00:00
Andy Wilkinson 16b6400bdf Improve BuildpackReference's handling of URL-like strings on Windows
Closes gh-39792
2024-02-28 17:15:02 +00:00
Andy Wilkinson 730a81c4a8 Merge branch '3.1.x' into 3.2.x
Closes gh-39789
2024-02-28 15:06:35 +00:00
Andy Wilkinson dd38fb8b65 Limit wait time when checking process's availability
Closes gh-39788
2024-02-28 15:04:08 +00:00
Andy Wilkinson db0fcc5626 Merge branch '3.1.x' into 3.2.x
Closes gh-39764
2024-02-27 12:39:14 +00:00
Andy Wilkinson 54cdc83337 Only reference Gradle tasks beneath org.gradle.api
Fixes gh-39584
2024-02-27 12:38:07 +00:00
Phillip Webb a457638e6c Polish 'Decode URL content before passing it to NestedLocation.parse'
See gh-39675'

Closes gh-39675'
2024-02-21 21:16:33 -08:00
_ext Slovak, Jiri 06569e76f6 Decode URL content before passing it to NestedLocation.parse
URL can contains empty spaced encoded as %20, so it should be decoded
before passing it to NestedLocation. NestedLocation expects file system
path which should not contain URL encoded values.

See gh-39675
2024-02-21 17:28:55 -08:00
Phillip Webb 12de6aa46a Merge branch '3.1.x' into 3.2.x 2024-02-21 15:27:27 -08:00
Phillip Webb 2c4909a89a Update copyright year of changed files 2024-02-21 13:58:53 -08:00
Scott Frederick 71e5e1252a Merge branch '3.1.x' into 3.2.x
Closes gh-39638
2024-02-20 10:34:32 -06:00
Scott Frederick c93acdafbd Polish "Prevent long parse times for images with illegal char in tag"
See gh-39617
2024-02-20 10:27:28 -06:00
Jakob Wanger c892544741 Prevent long parse times for images with illegal char in tag
Update the regular expression used to parse Docker images references to
prevent catastrophic backtracking when images names are long and the
tag contains an illegal character.

See gh-39617
2024-02-20 10:27:27 -06:00
Andy Wilkinson deb3d70a2e Merge branch '3.1.x' into 3.2.x
Closes gh-39549
2024-02-14 14:54:16 +00:00
Andy Wilkinson 5bc4bdd1de Test Gradle plugin against Gradle 8.6
Closes gh-39548
2024-02-14 14:54:10 +00:00
Moritz Halbritter 4387b79831 Merge branch '3.1.x' into 3.2.x 2024-02-12 10:18:46 +01:00
Moritz Halbritter 8ffcfc9b77 Harmonize style of igored exceptions across the codebase 2024-02-12 10:14:20 +01:00
Scott Frederick eb75bb1339 Merge branch '3.1.x' into 3.2.x
Closes gh-39513
2024-02-11 14:32:35 -06:00
Jakob Wanger 7e90b4951b Enforce Gradle version to be at least of version 7.5
See gh-39508

Signed-off-by: Jakob Wanger <jakobwanger@gmail.com>
2024-02-11 14:30:26 -06:00
Andy Wilkinson 5ae533a00d Minimize scope of version management for commons-compress
See gh-39368
2024-02-06 15:08:15 +00:00
Andy Wilkinson 84e390af70 Merge branch '3.1.x' into 3.2.x
See gh-39368
2024-02-06 12:37:18 +00:00
Andy Wilkinson 5f680ccac0 Revert "Stop managing version of commons-compress where it isn't needed"
This reverts commit 2b85cb0356.

See gh-39367
2024-02-06 12:36:26 +00:00
Moritz Halbritter 976152b244 Merge branch '3.1.x' into 3.2.x
Closes gh-39422
2024-02-06 13:10:15 +01:00
Moritz Halbritter 8fd28d9ece Polish "Update the Debugging Documentation of the Spring Boot Maven Plugin"
See gh-39392
2024-02-06 13:07:55 +01:00