Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

5.3.x #2

Open
wants to merge 1,025 commits into
base: 5.3.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1025 commits
Select commit Hold shift + click to select a range
dd16e01
Clarify ReactiveTransactionManager exception declarations
jhoeller Jul 5, 2023
a3907a6
Support arrays, collections, & maps in ObjectUtils.nullSafeConciseToS…
sbrannen Jul 5, 2023
d5380b3
Expand tests for array to Collection/Set/List interface
jhoeller Jul 5, 2023
2ada2b7
Update Javadoc for ObjectUtils.nullSafeConciseToString()
sbrannen Jul 6, 2023
03f1fab
Improve assertions in DefaultConversionServiceTests
sbrannen Jul 6, 2023
f2df10c
Polishing
jhoeller Jul 7, 2023
0961bc5
Polishing
jhoeller Jul 7, 2023
85eec5d
Simplify DefaultSingletonBeanRegistry.isDependent()
bnbakp0582 Jul 8, 2023
6ea4d37
Further simplify DefaultSingletonBeanRegistry.isDependent()
sbrannen Jul 9, 2023
0a4f290
Polish DefaultSingletonBeanRegistryTests
sbrannen Jul 9, 2023
14a7983
Tolerate isCandidateClass call with null as annotation type
jhoeller Jul 9, 2023
3444892
Polishing
jhoeller Jul 9, 2023
3d28c02
Handle JDBC warnings in case of a statement exception as well
jhoeller Jul 10, 2023
1cd994d
Encapsulate full path initialization
rstoyanchev Jul 11, 2023
9e7ee0c
Deprecate setAllowResultAccessAfterCompletion and document it as broken
jhoeller Jul 11, 2023
c1bf099
Improve diagnostics for LinkageError in case of ClassLoader mismatch
jhoeller Jul 11, 2023
16fd70a
Avoid illegal reflective access in ContextOverridingClassLoader
jhoeller Jul 11, 2023
ac94d2b
Polishing
jhoeller Jul 11, 2023
e1351a5
Update OS version in CI image
bclozel Jul 12, 2023
e1e7fa4
Upgrade to Reactor 2020.0.34 (and Tomcat 9.0.78)
jhoeller Jul 12, 2023
5331938
Polishing
jhoeller Jul 12, 2023
6033773
Next development version (v5.3.30-SNAPSHOT)
spring-builds Jul 13, 2023
355fa25
Polishing
jhoeller Jul 14, 2023
6879be7
Explicit hints for @PostConstruct methods (preventing deadlocks)
jhoeller Jul 14, 2023
0b4b313
Cache DependencyDescriptor per autowired constructor argument
jhoeller Jul 15, 2023
ef65429
Polishing
jhoeller Jul 15, 2023
0f33f79
Avoid synchronization for shortcut re-resolution
jhoeller Jul 16, 2023
b387d9b
MethodIntrospector handles overriding bridge method correctly
jhoeller Jul 18, 2023
3a8c0db
Decouple exception messages for sync=true from @Cacheable
jhoeller Jul 18, 2023
a7b7466
Polishing
jhoeller Jul 18, 2023
340b32a
Polishing
jhoeller Jul 19, 2023
790abed
Polishing
jhoeller Jul 21, 2023
c9849d6
Polishing
jhoeller Jul 21, 2023
d1efc89
Upgrade to Netty 4.1.95
jhoeller Jul 21, 2023
6dea580
Clarify DataAccessException/ScriptException declarations for R2DBC
jhoeller Jul 24, 2023
840bd57
Polishing
jhoeller Jul 24, 2023
23eb0e3
Polishing
jhoeller Jul 25, 2023
14c8c91
Polishing
jhoeller Jul 26, 2023
c5aa783
Polishing
jhoeller Jul 27, 2023
ad61fb7
Polishing
jhoeller Aug 1, 2023
b948237
Sort multiple @Autowired methods on same bean class via ASM
jhoeller Aug 3, 2023
24893d0
Polishing
jhoeller Aug 4, 2023
9d71549
Polishing
jhoeller Aug 6, 2023
fc085e8
Reinstate Introspector.flushFromCaches() call for JDK ClassInfo cache
jhoeller Aug 7, 2023
9931f44
Polishing
jhoeller Aug 7, 2023
0c27510
Cancel without interruption of currently running tasks
jhoeller Aug 9, 2023
bb46b31
Find TransactionalEventListener annotation on target method
jhoeller Aug 12, 2023
2b48254
Use extracted attributes instead of annotation access
jhoeller Aug 12, 2023
f7d4bd1
Explicit note on connection pool deadlock with REQUIRES_NEW
jhoeller Aug 12, 2023
b9be40c
Add registerReactiveTypeOverride method to ReactiveAdapterRegistry
jhoeller Aug 14, 2023
3da7a35
Test factory-bean/method placeholders as well
jhoeller Aug 14, 2023
4326c53
Polishing
jhoeller Aug 14, 2023
5f7a6a0
Align validation metadata handling in PayloadMethodArgumentResolver
jhoeller Aug 16, 2023
df066d8
Fix accidental javadoc references to jakarta packages
jhoeller Aug 16, 2023
493f75e
Optimize whitespace checks in StringUtils (as far as possible on JDK 8)
jhoeller Aug 18, 2023
9894174
Allow overriding dynamic property from enclosing class in nested test…
quaff Aug 21, 2023
d7ac89e
Revise contribution
sbrannen Aug 21, 2023
88c3a78
Update copyright headers
sbrannen Aug 21, 2023
a4fc7d3
Optimize ClassUtils#getMostSpecificMethod
sdeleuze Aug 23, 2023
afb378a
Consistently throw ParseException instead of IllegalStateException
jhoeller Aug 23, 2023
994bbec
Polishing
jhoeller Aug 23, 2023
ddcae04
Do not invoke [Map|Collection].isEmpty() in nullSafeConciseToString()
sbrannen Sep 8, 2023
0c3d8d7
Align abstract method signatures with original Commons Logging API
jhoeller Sep 11, 2023
39c225c
AnnotationUtils.clearCache() includes all annotation caches
jhoeller Sep 11, 2023
75faf69
Refine CORS documentation for wildcard processing
sdeleuze Sep 11, 2023
40678bb
Refine CORS documentation for wildcard processing
sdeleuze Sep 11, 2023
f7bf243
Clarify IN clause resolution with List/Iterable parameter
jhoeller Sep 14, 2023
cc0cbc1
Next development version (v5.3.31-SNAPSHOT)
spring-builds Sep 14, 2023
2b4c1e2
Reset findLoadedClassMethod in case of makeAccessible failing
jhoeller Sep 14, 2023
3c59c2a
Fix note on CGLIB supported method visibility
snicoll Sep 25, 2023
d62f178
Test status quo for zero capacity behavior in ConcurrentLruCache
sbrannen Sep 27, 2023
3849ed3
Explicit note on local bean access within @PostConstruct method
jhoeller Sep 29, 2023
2ec32a4
Polishing
jhoeller Sep 29, 2023
ca4674d
Fix description of default behavior in BeanPropertyRowMapper
snicoll Oct 2, 2023
7a8ec2a
Polish BeanPropertyRowMapper Javadoc
sbrannen Oct 2, 2023
12159b9
Provide best-effort toString for Lazy resolved message
snicoll Sep 26, 2023
288e255
Throw IllegalArgumentException for null SQL String
jhoeller Oct 10, 2023
45cfe70
Revise transaction annotation recommendations
jhoeller Oct 10, 2023
c615a66
Revise javadoc for LifecycleProcessor bean etc
jhoeller Oct 10, 2023
8538a73
Updated Java 8 version in sdkmanrc
poutsma Oct 11, 2023
704650d
Properly return SQLExceptionTranslator-provided exception
jhoeller Oct 11, 2023
0370aa6
Do not close transactional Connection in doReleaseConnection
jhoeller Oct 11, 2023
cb28e2a
Polishing
jhoeller Oct 11, 2023
2dc4fe0
BeanCopier sets name prefix for public classes as well
jhoeller Oct 15, 2023
84f3ce1
Test for getObjectType on uninitialized ProxyFactoryBean
jhoeller Oct 23, 2023
6809395
Test for @Resource @Lazy fallback type match
jhoeller Oct 23, 2023
15a306d
Resolve to empty MultiValueMap when no matrix variables are provided
snicoll Oct 24, 2023
1bf5d8b
Avoid ResolvableType for simple assignability check in copyProperties
jhoeller Oct 24, 2023
de0cb53
Polishing
jhoeller Oct 24, 2023
d3ec939
Guard for empty FileItems in CommonsFileUploadSupport
poutsma Nov 8, 2023
f8e1ce3
Check for procedure vs function constants in CallMetaDataContext
jhoeller Nov 9, 2023
f97e819
Log4jLog re-resolves ExtendedLogger on deserialization
jhoeller Nov 9, 2023
75193b2
Upgrade to Log4J 2.21.1, Tomcat 9.0.82, Jetty 9.4.53, Undertow 2.2.28…
jhoeller Nov 9, 2023
af59358
Avoid duplicate resources in PathMatchingResourcePatternResolver on W…
huyachigege Nov 13, 2023
c489234
Polish contribution
sbrannen Nov 14, 2023
a6ab308
Fix wrong nullability requirement
snicoll Nov 15, 2023
e660859
Consistent ordering of overloaded operations
jhoeller Nov 15, 2023
b28a5f8
Upgrade to Reactor 2020.0.38 and Netty 4.1.101
jhoeller Nov 15, 2023
1077d5c
Next development version (v5.3.32-SNAPSHOT)
spring-builds Nov 16, 2023
61ac912
WebSocketMessageBrokerStats implements SmartInitializingSingleton
rstoyanchev Nov 21, 2023
b17714b
Polishing
jhoeller Nov 22, 2023
687676e
Fix ordering of releasing resources in JSON Encoder
bclozel Nov 22, 2023
5105fdf
Filter candidate methods by name first (for more efficient sorting)
jhoeller Nov 24, 2023
0ecbeef
Consider generics in equals method (for ConversionService caching)
jhoeller Nov 24, 2023
9ef2b5d
Include scroll() in SharedEntityManagerCreator's queryTerminatingMethods
sbrannen Nov 26, 2023
d54e101
PathEditor considers single-letter URI scheme as NIO path candidate
jhoeller Nov 30, 2023
a45154c
Polish MergedAnnotation tests
sbrannen Dec 12, 2023
8f2bb49
Scan annotations on method in interface hierarchy only once
sbrannen Dec 12, 2023
b2bdc7d
Polishing
jhoeller Dec 30, 2023
c1db06a
Default time zone resolution from scheduler-wide Clock
jhoeller Jan 5, 2024
e16dd5f
Refine exception handling for type not present versus access exception
jhoeller Jan 6, 2024
2b9cea6
Propagate arguments for dynamic prototype-scoped advice
jhoeller Jan 6, 2024
dd9b674
Avoid getMostSpecificMethod resolution for non-annotated methods
jhoeller Jan 7, 2024
cfec88b
Add CORS support for Private Network Access
sdeleuze Jan 4, 2024
df1bec9
Polishing
sdeleuze Jan 8, 2024
fd240b3
Double-checked lock in ChannelSendOperator#request
rstoyanchev Jan 12, 2024
9d10807
Upgrade CI image to Ubuntu Jammy 20240111
bclozel Jan 17, 2024
562fa4e
Upgrade CI image to JDK 8u402+7 and 17.0.10+13
bclozel Jan 17, 2024
a0f24cf
Handle Content-Length in ShallowEtagHeaderFilter more robustly
poutsma Jan 18, 2024
f22bdf4
Polishing
jhoeller Jan 19, 2024
7ac66ef
Consistent nullability for concurrent result
jhoeller Jan 24, 2024
d7649d0
Polishing
jhoeller Jan 24, 2024
732642d
Declare allowPrivateNetwork as available since 5.3.32
jhoeller Jan 24, 2024
186d6e3
Guard against multiple body subscriptions
poutsma Jan 24, 2024
c35e90c
Compare qualifier value arrays with equality semantics
jhoeller Jan 24, 2024
a2af34f
Polishing
jhoeller Jan 24, 2024
70e2e89
Explicit documentation note on cron-vs-quartz parsing convention
jhoeller Jan 29, 2024
0e5edc4
Upgrade to Checkstyle 10.12.7 and spring-javaformat-checkstyle 0.0.41
jhoeller Jan 29, 2024
43ecb0b
Eagerly initialize ZERO_NANOS constant
jhoeller Jan 29, 2024
60035b5
Polishing
jhoeller Feb 1, 2024
7ec5c99
Update user info pattern
rstoyanchev Feb 9, 2024
452973f
Consistent Lock field declaration (instead of ReentrantLock field type)
jhoeller Feb 13, 2024
6f4cc40
Document ResourcePropertiesPersister as only intended for internal use
jhoeller Feb 13, 2024
8e3ad4a
Upgrade to Reactor 2020.0.41
jhoeller Feb 15, 2024
6ad75bd
Next development version (v5.3.33-SNAPSHOT)
spring-builds Feb 15, 2024
1acc1c3
Polish ContentCachingResponseWrapper[Tests]
sbrannen Feb 24, 2024
380f5d5
Honor Content-[Type|Length] headers from wrapped response again
sbrannen Feb 25, 2024
57646a0
Refine *HttpMessageConverter#getContentLength null safety
sdeleuze Feb 27, 2024
6e1f583
Polish ShallowEtagHeaderFilterTests
sbrannen Feb 26, 2024
464fa7e
Do not cache Content-Type in ContentCachingResponseWrapper
sbrannen Feb 26, 2024
e44f84e
Restore Jetty 10 compatibility in JettyClientHttpResponse
poutsma Feb 28, 2024
ce385d1
Consistent nullability for internal field access
jhoeller Feb 28, 2024
701e9e4
Polishing
jhoeller Feb 28, 2024
b31550f
Align 5.3.x with 6.1.x
rstoyanchev Feb 29, 2024
3478a70
Improve concurrent handling of result in WebAsyncManager
rstoyanchev Feb 29, 2024
6432b13
Add state and response wrapping to StandardServletAsyncWebRequest
rstoyanchev Mar 1, 2024
3b7c435
Polishing
rstoyanchev Mar 1, 2024
2aca714
Add locking in StandardServletAsyncWebRequest
rstoyanchev Mar 1, 2024
dd5fe68
Dispatch again after disconnected client error
rstoyanchev Mar 1, 2024
30c75ff
Avoid locking if not handling asynchronously
rstoyanchev Mar 1, 2024
e668e77
Wrap PrintWriter in StandardServletAsyncWebRequest
rstoyanchev Mar 1, 2024
ed0c2ff
Restore ability to return original method for proxy-derived method
jhoeller Mar 4, 2024
99e38ec
Backport tests for wrapping of response for async requests
rstoyanchev Mar 5, 2024
b8b1f5b
Add missed merge changes from last commit
rstoyanchev Mar 5, 2024
5d572f6
Fix checkstyle violation
rstoyanchev Mar 5, 2024
ff412de
Use wrapped response in HandlerFunctionAdapter
rstoyanchev Mar 7, 2024
dc86fea
Remove IOException that's not thrown from Javadoc
rstoyanchev Mar 7, 2024
915d5bd
Polishing
jhoeller Mar 8, 2024
41bc43b
Build KDoc against 5.3.x Spring Framework Javadoc
sdeleuze Mar 11, 2024
1b84f97
Disable external Javadoc URLs not supported on JDK 8
sbrannen Mar 11, 2024
4566e86
Polishing
jhoeller Mar 12, 2024
5056e8c
Upgrade to Reactor 2020.0.42
jhoeller Mar 12, 2024
5dfec09
Allow UriTemplate to be built with an empty template
bsgrd Mar 13, 2024
274fba4
Additional unit tests for operations on empty UriTemplate
jhoeller Mar 13, 2024
297cbae
Extract reusable checkSchemeAndPort method
rstoyanchev Mar 5, 2024
0c17d25
Next development version (v5.3.34-SNAPSHOT)
spring-builds Mar 14, 2024
17650e0
Move CI to GitHub Actions
snicoll Mar 15, 2024
a653b85
Harmonize Concourse configuration
snicoll Mar 15, 2024
2ff8a00
Enable backport bot on 5.3.x
snicoll Mar 15, 2024
61f7087
Consistently apply TaskDecorator to ManagedExecutorService as well
jhoeller Mar 15, 2024
51d70dc
Polishing
jhoeller Mar 15, 2024
1cb0c7c
Avoid cloning empty Annotation array in TypeDescriptor (backport)
jhoeller Mar 16, 2024
f7f1028
Remove superfluous @NonNull declarations
jhoeller Mar 16, 2024
d21100f
Restore original toString representation (revert accidental backport)
jhoeller Mar 17, 2024
f6205d4
Avoid unnecessary Annotation array cloning in TypeDescriptor
sbrannen Mar 18, 2024
0628b47
Propagate JMS IllegalStateException from commit/rollbackIfNecessary
jhoeller Mar 18, 2024
76c0017
Polishing
jhoeller Mar 18, 2024
2395945
Upgrade actions that use deprecated features
snicoll Mar 20, 2024
1d2daa5
Log column type for limited support message in getResultSetValue
jhoeller Apr 9, 2024
a0ae96d
Upgrade to Netty 4.1.108
jhoeller Apr 9, 2024
7609727
Detect bridge methods across ApplicationContexts in MethodIntrospector
sbrannen Apr 9, 2024
510ff87
Upgrade to Reactor 2020.0.43
snicoll Apr 9, 2024
7678286
Refine UriComponentsBuilder parsing
bclozel Apr 11, 2024
cbc2ab6
Next development version (v5.3.35-SNAPSHOT)
spring-builds Apr 11, 2024
ceeb552
Update links to HttpOnly documentation at OWASP in ResponseCookie
yhao3 Apr 18, 2024
520a113
Polishing (aligned with 6.1.x)
jhoeller Apr 18, 2024
6b6beec
Skip close lock if acquired by other thread already
jhoeller Apr 23, 2024
0c307b5
Polishing
jhoeller Apr 23, 2024
2e74a4d
Upgrade to gradle-enterprise-conventions 0.0.17
bclozel Apr 29, 2024
b3724eb
Fix guard against multiple subscriptions
poutsma Apr 30, 2024
b8bc780
Fix build warnings
bclozel Apr 30, 2024
1833aaf
Ignore non-String keys in PropertiesPropertySource.getPropertyNames()
jhoeller May 1, 2024
a48e2f3
Polishing
jhoeller May 1, 2024
924b684
Consistently propagate ApplicationStartup to BeanFactory
jhoeller May 1, 2024
f5baa32
Include repeatable annotation container in MergedAnnotations results
sbrannen May 3, 2024
8fe545e
Fix compilation error in test
sbrannen May 3, 2024
9f35deb
Unwrap raw target Query instance in case of proxy mismatch
jhoeller May 6, 2024
df83746
Adapt docs deployment properties
snicoll May 8, 2024
ca9eb57
Update MockMvc section on Streaming in the docs
rstoyanchev May 13, 2024
0c65a5e
Accept ajc-compiled @Aspect classes for Spring AOP proxy usage
jhoeller May 14, 2024
8323c87
Polishing
jhoeller May 14, 2024
7da43a8
Upgrade to Reactor 2020.0.44 and Netty 4.1.109
jhoeller May 14, 2024
de6cf84
Next development version (v5.3.36-SNAPSHOT)
spring-builds May 16, 2024
ef2c140
Defensively catch and log pointcut parsing exceptions
jhoeller May 17, 2024
47a7abe
Polishing
jhoeller May 21, 2024
d2e7cf4
Default fallback parsing for UTC without milliseconds
jhoeller May 21, 2024
f1fed9c
Polishing
jhoeller May 21, 2024
eff9f5b
Select most specific advice method in case of override
jhoeller May 22, 2024
d2babd4
Next development version (v5.3.37-SNAPSHOT)
spring-builds May 22, 2024
d42c920
Defensive handling of incompatible advice methods
jhoeller May 23, 2024
3e45b76
Polishing
jhoeller May 23, 2024
98aa03c
Test detection of original generic method for CGLIB bridge method
jhoeller May 24, 2024
0f04052
Support compilation of array and list indexing with Integer in SpEL
sbrannen Apr 23, 2024
2384474
Support compilation of map indexing with primitive in SpEL
sbrannen May 28, 2024
d410485
Avoid NoSuchMethodException for annotation attribute checks
jhoeller Jun 3, 2024
63568e6
Skip ajc-compiled aspects for ajc-compiled target classes
jhoeller Jun 6, 2024
c10b6c2
Upgrade to Reactor 2020.0.45
snicoll Jun 11, 2024
e26ea00
Upgrade to spring-javaformat-checkstyle 0.0.42 and Netty 4.1.111
jhoeller Jun 12, 2024
0ce1ef9
Polishing (aligned with 6.0.x)
jhoeller Jun 12, 2024
a65ea79
Next development version (v5.3.38-SNAPSHOT)
spring-builds Jun 13, 2024
ef81f06
Fix invalid character in Javadoc of BeanFactory
snicoll Jun 13, 2024
c8df186
Fix property name in Container Extension Points section
snicoll Jun 16, 2024
bafb1c7
Fix typo
snicoll Jun 17, 2024
2eed02e
Correct and consistent event class names in constructor javadoc
jhoeller Jun 17, 2024
6b62b93
Backported test for @Autowired @Bean method on configuration subclass
jhoeller Jun 17, 2024
fa05de1
Use Sonatype S01 token in release pipeline
bclozel Jun 18, 2024
2303ea9
Exclude GitHub Actions bot from changelog
snicoll Jun 20, 2024
96e3aa6
Fix name of GitHub actions bot
snicoll Jun 21, 2024
2302b30
Apply fallback resolution for non-hierarchical URIs such as "file:."
jhoeller Jul 3, 2024
562351f
Detect ajc markers in superclasses as well (for weaving check)
jhoeller Jun 28, 2024
c8e9ad6
Backport improvements to CI setup
snicoll Jul 11, 2024
e319bd7
Remove concourse configuration now that CI is using GitHub Actions
snicoll Jul 11, 2024
d8e5613
Add missing artifact properties for staging
snicoll Jul 12, 2024
286f5f2
Remove useless permissions on build-and-deploy-snapshot workflow
snicoll Jul 19, 2024
dffb6c5
Support single String argument for varargs invocations in SpEL
sbrannen Jul 10, 2024
351a17a
Revert "Support single String argument for varargs invocations in SpEL"
sbrannen Aug 4, 2024
1847d2f
Support conversion from primitive array to Object[] in ConversionService
sbrannen Aug 4, 2024
d5c5c91
Polishing
sbrannen Aug 5, 2024
7e39078
Throw exception for failure to set property as index in SpEL
sbrannen Aug 5, 2024
26f2dad
Enforce read-only semantics in SpEL's SimpleEvaluationContext
sbrannen Aug 6, 2024
f75cebd
Start building against Reactor Reactor 2020.0.47 snapshots
snicoll Aug 7, 2024
df33bf2
Sync GHA setup
snicoll Aug 9, 2024
57b02da
Upgrade to Reactor 2020.0.47
snicoll Aug 13, 2024
d2715d2
Fix incorrect weak ETag assertion
kashike Aug 13, 2024
f9c3d00
Introduce withAssignmentDisabled() option for SimpleEvaluationContext
sbrannen Aug 13, 2024
406b33d
Upgrade to Netty 4.1.112
jhoeller Aug 13, 2024
582bfcc
Efficient ETag parsing
rstoyanchev Aug 14, 2024
f00bc7b
Remove snapshot repo
snicoll Aug 14, 2024
f44d13c
Disable array allocation in case of no constructor resolution
jhoeller Oct 18, 2022
8a44eaa
Next development version (v5.3.39-SNAPSHOT)
snicoll Aug 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
20 changes: 20 additions & 0 deletions .github/actions/await-http-resource/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
name: Await HTTP Resource
description: Waits for an HTTP resource to be available (a HEAD request succeeds)
inputs:
url:
description: 'The URL of the resource to await'
required: true
runs:
using: composite
steps:
- name: Await HTTP resource
shell: bash
run: |
url=${{ inputs.url }}
echo "Waiting for $url"
until curl --fail --head --silent ${{ inputs.url }} > /dev/null
do
echo "."
sleep 60
done
echo "$url is available"
56 changes: 56 additions & 0 deletions .github/actions/build/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: 'Build'
description: 'Builds the project, optionally publishing it to a local deployment repository'
inputs:
java-version:
required: false
default: '8'
description: 'The Java version to compile and test with'
java-early-access:
required: false
default: 'false'
description: 'Whether the Java version is in early access'
java-toolchain:
required: false
default: 'false'
description: 'Whether a Java toolchain should be used'
publish:
required: false
default: 'false'
description: 'Whether to publish artifacts ready for deployment to Artifactory'
develocity-access-key:
required: false
description: 'The access key for authentication with ge.spring.io'
outputs:
build-scan-url:
description: 'The URL, if any, of the build scan produced by the build'
value: ${{ (inputs.publish == 'true' && steps.publish.outputs.build-scan-url) || steps.build.outputs.build-scan-url }}
version:
description: 'The version that was built'
value: ${{ steps.read-version.outputs.version }}
runs:
using: composite
steps:
- name: Prepare Gradle Build
uses: ./.github/actions/prepare-gradle-build
with:
develocity-access-key: ${{ inputs.develocity-access-key }}
java-version: ${{ inputs.java-version }}
java-early-access: ${{ inputs.java-early-access }}
java-toolchain: ${{ inputs.java-toolchain }}
- name: Build
id: build
if: ${{ inputs.publish == 'false' }}
shell: bash
run: ./gradlew check
- name: Publish
id: publish
if: ${{ inputs.publish == 'true' }}
shell: bash
run: ./gradlew -PdeploymentRepository=$(pwd)/deployment-repository build publishAllPublicationsToDeploymentRepository
- name: Read Version From gradle.properties
id: read-version
shell: bash
run: |
version=$(sed -n 's/version=\(.*\)/\1/p' gradle.properties)
echo "Version is $version"
echo "version=$version" >> $GITHUB_OUTPUT
23 changes: 23 additions & 0 deletions .github/actions/create-github-release/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Create GitHub Release
description: Create the release on GitHub with a changelog
inputs:
milestone:
description: Name of the GitHub milestone for which a release will be created
required: true
token:
description: Token to use for authentication with GitHub
required: true
runs:
using: composite
steps:
- name: Generate Changelog
uses: spring-io/github-changelog-generator@185319ad7eaa75b0e8e72e4b6db19c8b2cb8c4c1 #v0.0.11
with:
milestone: ${{ inputs.milestone }}
token: ${{ inputs.token }}
config-file: .github/actions/create-github-release/changelog-generator.yml
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ inputs.token }}
shell: bash
run: gh release create ${{ format('v{0}', inputs.milestone) }} --notes-file changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,14 @@ changelog:
sort: "title"
labels:
- "type: dependency-upgrade"
contributors:
exclude:
names:
- "bclozel"
- "jhoeller"
- "poutsma"
- "rstoyanchev"
- "sbrannen"
- "sdeleuze"
- "simonbasle"
- "snicoll"
49 changes: 49 additions & 0 deletions .github/actions/prepare-gradle-build/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: 'Prepare Gradle Build'
description: 'Prepares a Gradle build. Sets up Java and Gradle and configures Gradle properties'
inputs:
java-version:
required: false
default: '8'
description: 'The Java version to use for the build'
java-early-access:
required: false
default: 'false'
description: 'Whether the Java version is in early access'
java-toolchain:
required: false
default: 'false'
description: 'Whether a Java toolchain should be used'
develocity-access-key:
required: false
description: 'The access key for authentication with ge.spring.io'
runs:
using: composite
steps:
- name: Set Up Java
uses: actions/setup-java@v4
with:
distribution: ${{ inputs.java-early-access == 'true' && 'temurin' || 'liberica' }}
java-version: |
${{ inputs.java-early-access == 'true' && format('{0}-ea', inputs.java-version) || inputs.java-version }}
${{ inputs.java-toolchain == 'true' && '8' || '' }}
- name: Set Up Gradle
uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 # v3.5.0
with:
cache-read-only: false
develocity-access-key: ${{ inputs.develocity-access-key }}
- name: Configure Gradle Properties
shell: bash
run: |
mkdir -p $HOME/.gradle
echo 'systemProp.user.name=spring-builds+github' >> $HOME/.gradle/gradle.properties
echo 'systemProp.org.gradle.internal.launcher.welcomeMessageEnabled=false' >> $HOME/.gradle/gradle.properties
echo 'org.gradle.daemon=false' >> $HOME/.gradle/gradle.properties
echo 'org.gradle.daemon=4' >> $HOME/.gradle/gradle.properties
- name: Configure Toolchain Properties
if: ${{ inputs.java-toolchain == 'true' }}
shell: bash
run: |
echo toolchainVersion=${{ inputs.java-version }} >> $HOME/.gradle/gradle.properties
echo systemProp.org.gradle.java.installations.auto-detect=false >> $HOME/.gradle/gradle.properties
echo systemProp.org.gradle.java.installations.auto-download=false >> $HOME/.gradle/gradle.properties
echo systemProp.org.gradle.java.installations.paths=${{ format('$JAVA_HOME_{0}_X64', inputs.java-version) }} >> $HOME/.gradle/gradle.properties
33 changes: 33 additions & 0 deletions .github/actions/send-notification/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Send Notification
description: Sends a Google Chat message as a notification of the job's outcome
inputs:
webhook-url:
description: 'Google Chat Webhook URL'
required: true
status:
description: 'Status of the job'
required: true
build-scan-url:
description: 'URL of the build scan to include in the notification'
run-name:
description: 'Name of the run to include in the notification'
default: ${{ format('{0} {1}', github.ref_name, github.job) }}
runs:
using: composite
steps:
- shell: bash
run: |
echo "BUILD_SCAN=${{ inputs.build-scan-url == '' && ' [build scan unavailable]' || format(' [<{0}|Build Scan>]', inputs.build-scan-url) }}" >> "$GITHUB_ENV"
echo "RUN_URL=${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" >> "$GITHUB_ENV"
- shell: bash
if: ${{ inputs.status == 'success' }}
run: |
curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<${{ env.RUN_URL }}|${{ inputs.run-name }}> was successful ${{ env.BUILD_SCAN }}"}' || true
- shell: bash
if: ${{ inputs.status == 'failure' }}
run: |
curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<users/all> *<${{ env.RUN_URL }}|${{ inputs.run-name }}> failed* ${{ env.BUILD_SCAN }}"}' || true
- shell: bash
if: ${{ inputs.status == 'cancelled' }}
run: |
curl -X POST '${{ inputs.webhook-url }}' -H 'Content-Type: application/json' -d '{ text: "<${{ env.RUN_URL }}|${{ inputs.run-name }}> was cancelled"}' || true
43 changes: 43 additions & 0 deletions .github/actions/sync-to-maven-central/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Sync to Maven Central
description: Syncs a release to Maven Central and waits for it to be available for use
inputs:
jfrog-cli-config-token:
description: 'Config token for the JFrog CLI'
required: true
spring-framework-version:
description: 'The version of Spring Framework that is being synced to Central'
required: true
ossrh-s01-token-username:
description: 'Username for authentication with s01.oss.sonatype.org'
required: true
ossrh-s01-token-password:
description: 'Password for authentication with s01.oss.sonatype.org'
required: true
ossrh-s01-staging-profile:
description: 'Staging profile to use when syncing to Central'
required: true
runs:
using: composite
steps:
- name: Set Up JFrog CLI
uses: jfrog/setup-jfrog-cli@105617d23456a69a92485207c4f28ae12297581d # v4.2.1
env:
JF_ENV_SPRING: ${{ inputs.jfrog-cli-config-token }}
- name: Download Release Artifacts
shell: bash
run: jf rt download --spec ${{ format('{0}/artifacts.spec', github.action_path) }} --spec-vars 'buildName=${{ format('spring-framework-{0}', inputs.spring-framework-version) }};buildNumber=${{ github.run_number }}'
- name: Sync
uses: spring-io/nexus-sync-action@42477a2230a2f694f9eaa4643fa9e76b99b7ab84 # v0.0.1
with:
username: ${{ inputs.ossrh-s01-token-username }}
password: ${{ inputs.ossrh-s01-token-password }}
staging-profile-name: ${{ inputs.ossrh-s01-staging-profile }}
create: true
upload: true
close: true
release: true
generate-checksums: true
- name: Await
uses: ./.github/actions/await-http-resource
with:
url: ${{ format('https://repo.maven.apache.org/maven2/org/springframework/spring-context/{0}/spring-context-{0}.jar', inputs.spring-framework-version) }}
20 changes: 20 additions & 0 deletions .github/actions/sync-to-maven-central/artifacts.spec
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"files": [
{
"aql": {
"items.find": {
"$and": [
{
"@build.name": "${buildName}",
"@build.number": "${buildNumber}",
"path": {
"$nmatch": "org/springframework/spring-*.zip"
}
}
]
}
},
"target": "nexus/"
}
]
}
34 changes: 34 additions & 0 deletions .github/workflows/backport-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Backport Bot

