Gradle and IntelliJ build tooling used in Slack's Android repo
APACHE-2.0 License
Bot releases are visible (Hide)
Published by ZacSweers 8 months ago
AnvilMode
casing in detection.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.15.5...0.15.6
Published by ZacSweers 8 months ago
6.4.13
.sgp.compose.commonCompilerOptions
property for common compose compiler options.1.6.0
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.15.4...0.15.5
Published by ZacSweers 8 months ago
-Xproper-ieee754-comparisons
arg, as it's enabled by default and removed entirely in K2.3.8.0
.6.4.12
.1.8.0
.1.30.0
.8.3.0-rc01
.-Xproper-ieee754-comparisons
by @ZacSweers in https://github.com/slackhq/slack-gradle-plugin/pull/746
Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.15.3...0.15.4
Published by ZacSweers 9 months ago
TaskCollection.named(Spec)
APIs where appropriate.1.15.1
.2.6.3
.6.4.11
.8.2.2
.1.9.22
.1.9.22-1.0.17
.1.23.5
.1.5.12
.1.29.0
.6.25.0
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.15.2...0.15.3
Published by ZacSweers 9 months ago
New: Promote PropertyResolver
to public API.
New: Skippy logic is now distributed as a separate, non-gradle-specific artifact under com.slack.gradle:skippy
. This also includes a CLI that can be run as an alternative to the gradle task. Note this requires serialized dependency graph and androidTest projects to be pre-computed. THe config must be in a static JSON file. See the docs on ComputeAffectedProjectsCli
.
Usage: compute-affected-projects-cli [<options>]
Computes affected projects and writes output files to an output directory.
Options:
--debug Enable debug logging.
--merge-outputs Merge outputs from all configs into a single
/merged dir.
--config=<path> Path to a config file that contains a mapping of
tool names to SkippyConfig objects.
--parallel Compute affected projects in parallel.
--changed-files=<path> A relative (to the repo root) path to a
changed_files.txt that contains a
newline-delimited list of changed files. This is
usually computed from a GitHub PR's changed files.
-o, --outputs-dir=<path> Output directory for skippy outputs.
--root-dir=<path> Root repo directory. Used to compute relative
paths.
--dependency-graph=<path> Path to a serialized dependency graph file.
--android-test-project-paths=<path>
Path to a file that contains a newline-delimited
list of project paths that produce androidTest
APKs.
-h, --help Show this message and exit
Enhancement: Split out separate cacheable generateDependencyGraph
and generateAndroidTestProjects
tasks from ComputeAffectedProjectsTask
. This allows for more fine-grained caching and parallelization.
An example flow of the last two bullets can look like so:
# Generate the dependency graph and androidTest projects
./gradlew generateDependencyGraph generateAndroidTestProjectPaths
# Run the CLI, such as from a `*.main.kts` file that imports it.
./skippy-runner.main.kts \
--changed-files changed_files.txt \
--dependency-graph slack/dependencyGraph/serializedGraph.bin \
--android-test-project-paths slack/androidTestProjectPaths/paths.txt \
...
Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.15.0...0.15.2
Published by ZacSweers 10 months ago
local.properties
). Note that this work is ongoing as project isolation is incubating, but the changes in this release should be non-functional in nature.1.9.22
.1.9.22-1.0.16
.8.2.1
.8.3.0-beta01
in AgpHandler83.0.26.0
.33.0.0-jre
.6.4.10
.2.6.0
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.14.2...0.15.0
Published by ZacSweers 10 months ago
compose()
DSL function with Action parameter public.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.14.1...0.14.2
Published by ZacSweers 10 months ago
compilerOption()
API in Compose DSL for compiler arg configuration.1.28.0
+ migrate off deprecated APIs.3.7.0
.8.3.0-alpha18
.1.9.21-1.0.16
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.14.0...0.14.1
Published by ZacSweers 10 months ago
Support granular Skippy configuration. Now each tool can be configured independently with both global and per-tool configuration. These are controlled via public skippy
extension now. These outputs and diagnostics are stored at build/skippy/{tool}/...
. Merged outputs can be generated as well to build/skippy/merged
. This allows for creating dynamic pipelines based on the outputs of each tool. The global config is always overlaid onto each tool-specific config.
skippy {
debug.set(true)
mergeOutputs.set(true)
computeInParallel.set(true)
global {
applyDefaults()
// Glob patterns of files to include in computing
includePatterns.addAll(
"**/*.pro",
"**/src/**/sqldelight/**",
)
excludePatterns.addAll(".idea/**/*.kt")
// Glob patterns of files that, if changed, should result in not skipping anything in the build
neverSkipPatterns.addAll(
".buildkite/**",
".github/actions/**",
"ci/**",
"config/health-score/**",
"tooling/scripts/**",
)
}
config("lint") {
includePatterns.addAll(
// project-local lint.xml files
// this doesn't fuuuuully work with skippy because these layer like .gitignore does
"**/lint.xml",
// Lint baselines
"**/lint-baseline.xml",
)
neverSkipPatterns.addAll(
// Global lint config
"config/lint/lint.xml",
// Houston feature flags, which is an input to our feature flags lints
"config/feature-flags/experiments.txt",
)
}
config("detekt") {
// Detekt baselines
includePatterns.add("**/detekt-baseline.xml")
// Global detekt configs
neverSkipPatterns.add("config/detekt/*")
}
}
Update Kotlin language version to 1.9
.
Upgrade away from deprecated CC API check.
Update to okio 3.6.0
Update to oshi 6.4.9
Update to JNA 5.14.0
Update to kotlin-cli-util 2.5.4
Build against AGP 8.3.0-alpha17
in AgpHandler 8.3 artifact.
Build against DAGP 1.27.0
.
Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.13.1...0.14.0
Published by ZacSweers 11 months ago
Project.isSyncing
public.android.studio.version
property for reporting to build scans.4.9.3
.3.1.8
.1.9.21
.1.9.21-1.0.15
.0.25.1
.8.2.0
.2.0.1
.1.7.1
.1.23.4
.0.9.1
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.13.0...0.13.1
Published by ZacSweers 11 months ago
BuildFeatures
to build scans as custom values, starting with configuration cache and isolated projects.32.1.3-jre
.6.4.8
.8.1.4
(main) and 8.3.0-alpha15
(agp handler 8.3).1.5.11
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.12.1...0.13.0
Published by ZacSweers 11 months ago
Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.12.0...0.12.1
Published by ZacSweers 11 months ago
SlackExtension.circuit()
DSL. This makes it easy to set up Circuit in a project. See the DSL docs for more details.
slack {
features {
circuit()
}
}
KspTask
subtypes of KotlinCompile
tasks.autoValue()
APIs from SlackExtension
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.7...0.12.0
Published by ZacSweers 11 months ago
Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.6...0.11.7
Published by ZacSweers 12 months ago
Detekt.baseline
to null if we don't specify one, as we don't want it to fall back to its default location.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.5...0.11.6
Published by ZacSweers 12 months ago
8.3.0-alpha13
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.4...0.11.5
Published by ZacSweers 12 months ago
slack.detekt.baseline-file-name
property to indicate what the simple file name should be. This is evaluated against project.layout.projectDirectory.file(...)
. This replaces the previous slack.detekt.baseline
property.1.9.20
.8.1.3
.1.5.10
.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.2...0.11.4
Published by linhpha 12 months ago
Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.2...0.11.3
Published by ZacSweers 12 months ago
null
if their property values are blank.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.1...0.11.2
Published by ZacSweers 12 months ago
sgp.isTestLibrary
property to indicate if a library is a test library. Note that projects that are named test-fixtures
are implicitly considered test libraries.VisibleForTests
lint on test libraries.Full Changelog: https://github.com/slackhq/slack-gradle-plugin/compare/0.11.0...0.11.1