You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/wrapper-validation.md
+15-8Lines changed: 15 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,6 +4,9 @@ This action validates the checksums of _all_ [Gradle Wrapper](https://docs.gradl
4
4
5
5
The action should be run in the root of the repository, as it will recursively search for any files named `gradle-wrapper.jar`.
6
6
7
+
The `setup-gradle` action will perform wrapper validation on each execution. If you are using `setup-gradle` in your
8
+
workflows, it is unlikely that you will need to use this action.
9
+
7
10
## The Gradle Wrapper Problem in Open Source
8
11
9
12
The `gradle-wrapper.jar` is a binary blob of executable code that is checked into nearly
@@ -90,18 +93,22 @@ We recommend the message commit contents of:
90
93
91
94
From there, you can easily follow the rest of the prompts to create a Pull Request against the project.
92
95
93
-
## Reporting Failures
96
+
## Validation Failures
94
97
95
-
If this GitHub action fails because a `gradle-wrapper.jar` doesn't match one of our published SHA-256 checksums,
96
-
we highly recommend that you reach out to us at [security@gradle.com](mailto:security@gradle.com).
98
+
A wrapper jar can fail validation for a few reasons:
99
+
1. The wrapper is from a snapshot build of Gradle (nightly or release nightly) and you have not set `allow-snapshots`
100
+
or `allow-snapshot-wrappers` to `true`.
101
+
2. The wrapper jar is from a version of Gradle with an unverifiable wrapper jar (see below).
102
+
3. The wrapper jar was not published by Gradle, and could be compromised.
97
103
98
-
**Note:** `gradle-wrapper.jar` generated by Gradle 3.3 to 4.0 are not verifiable because those files were dynamically generated by Gradle in a non-reproducible way. It's not possible to verify the `gradle-wrapper.jar` for those versions are legitimate using a hash comparison. You should try to determine if the `gradle-wrapper.jar` was generated by one of these versions before running the build.
104
+
If this GitHub action fails because a `gradle-wrapper.jar` was not published by Gradle,
105
+
we highly recommend that you reach out to us at [security@gradle.com](mailto:security@gradle.com).
99
106
100
-
If the Gradle version in `gradle-wrapper.properties` is out of this range, you may need to regenerate the `gradle-wrapper.jar` by running `./gradlew wrapper`. If you need to use a version of Gradle between 3.3 and 4.0, you can use a newer version of Gradle to generate the `gradle-wrapper.jar`.
107
+
#### Unverifiable Wrapper Jars
108
+
Wrapper Jars generated by Gradle versions `3.3` to `4.0` are not verifiable because those files were dynamically generated by Gradle in a non-reproducible way. It's not possible to verify the `gradle-wrapper.jar` for those versions are legitimate using a hash comparison. If you have a validation failure, you should try to determine if the `gradle-wrapper.jar` was generated by one of these versions before running the build.
101
109
102
-
If you're curious and want to explore what the differences are between the `gradle-wrapper.jar` in your possession
103
-
and one of our valid release, you can compare them using this online utility: [diffoscope](https://try.diffoscope.org/).
104
-
Regardless of what you find, we still kindly request that you reach out to us and let us know.
110
+
- If the Gradle version in `gradle-wrapper.properties` is outside of this range, you can regenerate the `gradle-wrapper.jar` by running `./gradlew wrapper`. This will generate a new, verifiable wrapper jar.
111
+
- If you need to run your build with a version of Gradle between 3.3 and 4.0, you can use a newer version of Gradle to generate the `gradle-wrapper.jar`.
0 commit comments