curiostack-0.1.0
Curiostack 0.1.0 is the first version to be published on the Gradle Plugin Portal. To celebrate, let's review some of its features.
Notable Features
-
Only dependency is bash. It is possible to for any Curiostack repository to be built with no extra setup on Linux and Mac OS X. Windows also works after install Git (which comes with bash) or MSYS64 (an even better Windows bash). Even native binaries, such as cgo binaries, can be built without extra setup.
-
Automatic configuration of IntelliJ. All that is required to onboard a new developer is a single command
./gradlew setup
-
Tools, like terraform, compilers, and such, are all downloaded automatically. Even OpenJDK used for building is. There is no effort in keeping a team's tool versions up to sync since the build manages it.
-
Monorepo-aware continuous build support. Curiostack builds will only build projects that were changed, allowing large monorepos to still have reasonable build time.
-
Tightly integrated server framework. All servers are automatically built, pushed to docker registry, and deployed to Kubernetes as part of the continuous build. There is almost no boilerplate in defining a gRPC-based server and client. Server framework by default follows best practices, such as zero-trust, TLS-only, and observability.
-
The ability to easily deploy static sites to app engine and firebase, along with support for building codelabs along the way.
-
A suite of Armeria-based libraries for accessing GCP. Users that deal with large payloads will benefit from
armeria-google-cloud-storage
andarmeria-google-cloud-pubsub
which support operating on payloads without copying to the heap. -
Continuous build run on Linux, Windows, and Mac (if you need this, you may want to check out our workflow
Breaking Changes
Settings Plugin
Curiostack plugin takes advantage of new features in Gradle 6.0 and has migrated to being a settings plugin instead of a project plugin. This means it should be applied to your top level settings.gradle
and removed from build.gradle
. Previous build cache configuration is handled by the plugin now, and plugin management is not needed anymore. Your settings.gradle.kts should look something like
plugins {
id("org.curioswitch.gradle-curiostack-plugin").version("0.1.0")
}
configure<CuriostackExtension> {
buildCacheBucket.set("curioswitch-gradle-build-cache")
}
-
Gradle 6 + OpenJDK 13 require IntelliJ 2019.3 (currently BETA) to work with
-
The gRPC plugin's extension has been modernized to use Gradle's
Property
. This should only affect web projects. In web projects, switch from e.g.,web = true
toweb.set(true)
. -
Previously deprecated
curio-static-site-plugin
has been removed, rename tostatic-site-plugin
Reference from a plugins
block in build.gradle
must be removed.
New Features
-
Mac OS SDK is now automatically downloaded. Native builds, like cgo, will run correctly without any user action on a fresh Mac OS installation.
-
Conda, previously disabled on Windows, is used on Windows. Native builds work correctly on Windows too without any user action.
Dependencies
Notable dependency updates are Gradle 5.X -> 6.0 and JDK 12.x -> 13. While migrating JDK, we also migrated from AdoptOpenJDK to Zulu JDK because the latter downloads much faster.