Compare commits

..

3 Commits

Author SHA1 Message Date
Daz DeBoer
9b814496b5 Build outputs 2022-05-29 08:51:47 -06:00
Daz DeBoer
f2bb19b43a Remove downloaded wrapper zips before caching
The wrapper zip files are redundant, and not required after extraction.
Gradle 7.5+ will delete these automatically, but we delete them for older
versions to avoid caching the wrapper distributions twice.

Sinc the `gradle-home-cache-excludes` parameter does not support
wildcards, we remove them explicitly.
2022-05-29 08:49:36 -06:00
Daz DeBoer
e3ceb00204 Fix typo in worklow step 2022-05-29 08:48:46 -06:00
16 changed files with 141 additions and 113 deletions

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id("com.gradle.enterprise") version "3.10.1" id("com.gradle.enterprise") version "3.10"
} }
gradleEnterprise { gradleEnterprise {

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id "com.gradle.build-scan" version "3.10.1" id "com.gradle.build-scan" version "3.10"
} }
gradleEnterprise { gradleEnterprise {

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id "com.gradle.enterprise" version "3.10.1" id "com.gradle.enterprise" version "3.10"
} }
gradleEnterprise { gradleEnterprise {

View File

@@ -8,18 +8,6 @@ env:
jobs: jobs:
failing-build:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Test build failure
uses: ./
continue-on-error: true
with:
build-root-directory: .github/workflow-samples/kotlin-dsl
arguments: not-a-valid-task
wrapper-missing: wrapper-missing:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:

View File

@@ -24,7 +24,7 @@ jobs:
steps: steps:
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: Exucute Gradle build - name: Execute Gradle build
uses: ./ uses: ./
with: with:
build-root-directory: .github/workflow-samples/groovy-dsl build-root-directory: .github/workflow-samples/groovy-dsl

View File

@@ -135,7 +135,7 @@ The initial Action step will perform the Gradle setup.
### Gradle command-line arguments ### Gradle command-line arguments
The `arguments` input can be used to pass arbitrary arguments to the `gradle` command line. The `arguments` input can used to pass arbitrary arguments to the `gradle` command line.
Arguments can be supplied in a single line, or as a multi-line input. Arguments can be supplied in a single line, or as a multi-line input.
Here are some valid examples: Here are some valid examples:

16
dist/main/index.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
dist/post/index.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

152
package-lock.json generated
View File

@@ -22,9 +22,9 @@
"devDependencies": { "devDependencies": {
"@types/node": "16.11.21", "@types/node": "16.11.21",
"@types/unzipper": "0.10.5", "@types/unzipper": "0.10.5",
"@typescript-eslint/parser": "5.26.0", "@typescript-eslint/parser": "5.23.0",
"@vercel/ncc": "0.33.4", "@vercel/ncc": "0.33.4",
"eslint": "8.16.0", "eslint": "8.15.0",
"eslint-plugin-github": "4.3.6", "eslint-plugin-github": "4.3.6",
"eslint-plugin-jest": "26.2.2", "eslint-plugin-jest": "26.2.2",
"jest": "28.1.0", "jest": "28.1.0",
@@ -895,15 +895,15 @@
"dev": true "dev": true
}, },
"node_modules/@eslint/eslintrc": { "node_modules/@eslint/eslintrc": {
"version": "1.3.0", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz",
"integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
"espree": "^9.3.2", "espree": "^9.3.2",
"globals": "^13.15.0", "globals": "^13.9.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
@@ -1813,15 +1813,15 @@
} }
}, },
"node_modules/@typescript-eslint/parser": { "node_modules/@typescript-eslint/parser": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz",
"integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": "5.26.0", "@typescript-eslint/scope-manager": "5.23.0",
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"@typescript-eslint/typescript-estree": "5.26.0", "@typescript-eslint/typescript-estree": "5.23.0",
"debug": "^4.3.4" "debug": "^4.3.2"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1840,13 +1840,13 @@
} }
}, },
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz",
"integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"@typescript-eslint/visitor-keys": "5.26.0" "@typescript-eslint/visitor-keys": "5.23.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1857,9 +1857,9 @@
} }
}, },
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz",
"integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==", "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1870,17 +1870,17 @@
} }
}, },
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz",
"integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"@typescript-eslint/visitor-keys": "5.26.0", "@typescript-eslint/visitor-keys": "5.23.0",
"debug": "^4.3.4", "debug": "^4.3.2",
"globby": "^11.1.0", "globby": "^11.0.4",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"semver": "^7.3.7", "semver": "^7.3.5",
"tsutils": "^3.21.0" "tsutils": "^3.21.0"
}, },
"engines": { "engines": {
@@ -1897,13 +1897,13 @@
} }
}, },
"node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz",
"integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"eslint-visitor-keys": "^3.3.0" "eslint-visitor-keys": "^3.0.0"
}, },
"engines": { "engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0" "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2825,12 +2825,12 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "8.16.0", "version": "8.15.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz",
"integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@eslint/eslintrc": "^1.3.0", "@eslint/eslintrc": "^1.2.3",
"@humanwhocodes/config-array": "^0.9.2", "@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
@@ -2848,7 +2848,7 @@
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"functional-red-black-tree": "^1.0.1", "functional-red-black-tree": "^1.0.1",
"glob-parent": "^6.0.1", "glob-parent": "^6.0.1",
"globals": "^13.15.0", "globals": "^13.6.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",
@@ -7786,15 +7786,15 @@
"dev": true "dev": true
}, },
"@eslint/eslintrc": { "@eslint/eslintrc": {
"version": "1.3.0", "version": "1.2.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz",
"integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==",
"dev": true, "dev": true,
"requires": { "requires": {
"ajv": "^6.12.4", "ajv": "^6.12.4",
"debug": "^4.3.2", "debug": "^4.3.2",
"espree": "^9.3.2", "espree": "^9.3.2",
"globals": "^13.15.0", "globals": "^13.9.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.2.1", "import-fresh": "^3.2.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
@@ -8553,56 +8553,56 @@
} }
}, },
"@typescript-eslint/parser": { "@typescript-eslint/parser": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz",
"integrity": "sha512-n/IzU87ttzIdnAH5vQ4BBDnLPly7rC5VnjN3m0xBG82HK6rhRxnCb3w/GyWbNDghPd+NktJqB/wl6+YkzZ5T5Q==", "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/scope-manager": "5.26.0", "@typescript-eslint/scope-manager": "5.23.0",
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"@typescript-eslint/typescript-estree": "5.26.0", "@typescript-eslint/typescript-estree": "5.23.0",
"debug": "^4.3.4" "debug": "^4.3.2"
}, },
"dependencies": { "dependencies": {
"@typescript-eslint/scope-manager": { "@typescript-eslint/scope-manager": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz",
"integrity": "sha512-gVzTJUESuTwiju/7NiTb4c5oqod8xt5GhMbExKsCTp6adU3mya6AGJ4Pl9xC7x2DX9UYFsjImC0mA62BCY22Iw==", "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"@typescript-eslint/visitor-keys": "5.26.0" "@typescript-eslint/visitor-keys": "5.23.0"
} }
}, },
"@typescript-eslint/types": { "@typescript-eslint/types": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz",
"integrity": "sha512-8794JZFE1RN4XaExLWLI2oSXsVImNkl79PzTOOWt9h0UHROwJedNOD2IJyfL0NbddFllcktGIO2aOu10avQQyA==", "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==",
"dev": true "dev": true
}, },
"@typescript-eslint/typescript-estree": { "@typescript-eslint/typescript-estree": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz",
"integrity": "sha512-EyGpw6eQDsfD6jIqmXP3rU5oHScZ51tL/cZgFbFBvWuCwrIptl+oueUZzSmLtxFuSOQ9vDcJIs+279gnJkfd1w==", "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"@typescript-eslint/visitor-keys": "5.26.0", "@typescript-eslint/visitor-keys": "5.23.0",
"debug": "^4.3.4", "debug": "^4.3.2",
"globby": "^11.1.0", "globby": "^11.0.4",
"is-glob": "^4.0.3", "is-glob": "^4.0.3",
"semver": "^7.3.7", "semver": "^7.3.5",
"tsutils": "^3.21.0" "tsutils": "^3.21.0"
} }
}, },
"@typescript-eslint/visitor-keys": { "@typescript-eslint/visitor-keys": {
"version": "5.26.0", "version": "5.23.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.26.0.tgz", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz",
"integrity": "sha512-wei+ffqHanYDOQgg/fS6Hcar6wAWv0CUPQ3TZzOWd2BLfgP539rb49bwua8WRAs7R6kOSLn82rfEu2ro6Llt8Q==", "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@typescript-eslint/types": "5.26.0", "@typescript-eslint/types": "5.23.0",
"eslint-visitor-keys": "^3.3.0" "eslint-visitor-keys": "^3.0.0"
} }
}, },
"semver": { "semver": {
@@ -9258,12 +9258,12 @@
"dev": true "dev": true
}, },
"eslint": { "eslint": {
"version": "8.16.0", "version": "8.15.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz",
"integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==",
"dev": true, "dev": true,
"requires": { "requires": {
"@eslint/eslintrc": "^1.3.0", "@eslint/eslintrc": "^1.2.3",
"@humanwhocodes/config-array": "^0.9.2", "@humanwhocodes/config-array": "^0.9.2",
"ajv": "^6.10.0", "ajv": "^6.10.0",
"chalk": "^4.0.0", "chalk": "^4.0.0",
@@ -9281,7 +9281,7 @@
"file-entry-cache": "^6.0.1", "file-entry-cache": "^6.0.1",
"functional-red-black-tree": "^1.0.1", "functional-red-black-tree": "^1.0.1",
"glob-parent": "^6.0.1", "glob-parent": "^6.0.1",
"globals": "^13.15.0", "globals": "^13.6.0",
"ignore": "^5.2.0", "ignore": "^5.2.0",
"import-fresh": "^3.0.0", "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4", "imurmurhash": "^0.1.4",

View File

@@ -36,9 +36,9 @@
"devDependencies": { "devDependencies": {
"@types/node": "16.11.21", "@types/node": "16.11.21",
"@types/unzipper": "0.10.5", "@types/unzipper": "0.10.5",
"@typescript-eslint/parser": "5.26.0", "@typescript-eslint/parser": "5.23.0",
"@vercel/ncc": "0.33.4", "@vercel/ncc": "0.33.4",
"eslint": "8.16.0", "eslint": "8.15.0",
"eslint-plugin-github": "4.3.6", "eslint-plugin-github": "4.3.6",
"eslint-plugin-jest": "26.2.2", "eslint-plugin-jest": "26.2.2",
"jest": "28.1.0", "jest": "28.1.0",

View File

@@ -1 +1 @@
- [NEW] Use Job Summary to display build scan links, instead of GHA annotations [FIX] Save/restore exploded Gradle dist rather than zip

View File

@@ -264,20 +264,22 @@ if (isTopLevelBuild) {
def registerCallbacks(buildScanExtension, rootProjectName) { def registerCallbacks(buildScanExtension, rootProjectName) {
buildScanExtension.with { buildScanExtension.with {
def scanFile = new File("gradle-build-scan.txt")
def buildFailed = false def buildFailed = false
buildFinished { result -> buildFinished { result ->
buildFailed = (result.failure != null) buildFailed = (result.failure != null)
} }
buildScanPublished { buildScan -> buildScanPublished { buildScan ->
scanFile.text = buildScan.buildScanUri
// Send commands directly to GitHub Actions via STDOUT. // Send commands directly to GitHub Actions via STDOUT.
def gradleCommand = rootProjectName + " " + gradle.startParameter.taskNames.join(" ") def gradleCommand = rootProjectName + " " + gradle.startParameter.taskNames.join(" ")
def githubSummaryFile = new File(System.getenv("GITHUB_STEP_SUMMARY"))
if (buildFailed) { if (buildFailed) {
githubSummaryFile << ":x: Gradle Build \`\${gradleCommand}\` [![Gradle Enterprise Build Scan](https://img.shields.io/badge/Gradle%20Enterprise%20Build%20Scan%E2%84%A2-FAILED-red?logo=Gradle)](\${buildScan.buildScanUri})" println("::warning ::Gradle build '\${gradleCommand}' FAILED - \${buildScan.buildScanUri}")
} else { } else {
githubSummaryFile << ":white_check_mark: Gradle Build \`\${gradleCommand}\` [![Gradle Enterprise Build Scan](https://img.shields.io/badge/Gradle%20Enterprise%20Build%20Scan%E2%84%A2-SUCCESS-brightgreen?logo=Gradle)](\${buildScan.buildScanUri})" println("::notice ::Gradle build '\${gradleCommand}' - \${buildScan.buildScanUri}")
} }
println("::set-output name=build-scan-url::\${buildScan.buildScanUri}") println("::set-output name=build-scan-url::\${buildScan.buildScanUri}")
} }

View File

@@ -294,6 +294,28 @@ export class GradleHomeEntryExtractor extends AbstractEntryExtractor {
super(gradleUserHome, 'gradle-home') super(gradleUserHome, 'gradle-home')
} }
async extract(listener: CacheListener): Promise<void> {
await this.deleteWrapperZips()
return super.extract(listener)
}
/**
* Delete any downloaded wrapper zip files that are not needed after extraction.
* These files are cleaned up by Gradle >= 7.5, but for older versions we remove them manually.
*/
private async deleteWrapperZips(): Promise<void> {
const wrapperZips = path.resolve(this.gradleUserHome, 'wrapper/dists/*/*/*.zip')
const globber = await glob.create(wrapperZips, {
implicitDescendants: false,
followSymbolicLinks: false
})
for (const p of await globber.glob()) {
cacheDebug(`Deleting wrapper zip: ${p}`)
tryDelete(p)
}
}
/** /**
* Return the extracted cache entry definitions, which determine which artifacts will be cached * Return the extracted cache entry definitions, which determine which artifacts will be cached
* separately from the rest of the Gradle User Home cache entry. * separately from the rest of the Gradle User Home cache entry.
@@ -316,7 +338,7 @@ export class GradleHomeEntryExtractor extends AbstractEntryExtractor {
return [ return [
entryDefinition('generated-gradle-jars', ['caches/*/generated-gradle-jars/*.jar'], false), entryDefinition('generated-gradle-jars', ['caches/*/generated-gradle-jars/*.jar'], false),
entryDefinition('wrapper-zips', ['wrapper/dists/*/*/*/'], false), // Directories only entryDefinition('wrapper-zips', ['wrapper/dists/*/*/'], false), // Entire wrapper directory cached together
entryDefinition('java-toolchains', ['jdks/*.zip', 'jdks/*.tar.gz'], false), entryDefinition('java-toolchains', ['jdks/*.zip', 'jdks/*.tar.gz'], false),
entryDefinition('dependencies', ['caches/modules-*/files-*/*/*/*/*'], true), entryDefinition('dependencies', ['caches/modules-*/files-*/*/*/*/*'], true),
entryDefinition('instrumented-jars', ['caches/jars-*/*'], true), entryDefinition('instrumented-jars', ['caches/jars-*/*'], true),

View File

@@ -1,9 +1,17 @@
import * as core from '@actions/core' import * as core from '@actions/core'
import * as exec from '@actions/exec' import * as exec from '@actions/exec'
import fs from 'fs' import fs from 'fs'
import path from 'path'
import * as gradlew from './gradlew' import * as gradlew from './gradlew'
export async function executeGradleBuild(executable: string | undefined, root: string, args: string[]): Promise<void> { export async function executeGradleBuild(executable: string | undefined, root: string, args: string[]): Promise<void> {
let buildScanUrl: string | undefined
const buildScanFile = path.resolve(root, 'gradle-build-scan.txt')
if (fs.existsSync(buildScanFile)) {
fs.unlinkSync(buildScanFile)
}
// Use the provided executable, or look for a Gradle wrapper script to run // Use the provided executable, or look for a Gradle wrapper script to run
const toExecute = executable ?? gradlew.locateGradleWrapperScript(root) const toExecute = executable ?? gradlew.locateGradleWrapperScript(root)
verifyIsExecutableScript(toExecute) verifyIsExecutableScript(toExecute)
@@ -12,8 +20,16 @@ export async function executeGradleBuild(executable: string | undefined, root: s
ignoreReturnCode: true ignoreReturnCode: true
}) })
if (fs.existsSync(buildScanFile)) {
buildScanUrl = fs.readFileSync(buildScanFile, 'utf-8')
}
if (status !== 0) { if (status !== 0) {
core.setFailed(`Gradle build failed: see console output for details`) if (buildScanUrl) {
core.setFailed(`Gradle build failed: ${buildScanUrl}`)
} else {
core.setFailed(`Gradle build failed: process exited with status ${status}`)
}
} }
} }