foundry

Gradle and IntelliJ build tooling used in Slack's Android repo

APACHE-2.0 License

Stars
427

Bot releases are visible (Hide)

foundry -

Published by ZacSweers over 1 year ago

  • Overhaul configuration of the Compose compiler across Android and multiplatform projects to make it easier to test the matrix of the AndroidX compose compiler, the JetBrains compose compiler, and new Kotlin versions.
  • New: Add a sgp.compose.multiplatform.forceAndroidXComposeCompiler Gradle property flag to force use of the AndroidX compose compiler in Compose Multiplatform projects.
  • New: Add a sgp.config.jvmVendor.optOut Gradle property flag to disable jvmVendor configuration in toolchains.
  • Fix: No longer try to watch thermals on Intel macOS machines when configuration cache is enabled.
foundry -

Published by ZacSweers over 1 year ago

  • Fix: Don't apply vendor property to Bootstrap toolchain if it's undefined.
foundry -

Published by ZacSweers over 1 year ago

  • New: Robolectric is now optional. Its support will only be enabled if there is a robolectric key in the primary version catalog.
  • Enhancement: Update bootstrap JVM args to use ExitOnOutOfMemoryError for OOMs. No longer takes a heap dump on OOM.
  • Enhancement: Update unit test verbose mode to use CrashOnOutOfMemoryError for OOMs to produce more logs.
  • Fix: Bootstrap now respects the sgp.config.jvmVendor property.
  • Build against Wire to 4.7.0.
  • Build against Anvil 2.4.6.
  • Build against AGP 8.0.2.
  • Build against Detekt 1.23.0.
foundry -

Published by ZacSweers over 1 year ago

  • Fix eager check of whether or not androidTest is enabled in slack DSL.
foundry -

Published by ZacSweers over 1 year ago

Fix application targets not getting marked as androidTest()-enabled.

foundry -

Published by ZacSweers over 1 year ago

  • Fix wrong use of disallowChanges() on javaCompiler in JavaCompile tasks. It seems that Gradle sets this multiple times.
  • Improve git version matching.
foundry - 0.9.5

Published by ZacSweers over 1 year ago

  • Use disallowChanges() where possible on properties SGP controls in order to avoid accidental overwrites.
  • Make ComputeAffectedProjectsTask also generate a affected_android_test_projects.txt file with a newline-delimited list of affected projects that enable androidTest(). This can be used in CI scripts to statically determine if instrumentation tests need to run.

What's Changed

Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.9.4...0.9.5

foundry -

Published by ZacSweers over 1 year ago

  • Fix alias naming in SlackVersions. See SlackVersions.kt for updated expected naming of aliases.
foundry -

Published by ZacSweers over 1 year ago

  • Add jdk.compiler/com.sun.tools.javac.model to Bootstrap Gradle JVM args and exec prefixes for binaries for GJF 17.
foundry -

Published by ZacSweers over 1 year ago

  • Fix accidental noisy JVM vendor log.
foundry - 0.9.1

Published by ZacSweers over 1 year ago

Happy May the Fourth!

  • Add new sgp.config.jvmVendor property to control the JVM vendor used in Kotlin and Java toolchains. This value is used to match a known vendor spec, such as AZUL.
  • Apply the kover plugin in an afterEvaluate block to avoid https://github.com/Kotlin/kotlinx-kover/issues/362.
  • Update jgrapht to 1.5.2.
  • Update oshi to 6.4.2.

What's Changed

Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.9.0...0.9.1

foundry -

Published by ZacSweers over 1 year ago

  • Improve Skippy logging.
  • Configure all Kotlin compilations, not just JVM compilations.
  • Split standard JVM args and common Kotlin args.
  • Simplify OkHttpClient setup in SlackTools.
  • Update to Kotlin 1.8.21.
  • Support Dagger KSP in slack.features.dagger DSL controls. There are two new properties to control this:
    • slack.ksp.allow-dagger – allow use of Dagger in KSP.
    • slack.ksp.allow-anvil – allow use of Anvil in KSP. Note this is not yet implemented in Anvil, just a toe-hold for the future.
  • Add debugging logs for loading SlackToolsExtension instances + fix classloader used for it.
  • Gracefully handle SlackToolsExtension extensions that fail to load.

