Skip to content
This repository has been archived by the owner on Jul 11, 2024. It is now read-only.

curiostack-0.1.0

Compare
Choose a tag to compare
@chokoswitch chokoswitch released this 14 Nov 09:57
· 204 commits to master since this release
6a463f4

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 and armeria-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 to web.set(true).

  • Previously deprecated curio-static-site-plugin has been removed, rename to static-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.