distributions.gradle

Clone Tools
  • last updated a few seconds ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Convert `settings.gradle` to the Kotlin DSL (#3790)

- `apply { from(...) }` already resolves paths against `settingsDir`

- Clarify project directory name derivation from project name

- Include `*.gradle.kts` files in source distribution

  1. … 2 more files in changeset.
Include `released-versions.json` in src distribution

Remove incoming distribution concept

  1. … 5 more files in changeset.
Remove incoming distribution concept

  1. … 5 more files in changeset.
Make use of the `japicmp` plugin to check for binary compatibility

This commit introduces the use of the JApiCmp plugin to check for binary compatibility between releases of Gradle.

The binary compatibility checks now generate a report per project, based on the last release version. Accepted

changes need to be added to the `distributions/src/changes/changes-since-x.y.txt` file.

- The build will fail if a non accepted, binary breaking change, is introduced.

- Removes the binary breaking change test as it is superceded by the plugin use

- Uses a single binary compatibility check task for all projects, which aggregates classpath

This commit addresses a concern with regards to refactoring between modules. With individual reports, some errors would occur because

we moved classes from one module to the other, while, in practice, all are shipped together (as of now). This means that you cannot,

in practice, consider all artifacts as separate. They form a whole which is "the Gradle API", for good or for bad.

The custom rules:

- automatically accept changes based on our `@Incubating` policy

- make sure that all rules declared in `changes-since.txt` are matched

This plugins adds a sanity check, making sure that all the regressions that we declare

as accepted in the `changes-since` file actually match a rule. If not, the build will

fail, requiring to review this file.

Binary compatibility checks is executed as part of `sanityCheck` and `check`.

  1. … 14 more files in changeset.
Test binary compatibility on each commit

We add a test which checks if the public API of the current version is

binary compatible to the last released version.

Currently, this test lives in `distributions` until it has found a

better home. We could also run this test as part of sanity check since

it is pretty fast (6s).

The public API definition has been extracted to the root build script.

It could be nice to have the definition in a place where the test

could easily load it without going through using system properties.

  1. … 4 more files in changeset.
Remove test exclusions

We need to revisit which exclusions can be make sense.

  1. … 2 more files in changeset.
Switch forked integration tests to run with daemon by default

  1. … 16 more files in changeset.
Increase memory for the daemon

The Gradle build needs more than 1G for some more demanding tasks

like a parallel `quickCheck`.

This change also reduces the client VM memory to something reasonable.

It was set to 2G before because we were running the build in the client

VM on CI. Instead we will now be forking single-use daemons on CI, which

only adds ~500ms per build and interoperates better with the memory being

defined in gradle.properties.

  1. … 9 more files in changeset.
Lazily evaluate the reference to the createBuildReceipt task

  1. … 1 more file in changeset.
Remove version-info.jar

+review REVIEW-6527

  1. … 13 more files in changeset.
Remove remnants of `testedVersion`

  1. … 2 more files in changeset.
Remove test build receipt

  1. … 13 more files in changeset.
Snapshot gradle distribution correctly

We do not have smart snapshotting yet but we can

still describe the contents of the Gradle distribution

in a way to have integration tests cacheable.

One thing which does not work out well is `plugins.jar`

having `gradle-wrapper.jar` as contents. I enabled reproducible

archives for this jar.

+review REVIEW-6482

  1. … 4 more files in changeset.
Changed a couple more projects to use `java-library` plugin. Also inject Groovy as a test compile dependency for all projects, and removed the declaration from various project's build files.

  1. … 34 more files in changeset.
Build timestamped versions only

Use timestamped version always (#754)

The motivation behind this is that we want to be able to cache of the

Gradle build - even when we use a timestamped version when the build receipt

includes a timestamp.

The strategy is that we use a different build receipt which doesn't

include a timestamp or commitId.

When building the intTestImage we replace the version info included

in the distribution by the one used for tests, since the Gradle version

for the test needs to be the same as for the distribution under test.

We also create a binary distribution used for tests only.

We changed the names of the distributions in `build/distributions` to

only contain the base versions - therefore we will also need to change

the promotion jobs.

As part of this we changed that:

- create a tooling api shaded jar with the test version inside for

tests

- Publish only the tooling api shaded jar with the test version to the local repo - only this jar is

used from the repo from tests

- Use base version in distribution zip name - this makes is much easier

to access the zip from tests

- Pass version of bin distribution to integration tests in

distributions - these are still testing the docs having a timestamp in

it

- for IDEA integration we need to have the build receipt on the classpath

when running integration tests. Looks like we currently

need to modify the idea model manually to achieve this.

  1. … 28 more files in changeset.
Address review comments

- Make it possible to set `requiresXXX = false` in the configuration phase

- beautify the setters by having fileSystemProperty return the value

PR #815

  1. … 3 more files in changeset.
Fix typo

+review REVIEW-6363

Make all ad-hoc task inputs relative

+review REVIEW-6363

  1. … 2 more files in changeset.
Remove unnecessary expansion from distributions

We have no file containing `version` in `src/toplevel` any more. This was only in `changelog.txt`

Make integration tests cacheable again

All the inputs are declared now with the right

path sensitivity

We made zip dependencies for integration test cacheable

since this will fix the problem that we currently do not have

reproducible zip files and therefore would void caching

for all integration tests using the binary distribution

PR #815

  1. … 10 more files in changeset.
Move LICENSE to top-level directory

+review REVIEW-6262

  1. … 2 more files in changeset.
Rename distro {gradle => gradle-kotlin-dsl}

Patch external module jars when resolving them into the runtime

External module jars need to be patched in order to update the

*-classpath.properties file, which is required to load into the service

registry. Patching these in the distribution is insufficient, since the

patched versions are also required to run integration tests.

  1. … 2 more files in changeset.
Polish `distributions.gradle`

Polish `distributions.gradle`

- Reuse `GUtil.loadProperties`

- Move variable declaration for symmetry

Patch classpath manifest of external modules

In order to avoid incompatibilities between the declared dependencies of

external modules such as gradle-script-kotlin and the exact version of

such dependencies shipped with the Gradle distribution.

Resolves gradle/gradle-script-kotlin#59

Remove the Sonar plugin

+review REVIEW-5959

  1. … 163 more files in changeset.
Excludes more tests on java 9 build - Excludes test relying on source compatibility 1.5 - Adds release notes systemProperty - sets distributions as input files on java9IntegTest

  1. … 2 more files in changeset.