0.8.10

2023-04-25

  • Add Context to SlackToolsExtension.

0.8.9

2023-04-25

  • Expose missing SlackTools.findExtension API.
  • Expose missing SlackTools.SERVICE_NAME for @ServiceReference API.

0.8.8

2023-04-25

  • Update to Kotlin 1.8.20.
  • Remove moshi-kotlin, only use generated adapters now.
  • Don't auto-apply the Kover plugin on a platform project.
  • Add new sgp.ge.apply-common-build-tags property flag to gate applying common build tags to a project.
  • Switch SlackToolsExtension to work as a ServiceLoader instead.

0.8.7

2023-04-23

  • Remove lock file checking in SlackTools because this apparently invalidates configuration cache every time.

0.8.6

2023-04-22

0.8.5

2023-04-22

  • Clean up thermals logging setup in SlackTools and support enabling property at different scopes (local.properties, etc).
  • Shut down thermals heartbeat executor when SlackTools is closed.
  • Use native Kotlin lambdas instead of class for SAM conversions. The minimum supported Gradle version is now 8.1, which introduced support for this.

0.8.4

2023-04-22

  • Fix JSON serialization for thermals data.

0.8.3

2023-04-22

  • Don't accidentally create new SlackTools instances when reporting background data to Gradle Enterprise. These instances would be orphaned because this would happen after Gradle had closed all existing services, and create a memory leak.
  • Use a lock file to track SlackTools instances.
  • Use a single-threaded Executor for SlackTools' thermals heartbeat.

0.8.2

2023-04-22

  • Log a Throwable with multiple instances of SlackTools to help track origin points.

0.8.1

2023-04-22

  • Add some debug logging to SlackTools to track multiple instances.
foundry -

Published by ZacSweers over 1 year ago

  • Fix: Wrap all exec operations in a ValueSource for Gradle 8.x compatibility.
  • Fix: Set git line endings to PLATFORM_NATIVE in spotless by default. Its default of looking at .gitattributes is expensive and incompatible with Gradle 8.1+ configuration caching.
  • Fix: Add slack.auto-apply.sort-dependencies boolean Gradle property to gate auto-applying the sort-dependencies plugin.
  • SGP now requires AGP 8.0+ (and with it – Gradle 8+).
foundry -

Published by ZacSweers over 1 year ago

Happy April Fool's Day!

  • [Skippy] Recursively resolve project dependencies to avoid missing transitive edges in the graph. Previously we only computed shallow dependencies.
foundry -

Published by ZacSweers over 1 year ago

  • Fix: Add missing detekt task dependencies for globalDetekt.
  • Fix: Only apply detekt config once (even if multiple Kotlin plugins are applied).
foundry -

Published by ZacSweers over 1 year ago

  • Add new slack.detekt.full property to gate whether or to run full detekt (i.e. with type resolution). If disabled, detektRelease/detektMain and associated tasks will be disabled and not used in detektGlobal.
foundry -

Published by ZacSweers over 1 year ago

foundry -

Published by ZacSweers over 1 year ago

  • [Skippy] Add more default configurations.
  • [Skippy] Add slack.avoidance.build-upon-default-affected-project-configurations flag to make provided configurations build upon defaults.
  • Add new globalDetekt task that runs detekt on all subprojects. This is Skippy-compatible and responds to slack.avoidance.affectedProjectsFile.
foundry -

Published by ZacSweers over 1 year ago

  • Don't expose androidExtension publicly in SlackExtension to avoid Gradle mismatching number of type arguments in AGP 8.1.0-alpha10+.
foundry -

Published by ZacSweers over 1 year ago