on:
issues:
types: [labeled]
pull_request:
types: [labeled]
push:
branches:
- '*.x'
permissions:
contents: read
jobs:
build:
permissions:
contents: read
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Set up Java
uses: actions/setup-java@v4
with:
distribution: 'liberica'
java-version: 17
- name: Download BackportBot
run: wget https://github.com/spring-io/backport-bot/releases/download/latest/backport-bot-0.0.1-SNAPSHOT.jar
- name: Backport
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_EVENT: ${{ toJSON(github.event) }}
run: java -jar backport-bot-0.0.1-SNAPSHOT.jar --github.accessToken="$GITHUB_TOKEN" --github.event_name "$GITHUB_EVENT_NAME" --github.event "$GITHUB_EVENT"
59 changes: 59 additions & 0 deletions .github/workflows/build-and-deploy-snapshot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Build and Deploy Snapshot
on:
push:
branches:
- 5.3.x
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
jobs:
build-and-deploy-snapshot:
name: Build and Deploy Snapshot
runs-on: ubuntu-latest
timeout-minutes: 60
if: ${{ github.repository == 'spring-projects/spring-framework' }}
steps:
- name: Check Out Code
uses: actions/checkout@v4
- name: Build and Publish
id: build-and-publish
uses: ./.github/actions/build
with:
develocity-access-key: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
publish: true
- name: Deploy
uses: spring-io/artifactory-deploy-action@26bbe925a75f4f863e1e529e85be2d0093cac116 # v0.0.1
with:
uri: 'https://repo.spring.io'
username: ${{ secrets.ARTIFACTORY_USERNAME }}
password: ${{ secrets.ARTIFACTORY_PASSWORD }}
build-name: 'spring-framework-5.3.x'
repository: 'libs-snapshot-local'
folder: 'deployment-repository'
signing-key: ${{ secrets.GPG_PRIVATE_KEY }}
signing-passphrase: ${{ secrets.GPG_PASSPHRASE }}
artifact-properties: |
/**/spring-*.zip::zip.name=spring-framework,zip.deployed=false
/**/spring-*-docs.zip::zip.type=docs
/**/spring-*-dist.zip::zip.type=dist
/**/spring-*-schema.zip::zip.type=schema
- name: Send Notification
uses: ./.github/actions/send-notification
if: always()
with:
webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
status: ${{ job.status }}
build-scan-url: ${{ steps.build-and-publish.outputs.build-scan-url }}
run-name: ${{ format('{0} | Linux | Java 8', github.ref_name) }}
outputs:
version: ${{ steps.build-and-publish.outputs.version }}
verify:
name: Verify
needs: build-and-deploy-snapshot
uses: ./.github/workflows/verify.yml
secrets:
google-chat-webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }}
repository-password: ${{ secrets.ARTIFACTORY_PASSWORD }}
repository-username: ${{ secrets.ARTIFACTORY_USERNAME }}
token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
with:
version: ${{ needs.build-and-deploy-snapshot.outputs.version }}
Loading