Releases: curioswitch/curiostack
CurioStack 0.9.1
This release upgrades the build JDK to Java 17. The target Java for built artifacts is still currently Java 16 but will likely be raised in the next release. It also finally removes all references to jcenter
from builds.
google-java-format
has been raised and will likely require applying changes with ./gradlew spotlessApply
after upgrading.
Java containers are now published to ghcr
instead of docker hub.
- ghcr.io/curioswitch/cloud-builder
- ghcr.io/curioswitch/java-cloud-runner:java11 (and :java16)
CurioServerPlugin
has been updated to reference the new location for java-cloud-runner
.
Several other dependencies have been upgraded across minor versions with the intent of not requiring changes to codebases to update. A future release will likely include breaking changes to projects using the gradle jooq plugin at the least.
CurioStack 0.8.0
This is a significant release that raises the version floors to Java 16 and Gradle 7. In addition, Bintray is completely removed and all artifacts are published to either Maven Central or Gradle Plugin Portal. Read these notes in detail as there are some steps you'll need to take to accommodate these.
Before upgrading, it is recommended to run your build with --scan
and check the Gradle Build Scan report for usages of Gradle deprecations in your code. Update them to not use deprecated patterns. You don't have to worry about deprecations issued from gradle-curiostack-plugin
components as they will be resolved when upgrading.
To allow Spotless to run on Java 16, you need to make sure to add --add-exports
as here. This will not be needed after diffplug/spotless#834 is addressed.
In addition, the License plugin that was previously used has been replaced by Spotless as it was not maintained for Gradle 7 support. The license configuration has changed somewhat, generally increasing coverage to files like Typescript. This means you will first want to run ./gradlew spotlessApply
to generate a large diff with the license changes. Unfortunately, spotless is not as sophisticated as the previous license plugin, so it does not parse the files - instead it just looks for a header line and assumes everything above it is supposed to be license. The definitions of headers is here
A best effort on recognizing the top of a file is made but it may not always work. All languages support a comment line such as // End License
to use as a last resort to prevent code under that line from being replaced with a license. In the case you have a file with two licenses, perhaps since it was copied from another project, it is recommended to use // Includes work from:
instead above the copied license.
Improvements
- Build language is now Java 16. Enjoy using
record
s, thoughImmutabes
is still preferred if a class needs to be serialized to JSON for now. - Gradle 7 support
- A Pulumi plugin for creating GPG keys (useful for signing Maven artifacts)
Breaking Changes
- License plugin has been replaced with Spotless. See above notes on how this may affect you
In addition, you may be interested in how we are managing Maven credentials and signing keys using Pulumi (the same can be done with Terraform).
https://github.com/curioswitch/curiostack/blob/master/cluster/pulumi/github/curiostack/index.ts#L66
CurioStack 0.7.4
Bugfixes
- SimpleFlatMapper has been removed due to incompatibility with Java 15+
Breaking changes
DatabaseUtil.sfmRecordMapperProvider()
has been removed
Improvements
DatabaseTestUtil.newDbContext
now accepts aClock
which can be used for better assertions on timestamps
CurioStack 0.7.2
Bugfixes
- Update Jib plugin to allow it to work with updated Jackson version
CurioStack 0.7.1
Bugfixes
setup
task fixed by removing dependency on OpenJDK setup which was removed- MacOS X SDK min version raised to 10.12 to allow compiling with Go 1.16
curiostack-bom
manages jgit and jgit ssh implementation versions
CurioStack 0.7.0
This release makes significant changes to the supported versions of Java. Notably, the build now runs on Java 15, and baseline modules like curio-server-framework
have been updated to target Java 11 - they previously targeted Java 8 mostly for Apache Beam compatibility but Java 11 has been confirmed to work now.
The biggest change is that Helm support has been removed from the plugin. It was based on Helm 2 which has been EoL since last year. Helm 3 does not use Tiller and therefore CurioStack's features are not needed anymore. If you are still using Helm 2, you will need to first migrate to Helm 3 (usually through the terraform helm provider).
Improvements
- Binaries by default target Java 15
- Gradle wrapper's Java is switched from Zulu to AdoptOpenJDK and the latest version of Java is determined by its API now
DependencyUpdates
task is now configured with best practices by the plugin. If you configure the task yourself you should remove the configuration
Dependencies
Dependency updates are mostly minor versions and should not require any code changes.
Breaking changes
- Framework libraries like
curio-server-framework
andgoogle-cloud
now target Java 11 - Helm support has been removed as per Helm 2's EoL
- OpenJDK 8 is no longer installed
protobuf-jackson 1.2.0
Bugfixes
- Use
buildPartial
for initializing prototypes of nested fields to allow working with required fields in proto2
Enhancements
- Removed dependencies on protobuf-java-util and guava
CurioStack 0.6.0
It has been a long time since the previous release of CurioStack. The most notable improvement is that Armeria is now 1.2.0, while the previous release was using pre-1.0. You should not have to worry about significant breaking changes going forward.
The target Java version has also been raised to Java 14 along with the release of new tooling to support the new versions.
Due to some changes and reverts in zulu's packaging of Java 14, this is required in gradle.properties
for Mac OS X support
org.curioswitch.curiostack.tools.openjdk=zulu14.28.21-ca-jdk14.0.1
This limitation will be removed in the next release.
New Features
- AWS CLI can now also be downloaded as part of CurioStack's tools. Stay tuned for more integration.
- Pulumi can now also be downloaded as part of CurioStack's tools.
Improvements
- Binaries by default target Java 14
- Conda plugin now sets environment variables that are recognized by Conan for C++ builds
- Download plugin can now download any file that looks like a zip, regardless of extension
Dependencies
In the long time since the previous release, there have been significant number of dependency updates. The only major version upgrade is Armeria, at 1.2.0. See the release notes for how to migrate.
Gradle has also been updated to 6.7. It is recommended to add org.gradle.vfs.watch=true
to gradle.properties
for improved performance.
Breaking changes
cloudbuild-github
has finally been removed. You should be using GCP's native integration
protobuf-jackson-1.1.0
Bug Fixes
MessageMarshaller
contains methods to operate directly onJsonParser
andJsonGenerator
, similar to the normalObjectMapper
. This is primarily for registering protobuf marshalling into anObjectMapper
. UnlikeObjectMapper
these methods were closing the input parser / generator, which breaks marshalling usingObjectMapper
serialization. The methods have been changed to not close the input - this is being released as a minor release since all users should update to this version to fix the interaction withObjectMapper
. If your code createdJsonParser
orJsonGenerator
and relied on the auto-closing, you may need to close manually now. Standard methods that operate on streams, arrays, and strings are unaffected. #543
curiostack-0.5.1
Improvements
-
Java 14 is now the default Java for CurioStack. Gradle will fetch Java 14 and the
java-cloud-runner
default has been switched to Java 14. Language target remains Java 11 until tools likegoogle-java-format
anderror-prone
catch up.- If you would like to continue to use Java 13-based runner, override the base image of server projects using
server.baseImage.set("curiostack/java-cloud-runner:13")
- If you would like to continue to use Java 13-based runner, override the base image of server projects using
-
FetchToolCacheTask
now downloads a tool cache archive to a temporary file before extracting it. Previously, it used unix pipes to directly extract the downloaded stream but this can cause issues with retries and on failure, partially extracted folders cause problems with other parts of the build. Now, if a tool fails to fetch the build should continue to work by redownloading the tool.- With the ongoing pandemic, network infrastructure seems to be having capacity issues across all services. Expect to still see some build flakiness, e.g. when downloading a Java dependency artifact.