mirror of
				https://hub.gitmirror.com/https://github.com/gradle/actions.git
				synced 2025-10-31 18:10:00 +08:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "main" and "v3.1.0" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										14
									
								
								.github/actions/build-dist/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								.github/actions/build-dist/action.yml
									
									
									
									
										vendored
									
									
								
							| @ -3,11 +3,9 @@ name: 'Build and upload distribution' | ||||
| runs: | ||||
|   using: "composite" | ||||
|   steps:  | ||||
|     - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | ||||
|     - uses: actions/setup-node@v4 | ||||
|       with: | ||||
|         node-version: 24 | ||||
|         cache: npm | ||||
|         cache-dependency-path: sources/package-lock.json | ||||
|         node-version: 20 | ||||
|     - name: Build distribution | ||||
|       shell: bash | ||||
|       run: | | ||||
| @ -16,14 +14,8 @@ runs: | ||||
|         npm install | ||||
|         npm run build | ||||
|       working-directory: sources | ||||
| 
 | ||||
|     - name: Copy the generated sources/dist directory to the top-level dist | ||||
|       shell: bash | ||||
|       run: | | ||||
|         cp -r sources/dist . | ||||
| 
 | ||||
|     - name: Upload distribution | ||||
|       uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | ||||
|       uses: actions/upload-artifact@v4 | ||||
|       with: | ||||
|         name: dist | ||||
|         path: dist/ | ||||
|  | ||||
							
								
								
									
										12
									
								
								.github/actions/download-dist/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.github/actions/download-dist/action.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| name: 'Download dist' | ||||
| # Downloads a 'dist' directory artifact that was uploaded in an earlier step | ||||
| # We control this with an environment variable to allow for easier global configuration. | ||||
| runs: | ||||
|   using: "composite" | ||||
|   steps:  | ||||
|     - name: Download dist | ||||
|       if: ${{ env.DOWNLOAD_DIST == 'true' }} | ||||
|       uses: actions/download-artifact@v4 | ||||
|       with: | ||||
|         name: dist | ||||
|         path: dist/ | ||||
							
								
								
									
										29
									
								
								.github/actions/init-integ-test/action.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/actions/init-integ-test/action.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,29 +0,0 @@ | ||||
| name: 'Initialize integ-test' | ||||
| 
 | ||||
| inputs: | ||||
|   java-version: | ||||
|     description: 'Java version to use' | ||||
|     required: false | ||||
|     default: '17' | ||||
| 
 | ||||
| runs: | ||||
|   using: "composite" | ||||
|   steps:  | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: ${{ inputs.java-version }} | ||||
| 
 | ||||
|     - name: Configure environment | ||||
|       shell: bash | ||||
|       run: | | ||||
|         echo "ALLOWED_GRADLE_WRAPPER_CHECKSUMS=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" >> "$GITHUB_ENV" | ||||
| 
 | ||||
|     # Downloads a 'dist' directory artifact that was uploaded in an earlier 'build-dist' step | ||||
|     - name: Download dist | ||||
|       if: ${{ env.SKIP_DIST != 'true' && !env.ACT }} | ||||
|       uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | ||||
|       with: | ||||
|         name: dist | ||||
|         path: dist/ | ||||
							
								
								
									
										82
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										82
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
								
							| @ -5,45 +5,67 @@ registries: | ||||
|     url: https://plugins.gradle.org/m2 | ||||
|     username: dummy # Required by dependabot | ||||
|     password: dummy # Required by dependabot | ||||
| 
 | ||||
| updates: | ||||
|   - package-ecosystem: "npm" | ||||
|     directory: "/sources" | ||||
|     schedule: | ||||
|       interval: "weekly" | ||||
|     groups: | ||||
|       npm-dependencies: | ||||
|         patterns: | ||||
|         - "*" | ||||
|        | ||||
|   - package-ecosystem: "github-actions" | ||||
|     # github-actions with directory: "/" only monitors .github/workflows | ||||
|     # https://github.com/dependabot/dependabot-core/issues/6345 | ||||
|     directories: | ||||
|       - "/" | ||||
|       - "/.github/actions/build-dist" | ||||
|       - "/.github/actions/init-integ-test" | ||||
|     directory: "/" | ||||
|     schedule: | ||||
|       interval: "weekly" | ||||
|     groups: | ||||
|       github-actions: | ||||
|         patterns: | ||||
|           - "*" | ||||
|         - "*" | ||||
| 
 | ||||
|   - package-ecosystem: "npm" | ||||
|     directory: "/" | ||||
|     schedule: | ||||
|       interval: "weekly" | ||||
|     ignore: | ||||
|       - dependency-name: "@types/node" # Breaking change: update with next major release | ||||
|       - dependency-name: "@octokit/rest" # Tied to node version | ||||
|     groups: | ||||
|       npm-dependencies: | ||||
|         patterns: | ||||
|         - "*" | ||||
|        | ||||
|   - package-ecosystem: "gradle" | ||||
|     directories: | ||||
|       - ".github/workflow-samples/gradle-plugin" | ||||
|       - ".github/workflow-samples/groovy-dsl" | ||||
|       - ".github/workflow-samples/java-toolchain" | ||||
|       - ".github/workflow-samples/kotlin-dsl" | ||||
|       - ".github/workflow-samples/no-wrapper" | ||||
|       - ".github/workflow-samples/no-wrapper-gradle-5" | ||||
|       - "sources/test/init-scripts" | ||||
|     directory: ".github/workflow-samples/gradle-plugin" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "weekly" | ||||
|     groups: | ||||
|       gradle: | ||||
|         patterns: | ||||
|           - "*" | ||||
|       interval: "daily" | ||||
|   - package-ecosystem: "gradle" | ||||
|     directory: ".github/workflow-samples/groovy-dsl" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "daily" | ||||
|   - package-ecosystem: "gradle" | ||||
|     directory: ".github/workflow-samples/java-toolchain" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "daily" | ||||
|   - package-ecosystem: "gradle" | ||||
|     directory: ".github/workflow-samples/kotlin-dsl" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "daily" | ||||
|   - package-ecosystem: "gradle" | ||||
|     directory: ".github/workflow-samples/no-wrapper" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "daily" | ||||
|   - package-ecosystem: "gradle" | ||||
|     directory: ".github/workflow-samples/no-wrapper-gradle-5" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "daily" | ||||
|   - package-ecosystem: "gradle" | ||||
|     directory: "sources/test/init-scripts" | ||||
|     registries: | ||||
|       - gradle-plugin-portal | ||||
|     schedule: | ||||
|       interval: "daily" | ||||
|  | ||||
| @ -1,2 +0,0 @@ | ||||
| # This file was generated by the Gradle 'init' task. | ||||
| # https://docs.gradle.org/current/userguide/platforms.html#sub::toml-dependencies-format | ||||
										
											Binary file not shown.
										
									
								
							| @ -1,7 +1,7 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionSha256Sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip | ||||
| distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||||
| networkTimeout=10000 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|  | ||||
							
								
								
									
										15
									
								
								.github/workflow-samples/gradle-plugin/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflow-samples/gradle-plugin/gradlew
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # | ||||
| # Copyright © 2015 the original authors. | ||||
| # Copyright © 2015-2021 the original authors. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @ -15,8 +15,6 @@ | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # SPDX-License-Identifier: Apache-2.0 | ||||
| # | ||||
| 
 | ||||
| ############################################################################## | ||||
| # | ||||
| @ -57,7 +55,7 @@ | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| @ -86,7 +84,7 @@ done | ||||
| # shellcheck disable=SC2034 | ||||
| APP_BASE_NAME=${0##*/} | ||||
| # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | ||||
| APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD=maximum | ||||
| @ -114,6 +112,7 @@ case "$( uname )" in                #( | ||||
|   NONSTOP* )        nonstop=true ;; | ||||
| esac | ||||
| 
 | ||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| # Determine the Java command to use to start the JVM. | ||||
| @ -171,6 +170,7 @@ fi | ||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||||
| if "$cygwin" || "$msys" ; then | ||||
|     APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||||
|     CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||||
| 
 | ||||
|     JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||||
| 
 | ||||
| @ -203,14 +203,15 @@ fi | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| 
 | ||||
| # Collect all arguments for the java command: | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #     and any embedded shellness will be escaped. | ||||
| #   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be | ||||
| #     treated as '${Hostname}' itself on the command line. | ||||
| 
 | ||||
| set -- \ | ||||
|         "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||||
|         -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ | ||||
|         -classpath "$CLASSPATH" \ | ||||
|         org.gradle.wrapper.GradleWrapperMain \ | ||||
|         "$@" | ||||
| 
 | ||||
| # Stop when "xargs" is not available. | ||||
|  | ||||
| @ -13,8 +13,6 @@ | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| @rem SPDX-License-Identifier: Apache-2.0 | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%"=="" @echo off | ||||
| @rem ########################################################################## | ||||
| @ -45,11 +43,11 @@ set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if %ERRORLEVEL% equ 0 goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| @ -59,21 +57,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
| 
 | ||||
| if exist "%JAVA_EXE%" goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| :execute | ||||
| @rem Setup the command line | ||||
| 
 | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||
| 
 | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
|  | ||||
							
								
								
									
										60
									
								
								.github/workflow-samples/gradle-plugin/plugin/build.gradle
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.github/workflow-samples/gradle-plugin/plugin/build.gradle
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| /* | ||||
|  * This file was generated by the Gradle 'init' task. | ||||
|  * | ||||
|  * This generated file contains a sample Gradle plugin project to get you started. | ||||
|  * For more details take a look at the Writing Custom Plugins chapter in the Gradle | ||||
|  * User Manual available at https://docs.gradle.org/7.3/userguide/custom_plugins.html | ||||
|  * This project uses @Incubating APIs which are subject to change. | ||||
|  */ | ||||
| 
 | ||||
| plugins { | ||||
|     // Apply the Java Gradle plugin development plugin to add support for developing Gradle plugins | ||||
|     id 'java-gradle-plugin' | ||||
| } | ||||
| 
 | ||||
| repositories { | ||||
|     // Use Maven Central for resolving dependencies. | ||||
|     mavenCentral() | ||||
| } | ||||
| 
 | ||||
| testing { | ||||
|     suites { | ||||
|         // Configure the built-in test suite | ||||
|         test { | ||||
|             // Use JUnit Jupiter test framework | ||||
|             useJUnitJupiter('5.7.2') | ||||
|         } | ||||
| 
 | ||||
|         // Create a new test suite | ||||
|         functionalTest(JvmTestSuite) { | ||||
|             dependencies { | ||||
|                 // functionalTest test suite depends on the production code in tests | ||||
|                 implementation(project(':plugin')) | ||||
|             } | ||||
| 
 | ||||
|             targets { | ||||
|                 all { | ||||
|                     // This test suite should run after the built-in test suite has run its tests | ||||
|                     testTask.configure { shouldRunAfter(test) }  | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| gradlePlugin { | ||||
|     // Define the plugin | ||||
|     plugins { | ||||
|         greeting { | ||||
|             id = 'org.example.gradle.plugin.greeting' | ||||
|             implementationClass = 'org.example.gradle.plugin.GradlePluginPlugin' | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| gradlePlugin.testSourceSets(sourceSets.functionalTest) | ||||
| 
 | ||||
| tasks.named('check') { | ||||
|     // Include functionalTest as part of the check lifecycle | ||||
|     dependsOn(testing.suites.functionalTest) | ||||
| } | ||||
| @ -1,40 +0,0 @@ | ||||
| plugins { | ||||
|     `java-gradle-plugin` | ||||
| } | ||||
| 
 | ||||
| repositories { | ||||
|     mavenCentral() | ||||
| } | ||||
| 
 | ||||
| testing { | ||||
|     suites { | ||||
|         val test by getting(JvmTestSuite::class) { | ||||
|             useJUnitJupiter() | ||||
|         } | ||||
| 
 | ||||
|         val functionalTest by registering(JvmTestSuite::class) { | ||||
|             dependencies { | ||||
|                 implementation(project()) | ||||
|             } | ||||
| 
 | ||||
|             targets { | ||||
|                 all { | ||||
|                     testTask.configure { shouldRunAfter(test) }  | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| gradlePlugin { | ||||
|     val greeting by plugins.creating { | ||||
|         id = "org.example.greeting" | ||||
|         implementationClass = "org.example.GradlePluginPlugin" | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| gradlePlugin.testSourceSets.add(sourceSets["functionalTest"]) | ||||
| 
 | ||||
| tasks.named<Task>("check") { | ||||
|     dependsOn(testing.suites.named("functionalTest")) | ||||
| } | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * This source file was generated by the Gradle 'init' task | ||||
|  * This Java source file was generated by the Gradle 'init' task. | ||||
|  */ | ||||
| package org.example; | ||||
| package org.example.gradle.plugin; | ||||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| @ -15,7 +15,7 @@ import org.junit.jupiter.api.io.TempDir; | ||||
| import static org.junit.jupiter.api.Assertions.*; | ||||
| 
 | ||||
| /** | ||||
|  * A simple functional test for the 'org.example.greeting' plugin. | ||||
|  * A simple functional test for the 'org.example.gradle.plugin.greeting' plugin. | ||||
|  */ | ||||
| class GradlePluginPluginFunctionalTest { | ||||
|     @TempDir | ||||
| @ -29,23 +29,24 @@ class GradlePluginPluginFunctionalTest { | ||||
|         return new File(projectDir, "settings.gradle"); | ||||
|     } | ||||
| 
 | ||||
|     @Test void canRunTask() throws IOException { | ||||
|     @Test void canRunTaskWithGradle691() throws IOException { | ||||
|         writeString(getSettingsFile(), ""); | ||||
|         writeString(getBuildFile(), | ||||
|             "plugins {" + | ||||
|             "  id('org.example.greeting')" + | ||||
|             "  id('org.example.gradle.plugin.greeting')" + | ||||
|             "}"); | ||||
| 
 | ||||
|         // Run the build | ||||
|         GradleRunner runner = GradleRunner.create(); | ||||
|         runner.forwardOutput(); | ||||
|         runner.withGradleVersion("6.9.1"); | ||||
|         runner.withPluginClasspath(); | ||||
|         runner.withArguments("greeting"); | ||||
|         runner.withProjectDir(projectDir); | ||||
|         BuildResult result = runner.build(); | ||||
| 
 | ||||
|         // Verify the result | ||||
|         assertTrue(result.getOutput().contains("Hello from plugin 'org.example.greeting'")); | ||||
|         assertTrue(result.getOutput().contains("Hello from plugin 'org.example.gradle.plugin.greeting'")); | ||||
|     } | ||||
| 
 | ||||
|     private void writeString(File file, String string) throws IOException { | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * This source file was generated by the Gradle 'init' task | ||||
|  * This Java source file was generated by the Gradle 'init' task. | ||||
|  */ | ||||
| package org.example; | ||||
| package org.example.gradle.plugin; | ||||
| 
 | ||||
| import org.gradle.api.Project; | ||||
| import org.gradle.api.Plugin; | ||||
| @ -13,7 +13,7 @@ public class GradlePluginPlugin implements Plugin<Project> { | ||||
|     public void apply(Project project) { | ||||
|         // Register a task | ||||
|         project.getTasks().register("greeting", task -> { | ||||
|             task.doLast(s -> System.out.println("Hello from plugin 'org.example.greeting'")); | ||||
|             task.doLast(s -> System.out.println("Hello from plugin 'org.example.gradle.plugin.greeting'")); | ||||
|         }); | ||||
|     } | ||||
| } | ||||
| @ -1,7 +1,7 @@ | ||||
| /* | ||||
|  * This source file was generated by the Gradle 'init' task | ||||
|  * This Java source file was generated by the Gradle 'init' task. | ||||
|  */ | ||||
| package org.example; | ||||
| package org.example.gradle.plugin; | ||||
| 
 | ||||
| import org.gradle.testfixtures.ProjectBuilder; | ||||
| import org.gradle.api.Project; | ||||
| @ -9,13 +9,13 @@ import org.junit.jupiter.api.Test; | ||||
| import static org.junit.jupiter.api.Assertions.*; | ||||
| 
 | ||||
| /** | ||||
|  * A simple unit test for the 'org.example.greeting' plugin. | ||||
|  * A simple unit test for the 'org.example.gradle.plugin.greeting' plugin. | ||||
|  */ | ||||
| class GradlePluginPluginTest { | ||||
|     @Test void pluginRegistersATask() { | ||||
|         // Create a test project and apply the plugin | ||||
|         Project project = ProjectBuilder.builder().build(); | ||||
|         project.getPlugins().apply("org.example.greeting"); | ||||
|         project.getPlugins().apply("org.example.gradle.plugin.greeting"); | ||||
| 
 | ||||
|         // Verify the result | ||||
|         assertNotNull(project.getTasks().findByName("greeting")); | ||||
							
								
								
									
										12
									
								
								.github/workflow-samples/gradle-plugin/settings.gradle
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								.github/workflow-samples/gradle-plugin/settings.gradle
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| /* | ||||
|  * This file was generated by the Gradle 'init' task. | ||||
|  * | ||||
|  * The settings file is used to specify which projects to include in your build. | ||||
|  * | ||||
|  * Detailed information about configuring a multi-project build in Gradle can be found | ||||
|  * in the user manual at https://docs.gradle.org/7.3/userguide/multi_project_builds.html | ||||
|  * This project uses @Incubating APIs which are subject to change. | ||||
|  */ | ||||
| 
 | ||||
| rootProject.name = 'gradle-plugin' | ||||
| include('plugin') | ||||
| @ -1,2 +0,0 @@ | ||||
| rootProject.name = "gradle-plugin-2" | ||||
| include("plugin") | ||||
| @ -6,12 +6,8 @@ repositories { | ||||
|     mavenCentral() | ||||
| } | ||||
| 
 | ||||
| testing { | ||||
|     suites { | ||||
|         test { | ||||
|             useJUnit() | ||||
|         } | ||||
|     } | ||||
| dependencies { | ||||
|     testImplementation('junit:junit:4.13.2') | ||||
| } | ||||
| 
 | ||||
| tasks.named("test").configure { | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -1,7 +1,7 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionSha256Sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip | ||||
| distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||||
| networkTimeout=10000 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|  | ||||
							
								
								
									
										15
									
								
								.github/workflow-samples/groovy-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflow-samples/groovy-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # | ||||
| # Copyright © 2015 the original authors. | ||||
| # Copyright © 2015-2021 the original authors. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @ -15,8 +15,6 @@ | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # SPDX-License-Identifier: Apache-2.0 | ||||
| # | ||||
| 
 | ||||
| ############################################################################## | ||||
| # | ||||
| @ -57,7 +55,7 @@ | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| @ -86,7 +84,7 @@ done | ||||
| # shellcheck disable=SC2034 | ||||
| APP_BASE_NAME=${0##*/} | ||||
| # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | ||||
| APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD=maximum | ||||
| @ -114,6 +112,7 @@ case "$( uname )" in                #( | ||||
|   NONSTOP* )        nonstop=true ;; | ||||
| esac | ||||
| 
 | ||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| # Determine the Java command to use to start the JVM. | ||||
| @ -171,6 +170,7 @@ fi | ||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||||
| if "$cygwin" || "$msys" ; then | ||||
|     APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||||
|     CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||||
| 
 | ||||
|     JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||||
| 
 | ||||
| @ -203,14 +203,15 @@ fi | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| 
 | ||||
| # Collect all arguments for the java command: | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #     and any embedded shellness will be escaped. | ||||
| #   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be | ||||
| #     treated as '${Hostname}' itself on the command line. | ||||
| 
 | ||||
| set -- \ | ||||
|         "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||||
|         -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ | ||||
|         -classpath "$CLASSPATH" \ | ||||
|         org.gradle.wrapper.GradleWrapperMain \ | ||||
|         "$@" | ||||
| 
 | ||||
| # Stop when "xargs" is not available. | ||||
|  | ||||
							
								
								
									
										25
									
								
								.github/workflow-samples/groovy-dsl/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								.github/workflow-samples/groovy-dsl/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @ -13,8 +13,6 @@ | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| @rem SPDX-License-Identifier: Apache-2.0 | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%"=="" @echo off | ||||
| @rem ########################################################################## | ||||
| @ -45,11 +43,11 @@ set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if %ERRORLEVEL% equ 0 goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| @ -59,21 +57,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
| 
 | ||||
| if exist "%JAVA_EXE%" goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| :execute | ||||
| @rem Setup the command line | ||||
| 
 | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||
| 
 | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
|  | ||||
| @ -1,12 +1,13 @@ | ||||
| plugins { | ||||
|     id "com.gradle.develocity" version "4.2.2" | ||||
|     id "com.gradle.common-custom-user-data-gradle-plugin" version "2.4.0" | ||||
|     id "com.gradle.enterprise" version "3.16.2" | ||||
|     id "com.gradle.common-custom-user-data-gradle-plugin" version "1.12.1" | ||||
| } | ||||
| 
 | ||||
| develocity { | ||||
| gradleEnterprise { | ||||
|     buildScan { | ||||
|         termsOfUseUrl = "https://gradle.com/help/legal-terms-of-use" | ||||
|         termsOfUseAgree = "yes" | ||||
|         termsOfServiceUrl = "https://gradle.com/terms-of-service" | ||||
|         termsOfServiceAgree = "yes" | ||||
|         publishAlways() | ||||
|         uploadInBackground = false | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| plugins { | ||||
|     java | ||||
|     id 'java' | ||||
| } | ||||
| 
 | ||||
| java { | ||||
| @ -12,10 +12,6 @@ repositories { | ||||
|     mavenCentral() | ||||
| } | ||||
| 
 | ||||
| testing { | ||||
|     suites { | ||||
|         val test by getting(JvmTestSuite::class) { | ||||
|             useJUnit() | ||||
|         } | ||||
|     } | ||||
| } | ||||
| dependencies { | ||||
|     testImplementation('junit:junit:4.13.2') | ||||
| } | ||||
										
											Binary file not shown.
										
									
								
							| @ -1,7 +1,7 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionSha256Sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip | ||||
| distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||||
| networkTimeout=10000 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|  | ||||
							
								
								
									
										15
									
								
								.github/workflow-samples/java-toolchain/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflow-samples/java-toolchain/gradlew
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # | ||||
| # Copyright © 2015 the original authors. | ||||
| # Copyright © 2015-2021 the original authors. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @ -15,8 +15,6 @@ | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # SPDX-License-Identifier: Apache-2.0 | ||||
| # | ||||
| 
 | ||||
| ############################################################################## | ||||
| # | ||||
| @ -57,7 +55,7 @@ | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| @ -86,7 +84,7 @@ done | ||||
| # shellcheck disable=SC2034 | ||||
| APP_BASE_NAME=${0##*/} | ||||
| # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | ||||
| APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD=maximum | ||||
| @ -114,6 +112,7 @@ case "$( uname )" in                #( | ||||
|   NONSTOP* )        nonstop=true ;; | ||||
| esac | ||||
| 
 | ||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| # Determine the Java command to use to start the JVM. | ||||
| @ -171,6 +170,7 @@ fi | ||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||||
| if "$cygwin" || "$msys" ; then | ||||
|     APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||||
|     CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||||
| 
 | ||||
|     JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||||
| 
 | ||||
| @ -203,14 +203,15 @@ fi | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| 
 | ||||
| # Collect all arguments for the java command: | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #     and any embedded shellness will be escaped. | ||||
| #   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be | ||||
| #     treated as '${Hostname}' itself on the command line. | ||||
| 
 | ||||
| set -- \ | ||||
|         "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||||
|         -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ | ||||
|         -classpath "$CLASSPATH" \ | ||||
|         org.gradle.wrapper.GradleWrapperMain \ | ||||
|         "$@" | ||||
| 
 | ||||
| # Stop when "xargs" is not available. | ||||
|  | ||||
| @ -13,8 +13,6 @@ | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| @rem SPDX-License-Identifier: Apache-2.0 | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%"=="" @echo off | ||||
| @rem ########################################################################## | ||||
| @ -45,11 +43,11 @@ set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if %ERRORLEVEL% equ 0 goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| @ -59,21 +57,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
| 
 | ||||
| if exist "%JAVA_EXE%" goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| :execute | ||||
| @rem Setup the command line | ||||
| 
 | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||
| 
 | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
|  | ||||
							
								
								
									
										5
									
								
								.github/workflow-samples/java-toolchain/settings.gradle
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.github/workflow-samples/java-toolchain/settings.gradle
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,5 @@ | ||||
| plugins { | ||||
|     id("org.gradle.toolchains.foojay-resolver-convention") version("0.7.0") | ||||
| } | ||||
| 
 | ||||
| rootProject.name = 'basic' | ||||
| @ -1,6 +0,0 @@ | ||||
| plugins { | ||||
|     // Apply the foojay-resolver plugin to allow automatic download of JDKs | ||||
|     id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0" | ||||
| } | ||||
| 
 | ||||
| rootProject.name = "java-toolchains" | ||||
| @ -8,15 +8,13 @@ repositories { | ||||
| 
 | ||||
| dependencies { | ||||
|     api("org.apache.commons:commons-math3:3.6.1") | ||||
|     implementation("com.google.guava:guava:33.5.0-jre") | ||||
|     implementation("com.google.guava:guava:33.0.0-jre") | ||||
| 
 | ||||
|     testImplementation("org.junit.jupiter:junit-jupiter:5.10.2") | ||||
| } | ||||
| 
 | ||||
| testing { | ||||
|     suites {  | ||||
|        val test by getting(JvmTestSuite::class) {  | ||||
|             useJUnitJupiter()  | ||||
|         } | ||||
|     } | ||||
| tasks.test { | ||||
|     useJUnitPlatform() | ||||
| } | ||||
| 
 | ||||
| tasks.named("test").configure { | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -1,7 +1,7 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionSha256Sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip | ||||
| distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||||
| networkTimeout=10000 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|  | ||||
							
								
								
									
										15
									
								
								.github/workflow-samples/kotlin-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								.github/workflow-samples/kotlin-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| 
 | ||||
| # | ||||
| # Copyright © 2015 the original authors. | ||||
| # Copyright © 2015-2021 the original authors. | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| @ -15,8 +15,6 @@ | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # SPDX-License-Identifier: Apache-2.0 | ||||
| # | ||||
| 
 | ||||
| ############################################################################## | ||||
| # | ||||
| @ -57,7 +55,7 @@ | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| @ -86,7 +84,7 @@ done | ||||
| # shellcheck disable=SC2034 | ||||
| APP_BASE_NAME=${0##*/} | ||||
| # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | ||||
| APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD=maximum | ||||
| @ -114,6 +112,7 @@ case "$( uname )" in                #( | ||||
|   NONSTOP* )        nonstop=true ;; | ||||
| esac | ||||
| 
 | ||||
| CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| # Determine the Java command to use to start the JVM. | ||||
| @ -171,6 +170,7 @@ fi | ||||
| # For Cygwin or MSYS, switch paths to Windows format before running java | ||||
| if "$cygwin" || "$msys" ; then | ||||
|     APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) | ||||
|     CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) | ||||
| 
 | ||||
|     JAVACMD=$( cygpath --unix "$JAVACMD" ) | ||||
| 
 | ||||
| @ -203,14 +203,15 @@ fi | ||||
| DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' | ||||
| 
 | ||||
| # Collect all arguments for the java command: | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #   * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, | ||||
| #     and any embedded shellness will be escaped. | ||||
| #   * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be | ||||
| #     treated as '${Hostname}' itself on the command line. | ||||
| 
 | ||||
| set -- \ | ||||
|         "-Dorg.gradle.appname=$APP_BASE_NAME" \ | ||||
|         -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ | ||||
|         -classpath "$CLASSPATH" \ | ||||
|         org.gradle.wrapper.GradleWrapperMain \ | ||||
|         "$@" | ||||
| 
 | ||||
| # Stop when "xargs" is not available. | ||||
|  | ||||
							
								
								
									
										25
									
								
								.github/workflow-samples/kotlin-dsl/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								.github/workflow-samples/kotlin-dsl/gradlew.bat
									
									
									
									
										vendored
									
									
								
							| @ -13,8 +13,6 @@ | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| @rem SPDX-License-Identifier: Apache-2.0 | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%"=="" @echo off | ||||
| @rem ########################################################################## | ||||
| @ -45,11 +43,11 @@ set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if %ERRORLEVEL% equ 0 goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| @ -59,21 +57,22 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
| 
 | ||||
| if exist "%JAVA_EXE%" goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| :execute | ||||
| @rem Setup the command line | ||||
| 
 | ||||
| set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||||
| 
 | ||||
| 
 | ||||
| @rem Execute Gradle | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* | ||||
| "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* | ||||
| 
 | ||||
| :end | ||||
| @rem End local scope for the variables with windows NT shell | ||||
|  | ||||
| @ -1,13 +1,14 @@ | ||||
| plugins { | ||||
|     id("com.gradle.develocity") version "4.2.2" | ||||
|     id("com.gradle.common-custom-user-data-gradle-plugin") version "2.4.0" | ||||
|     id("com.gradle.enterprise") version "3.16.2" | ||||
|     id("com.gradle.common-custom-user-data-gradle-plugin") version "1.12.1" | ||||
| } | ||||
| 
 | ||||
| develocity { | ||||
| gradleEnterprise { | ||||
|     buildScan { | ||||
|         termsOfUseUrl = "https://gradle.com/help/legal-terms-of-use" | ||||
|         termsOfUseAgree = "yes" | ||||
|         uploadInBackground = false | ||||
|         termsOfServiceUrl = "https://gradle.com/terms-of-service" | ||||
|         termsOfServiceAgree = "yes" | ||||
|         publishAlways() | ||||
|         isUploadInBackground = false | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| plugins { | ||||
|     id "com.gradle.develocity" version "4.2.2"  | ||||
|     id "com.gradle.build-scan" version "3.16.2"  | ||||
| } | ||||
| 
 | ||||
| develocity { | ||||
| gradleEnterprise { | ||||
|     buildScan { | ||||
|         termsOfUseUrl = "https://gradle.com/help/legal-terms-of-use" | ||||
|         termsOfUseAgree = "yes" | ||||
|         termsOfServiceUrl = "https://gradle.com/terms-of-service" | ||||
|         termsOfServiceAgree = "yes" | ||||
|         publishAlways() | ||||
|         uploadInBackground = false | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| plugins { | ||||
|     id "com.gradle.develocity" version "4.2.2" | ||||
|     id "com.gradle.enterprise" version "3.16.2" | ||||
| } | ||||
| 
 | ||||
| develocity { | ||||
| gradleEnterprise { | ||||
|     buildScan { | ||||
|         termsOfUseUrl = "https://gradle.com/help/legal-terms-of-use" | ||||
|         termsOfUseAgree = "yes" | ||||
|         termsOfServiceUrl = "https://gradle.com/terms-of-service" | ||||
|         termsOfServiceAgree = "yes" | ||||
|         publishAlways() | ||||
|         uploadInBackground = false | ||||
|     } | ||||
| } | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -1,7 +1,7 @@ | ||||
| distributionBase=GRADLE_USER_HOME | ||||
| distributionPath=wrapper/dists | ||||
| distributionSha256Sum=57dafb5c2622c6cc08b993c85b7c06956a2f53536432a30ead46166dbca0f1e9 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip | ||||
| distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026 | ||||
| distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||||
| networkTimeout=10000 | ||||
| validateDistributionUrl=true | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
|  | ||||
| @ -15,8 +15,6 @@ | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
| # | ||||
| # SPDX-License-Identifier: Apache-2.0 | ||||
| # | ||||
| 
 | ||||
| ############################################################################## | ||||
| # | ||||
| @ -57,7 +55,7 @@ | ||||
| #       Darwin, MinGW, and NonStop. | ||||
| # | ||||
| #   (3) This script is generated from the Groovy template | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt | ||||
| #       within the Gradle project. | ||||
| # | ||||
| #       You can find Gradle at https://github.com/gradle/gradle/. | ||||
| @ -86,8 +84,7 @@ done | ||||
| # shellcheck disable=SC2034 | ||||
| APP_BASE_NAME=${0##*/} | ||||
| # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) | ||||
| APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s | ||||
| ' "$PWD" ) || exit | ||||
| APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit | ||||
| 
 | ||||
| # Use the maximum available, or set MAX_FD != -1 to use that value. | ||||
| MAX_FD=maximum | ||||
|  | ||||
| @ -13,8 +13,6 @@ | ||||
| @rem See the License for the specific language governing permissions and | ||||
| @rem limitations under the License. | ||||
| @rem | ||||
| @rem SPDX-License-Identifier: Apache-2.0 | ||||
| @rem | ||||
| 
 | ||||
| @if "%DEBUG%"=="" @echo off | ||||
| @rem ########################################################################## | ||||
| @ -45,11 +43,11 @@ set JAVA_EXE=java.exe | ||||
| %JAVA_EXE% -version >NUL 2>&1 | ||||
| if %ERRORLEVEL% equ 0 goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
| @ -59,11 +57,11 @@ set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||||
| 
 | ||||
| if exist "%JAVA_EXE%" goto execute | ||||
| 
 | ||||
| echo. 1>&2 | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 | ||||
| echo. 1>&2 | ||||
| echo Please set the JAVA_HOME variable in your environment to match the 1>&2 | ||||
| echo location of your Java installation. 1>&2 | ||||
| echo. | ||||
| echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||||
| echo. | ||||
| echo Please set the JAVA_HOME variable in your environment to match the | ||||
| echo location of your Java installation. | ||||
| 
 | ||||
| goto fail | ||||
| 
 | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| plugins { | ||||
|     id "com.gradle.develocity" version "4.2.2" | ||||
|     id "com.gradle.enterprise" version "3.16.2" | ||||
| } | ||||
| 
 | ||||
| develocity { | ||||
| gradleEnterprise { | ||||
|     buildScan { | ||||
|         termsOfUseUrl = "https://gradle.com/help/legal-terms-of-use" | ||||
|         termsOfUseAgree = "yes" | ||||
|         termsOfServiceUrl = "https://gradle.com/terms-of-service" | ||||
|         termsOfServiceAgree = "yes" | ||||
|         publishAlways() | ||||
|         uploadInBackground = false | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										57
									
								
								.github/workflows/ci-check-and-unit-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										57
									
								
								.github/workflows/ci-check-and-unit-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,57 +0,0 @@ | ||||
| name: CI-check-and-unit-test | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     - 'release/**' | ||||
|     paths-ignore: | ||||
|     - 'dist/**' | ||||
|   pull_request: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   check-format-and-unit-test: | ||||
|     runs-on: ubuntu-latest | ||||
| 
 | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | ||||
|       with: | ||||
|         node-version: 20 | ||||
|         cache: npm | ||||
|         cache-dependency-path: sources/package-lock.json | ||||
|     - name: Setup Gradle | ||||
|       # Use a released version to avoid breakages | ||||
|       uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 | ||||
|       env: | ||||
|         ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing | ||||
|       with: | ||||
|         gradle-version: '8.14.2' | ||||
| 
 | ||||
|     - name: Install npm dependencies | ||||
|       run: | | ||||
|         npm clean-install | ||||
|       working-directory: sources | ||||
| 
 | ||||
|     - name: Check formatting and compile | ||||
|       run: | | ||||
|         npm run check | ||||
|         npm run compile | ||||
|       working-directory: sources | ||||
|       env: | ||||
|         NODE_OPTIONS: '-r @gradle-tech/develocity-agent/preload' | ||||
|         DEVELOCITY_URL: 'https://ge.solutions-team.gradle.com' | ||||
|         DEVELOCITY_ACCESS_KEY: '${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}' | ||||
| 
 | ||||
|     - name: Run unit tests | ||||
|       run: | | ||||
|         npm test | ||||
|       working-directory: sources | ||||
|       env: | ||||
|         NODE_OPTIONS: '-r @gradle-tech/develocity-agent/preload' | ||||
|         DEVELOCITY_URL: 'https://ge.solutions-team.gradle.com' | ||||
|         DEVELOCITY_ACCESS_KEY: '${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}' | ||||
							
								
								
									
										40
									
								
								.github/workflows/ci-check-no-dist-update.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.github/workflows/ci-check-no-dist-update.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,40 +0,0 @@ | ||||
| name: CI-check-no-dist-update | ||||
| 
 | ||||
| # Prohibit any change to 'dist/**' on a non-release branch | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - 'dist/**' | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   fail-on-dist-update: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       with: | ||||
|         fetch-depth: 0 | ||||
| 
 | ||||
|     - name: Get changed files | ||||
|       id: changed-files | ||||
|       uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47.0.0 | ||||
|       with: | ||||
|         files: | | ||||
|           dist/** | ||||
| 
 | ||||
|     - name: Print changes to dist directory | ||||
|       env: | ||||
|         ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} | ||||
|       run: | | ||||
|         for file in ${ALL_CHANGED_FILES}; do | ||||
|           echo "$file was changed" | ||||
|         done | ||||
| 
 | ||||
|     - run: | | ||||
|         echo "The 'dist' directory is automatically updated by the release process." | ||||
|         echo "It should not be updated manually in a non-release branch or a pull request." | ||||
|         exit 1 | ||||
							
								
								
									
										17
									
								
								.github/workflows/ci-codeql.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/ci-codeql.yml
									
									
									
									
										vendored
									
									
								
							| @ -2,19 +2,12 @@ name: CI-codeql | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     - 'release/**' | ||||
|     - 'dev/**' # Allow running Code QL on dev branches without a PR | ||||
|     branches: [ "main" ] | ||||
|   pull_request: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     branches: [ "main" ] | ||||
|   schedule: | ||||
|     - cron: '25 23 * * 2' | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   analyze: | ||||
|     name: Analyze | ||||
| @ -31,11 +24,11 @@ jobs: | ||||
| 
 | ||||
|     steps: | ||||
|     - name: Checkout repository | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       uses: actions/checkout@v4 | ||||
| 
 | ||||
|     # Initializes the CodeQL tools for scanning. | ||||
|     - name: Initialize CodeQL | ||||
|       uses: github/codeql-action/init@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v3.29.5 | ||||
|       uses: github/codeql-action/init@v3 | ||||
|       with: | ||||
|         languages: ${{ matrix.language }} | ||||
|         config: | | ||||
| @ -43,4 +36,4 @@ jobs: | ||||
|           - sources/src | ||||
| 
 | ||||
|     - name: Perform CodeQL Analysis | ||||
|       uses: github/codeql-action/analyze@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v3.29.5 | ||||
|       uses: github/codeql-action/analyze@v3 | ||||
|  | ||||
							
								
								
									
										20
									
								
								.github/workflows/ci-dependency-review.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/ci-dependency-review.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| # Dependency Review Action | ||||
| # | ||||
| # This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging. | ||||
| # | ||||
| # Source repository: https://github.com/actions/dependency-review-action | ||||
| # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement | ||||
| name: CI-dependency-review | ||||
| on: [pull_request] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-review: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: 'Checkout Repository' | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: 'Dependency Review' | ||||
|         uses: actions/dependency-review-action@v4 | ||||
							
								
								
									
										107
									
								
								.github/workflows/ci-full-check.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								.github/workflows/ci-full-check.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,107 @@ | ||||
| name: CI-full-check | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   pull_request: | ||||
|     types: | ||||
|       - assigned | ||||
|       - review_requested | ||||
|   push: | ||||
|     branches:  | ||||
|       - main | ||||
|       - release/** | ||||
|     paths: | ||||
|       - '.github/**' | ||||
|       - 'dist/**' | ||||
| 
 | ||||
| jobs: | ||||
|   action-inputs: | ||||
|     uses: ./.github/workflows/integ-test-action-inputs.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   cache-cleanup: | ||||
|     uses: ./.github/workflows/integ-test-cache-cleanup.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   caching-config: | ||||
|     uses: ./.github/workflows/integ-test-caching-config.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   dependency-graph: | ||||
|     uses: ./.github/workflows/integ-test-dependency-graph.yml | ||||
|     permissions: | ||||
|       contents: write | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   dependency-graph-failures: | ||||
|     uses: ./.github/workflows/integ-test-dependency-graph-failures.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   execution-with-caching: | ||||
|     uses: ./.github/workflows/integ-test-execution-with-caching.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   execution: | ||||
|     uses: ./.github/workflows/integ-test-execution.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   develocity-injection: | ||||
|     uses: ./.github/workflows/integ-test-inject-develocity.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
|     secrets: | ||||
|       DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} | ||||
| 
 | ||||
|   provision-gradle-versions: | ||||
|     uses: ./.github/workflows/integ-test-provision-gradle-versions.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   restore-configuration-cache: | ||||
|     uses: ./.github/workflows/integ-test-restore-configuration-cache.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
|     secrets: | ||||
|       GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
| 
 | ||||
|   restore-custom-gradle-home: | ||||
|     uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   restore-containerized-gradle-home: | ||||
|     uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   restore-gradle-home: | ||||
|     uses: ./.github/workflows/integ-test-restore-gradle-home.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   restore-java-toolchain: | ||||
|     uses: ./.github/workflows/integ-test-restore-java-toolchain.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   sample-kotlin-dsl: | ||||
|     uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   sample-gradle-plugin: | ||||
|     uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
| 
 | ||||
|   toolchain-detection: | ||||
|     uses: ./.github/workflows/integ-test-detect-java-toolchains.yml | ||||
|     with: | ||||
|       cache-key-prefix: ${{github.run_number}}- | ||||
							
								
								
									
										20
									
								
								.github/workflows/ci-init-script-check.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/ci-init-script-check.yml
									
									
									
									
										vendored
									
									
								
							| @ -2,37 +2,25 @@ name: CI-init-script-check | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     - 'release/**' | ||||
|     paths-ignore: | ||||
|     - 'dist/**' | ||||
|   pull_request: | ||||
|     paths: | ||||
|       - '.github/workflows/ci-init-script-check.yml' | ||||
|       - 'sources/src/resources/init-scripts/**' | ||||
|       - 'sources/test/init-scripts/**' | ||||
|   workflow_dispatch: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   test-init-scripts: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: temurin | ||||
|         java-version: 17 | ||||
|         java-version: 8 | ||||
|     - name: Setup Gradle | ||||
|       # Use a released version to avoid breakages | ||||
|       uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 | ||||
|       env: | ||||
|         ALLOWED_GRADLE_WRAPPER_CHECKSUMS: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 # Invalid wrapper jar used for testing | ||||
|       uses: gradle/actions/setup-gradle@v3 # Use a released version to avoid breakages | ||||
|     - name: Run integration tests | ||||
|       working-directory: sources/test/init-scripts | ||||
|       run: ./gradlew check | ||||
|  | ||||
							
								
								
									
										39
									
								
								.github/workflows/ci-integ-test-full.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										39
									
								
								.github/workflows/ci-integ-test-full.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,39 +0,0 @@ | ||||
| name: CI-integ-test-full | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   push: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     paths: | ||||
|     - 'dist/**' | ||||
| 
 | ||||
| concurrency: | ||||
|   group: integ-test | ||||
|   cancel-in-progress: false | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   caching-integ-tests: | ||||
|     uses: ./.github/workflows/suite-integ-test-caching.yml | ||||
|     concurrency: | ||||
|       group: CI-integ-test-full | ||||
|       cancel-in-progress: false | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       skip-dist: true | ||||
|     secrets: inherit | ||||
| 
 | ||||
|   other-integ-tests: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     uses: ./.github/workflows/suite-integ-test-other.yml | ||||
|     concurrency: | ||||
|       group: CI-integ-test-full | ||||
|       cancel-in-progress: false | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       skip-dist: true | ||||
|     secrets: inherit | ||||
							
								
								
									
										45
									
								
								.github/workflows/ci-integ-test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/ci-integ-test.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,45 +0,0 @@ | ||||
| name: CI-integ-test | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   pull_request: | ||||
|   push: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     - 'release/**' | ||||
|     - 'dev/**' # Allow running tests on dev branches without a PR | ||||
|     paths-ignore: | ||||
|     - 'dist/**' | ||||
| 
 | ||||
| concurrency: | ||||
|   group: integ-test | ||||
|   cancel-in-progress: false | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   build-distribution: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Build and upload distribution | ||||
|       if: ${{ needs.determine-suite.outputs.suite != 'full' }} | ||||
|       uses: ./.github/actions/build-dist | ||||
| 
 | ||||
|   caching-integ-tests: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/suite-integ-test-caching.yml | ||||
|     with: | ||||
|       skip-dist: false | ||||
|     secrets: inherit | ||||
| 
 | ||||
|   other-integ-tests: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/suite-integ-test-other.yml | ||||
|     with: | ||||
|       skip-dist: false | ||||
|     secrets: inherit | ||||
							
								
								
									
										57
									
								
								.github/workflows/ci-ossf-scorecard.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										57
									
								
								.github/workflows/ci-ossf-scorecard.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,57 +0,0 @@ | ||||
| name: CI-ossf-scorecard | ||||
| on: | ||||
|   schedule: | ||||
|     - cron: '0 5 * * 1' | ||||
|   push: | ||||
|     branches: | ||||
|       - main | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   analysis: | ||||
|     name: Scorecard analysis | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       # Needed to upload the results to code-scanning dashboard. | ||||
|       security-events: write | ||||
|       # Needed to publish results and get a badge (see publish_results below). | ||||
|       id-token: write | ||||
| 
 | ||||
|     steps: | ||||
|       - name: 'Checkout code' | ||||
|         uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|         with: | ||||
|           persist-credentials: false | ||||
|           show-progress: false | ||||
| 
 | ||||
|       - name: 'Run analysis' | ||||
|         uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 | ||||
|         with: | ||||
|           results_file: results.sarif | ||||
|           results_format: sarif | ||||
| 
 | ||||
|           # Public repositories: | ||||
|           #   - Publish results to OpenSSF REST API for easy access by consumers | ||||
|           #   - Allows the repository to include the Scorecard badge. | ||||
|           #   - See https://github.com/ossf/scorecard-action#publishing-results. | ||||
|           # For private repositories: | ||||
|           #   - `publish_results` will always be set to `false`, regardless | ||||
|           #     of the value entered here. | ||||
|           publish_results: true | ||||
| 
 | ||||
|       # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF | ||||
|       # format to the repository Actions tab. | ||||
|       - name: 'Upload artifact' | ||||
|         uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 | ||||
|         with: | ||||
|           name: SARIF file | ||||
|           path: results.sarif | ||||
|           retention-days: 5 | ||||
| 
 | ||||
|       # Upload the results to GitHub's code scanning dashboard. | ||||
|       - name: 'Upload to code-scanning' | ||||
|         uses: github/codeql-action/upload-sarif@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v3.29.5 | ||||
|         with: | ||||
|           sarif_file: results.sarif | ||||
							
								
								
									
										156
									
								
								.github/workflows/ci-quick-check.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										156
									
								
								.github/workflows/ci-quick-check.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,156 @@ | ||||
| name: CI-quick-check | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   push: | ||||
|     branches-ignore:  | ||||
|     - main | ||||
|     - release/** | ||||
| 
 | ||||
| jobs: | ||||
|   build-distribution: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Build and upload distribution | ||||
|       uses: ./.github/actions/build-dist | ||||
| 
 | ||||
|   run-unit-tests: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Configure Gradle as default for unit test | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: 8.5 | ||||
|     - name: Run tests | ||||
|       run: | | ||||
|         npm install | ||||
|         npm run all | ||||
|       working-directory: sources | ||||
| 
 | ||||
|   action-inputs: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-action-inputs.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   cache-cleanup: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-cache-cleanup.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
|       cache-key-prefix: ${{github.run_number}}- # Requires a fresh cache entry each run | ||||
| 
 | ||||
|   caching-config: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-caching-config.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   dependency-graph: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-dependency-graph.yml | ||||
|     permissions: | ||||
|       contents: write | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   dependency-graph-failures: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-dependency-graph-failures.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   execution-with-caching: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-execution-with-caching.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   execution: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-execution.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   develocity-injection: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-inject-develocity.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
|     secrets: | ||||
|       DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }} | ||||
| 
 | ||||
|   provision-gradle-versions: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-provision-gradle-versions.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   restore-configuration-cache: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-restore-configuration-cache.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
|     secrets: | ||||
|       GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
| 
 | ||||
|   restore-containerized-gradle-home: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml | ||||
|     with: | ||||
|       download-dist: true | ||||
| 
 | ||||
|   restore-custom-gradle-home: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml | ||||
|     with: | ||||
|       download-dist: true | ||||
| 
 | ||||
|   restore-gradle-home: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-restore-gradle-home.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   restore-java-toolchain: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-restore-java-toolchain.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   sample-kotlin-dsl: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   sample-gradle-plugin: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
| 
 | ||||
|   toolchain-detection: | ||||
|     needs: build-distribution | ||||
|     uses: ./.github/workflows/integ-test-detect-java-toolchains.yml | ||||
|     with: | ||||
|       runner-os: '["ubuntu-latest"]' | ||||
|       download-dist: true | ||||
							
								
								
									
										75
									
								
								.github/workflows/ci-update-dist.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								.github/workflows/ci-update-dist.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,75 +0,0 @@ | ||||
| name: CI-update-dist | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   push: | ||||
|     branches: | ||||
|     - 'main' | ||||
|     - 'prerelease/**' | ||||
|     - 'release/**' | ||||
|     paths-ignore: | ||||
|     - 'dist/**' | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   update-dist: | ||||
|     # Only run for the Gradle repository; otherwise when users create pull requests from their `main` branch | ||||
|     # it would erroneously update `dist` on their branch (and the pull request) | ||||
|     if: github.repository == 'gradle/actions' | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: ubuntu-latest | ||||
| 
 | ||||
|     steps: | ||||
|     - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       with: | ||||
|         token: ${{ secrets.BOT_GITHUB_TOKEN }} | ||||
| 
 | ||||
|     - name: Set up Node.js | ||||
|       uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | ||||
|       with: | ||||
|         node-version: 20 | ||||
|         cache: npm | ||||
|         cache-dependency-path: sources/package-lock.json | ||||
| 
 | ||||
|     - name: Install npm dependencies | ||||
|       run: | | ||||
|         npm clean-install | ||||
|       working-directory: sources | ||||
| 
 | ||||
|     - name: Build distribution | ||||
|       run: | | ||||
|         npm run check | ||||
|         npm run compile | ||||
|       working-directory: sources | ||||
|       env: | ||||
|         NODE_OPTIONS: '-r @gradle-tech/develocity-agent/preload' | ||||
|         DEVELOCITY_URL: 'https://ge.solutions-team.gradle.com' | ||||
|         DEVELOCITY_ACCESS_KEY: '${{ secrets.DV_SOLUTIONS_ACCESS_KEY }}' | ||||
| 
 | ||||
|     - name: Copy the generated sources/dist directory to the top-level dist | ||||
|       run: | | ||||
|         cp -r sources/dist . | ||||
| 
 | ||||
|     - name: Import GPG key to sign commits | ||||
|       uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0 | ||||
|       with: | ||||
|         gpg_private_key: ${{ secrets.GH_BOT_PGP_PRIVATE_KEY }} | ||||
|         passphrase: ${{ secrets.GH_BOT_PGP_PASSPHRASE }} | ||||
|         git_user_signingkey: true | ||||
|         git_commit_gpgsign: true | ||||
|         git_config_global: true | ||||
| 
 | ||||
|     # Commit and push changes; has no effect if the files did not change | ||||
|     # Important: The push event will not trigger any other workflows, see | ||||
|     # https://github.com/stefanzweifel/git-auto-commit-action?tab=readme-ov-file#commits-made-by-this-action-do-not-trigger-new-workflow-runs | ||||
|     - name: Commit & push changes | ||||
|       uses: stefanzweifel/git-auto-commit-action@28e16e81777b558cc906c8750092100bbb34c5e3 # v7.0.0 | ||||
|       with: | ||||
|         commit_author: bot-githubaction <bot-githubaction@gradle.com> | ||||
|         commit_user_name: bot-githubaction | ||||
|         commit_user_email: bot-githubaction@gradle.com | ||||
|         commit_message: '[bot] Update dist directory' | ||||
|         file_pattern: dist | ||||
							
								
								
									
										17
									
								
								.github/workflows/ci-validate-wrappers.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								.github/workflows/ci-validate-wrappers.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,17 +0,0 @@ | ||||
| name: CI-validate-wrappers | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|   pull_request: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   validation: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       - uses: gradle/actions/wrapper-validation@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2 # v5.0.0 | ||||
|         with: | ||||
|           allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 | ||||
							
								
								
									
										45
									
								
								.github/workflows/ci-verify-outputs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/ci-verify-outputs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,45 @@ | ||||
| name: CI-verify-outputs | ||||
| 
 | ||||
| on: | ||||
|   pull_request: | ||||
|     types: | ||||
|       - assigned | ||||
|       - review_requested | ||||
|   push: | ||||
|     branches:  | ||||
|       - main | ||||
|       - release/** | ||||
|       - dependabot/** | ||||
| 
 | ||||
| jobs: | ||||
|   check: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - uses: actions/setup-node@v4 | ||||
|       with: | ||||
|         node-version: 20 | ||||
|     - name: Build | ||||
|       run: | | ||||
|         npm -v | ||||
|         node -v | ||||
|         npm install | ||||
|         npm run build | ||||
|       working-directory: sources | ||||
| 
 | ||||
|     - name: Compare the expected and actual dist/ directories | ||||
|       run: | | ||||
|         if [ "$(git diff --ignore-space-at-eol dist/ | wc -l)" -gt "0" ]; then | ||||
|           echo "Detected uncommitted changes after build.  See status below:" | ||||
|           git diff | ||||
|           exit 1 | ||||
|         fi | ||||
|       id: diff | ||||
| 
 | ||||
|     # If index.js was different than expected, upload the expected version as an artifact | ||||
|     - uses: actions/upload-artifact@v4 | ||||
|       if: ${{ failure() && steps.diff.conclusion == 'failure' }} | ||||
|       with: | ||||
|         name: dist | ||||
|         path: dist/ | ||||
							
								
								
									
										43
									
								
								.github/workflows/demo-failure-cases.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								.github/workflows/demo-failure-cases.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,43 @@ | ||||
| name: demo-failure-cases | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
| 
 | ||||
| jobs: | ||||
| 
 | ||||
|   failing-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Test build failure | ||||
|       uses: ./setup-gradle | ||||
|       continue-on-error: true | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/kotlin-dsl | ||||
|         arguments: not-a-valid-task | ||||
| 
 | ||||
|   wrapper-missing: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Test wrapper missing | ||||
|       uses: ./setup-gradle | ||||
|       continue-on-error: true | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper | ||||
|         arguments: help | ||||
| 
 | ||||
|   bad-configuration: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Test bad config value | ||||
|       uses: ./setup-gradle | ||||
|       continue-on-error: true | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper | ||||
|         arguments: help | ||||
|         cache-disabled: yes | ||||
							
								
								
									
										74
									
								
								.github/workflows/demo-job-summary.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										74
									
								
								.github/workflows/demo-job-summary.yml
									
									
									
									
										vendored
									
									
								
							| @ -2,33 +2,22 @@ name: Demo Job Summary, for Gradle builds | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   push: | ||||
| 
 | ||||
| jobs: | ||||
|   build-distribution: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Build and upload distribution | ||||
|       uses: ./.github/actions/build-dist | ||||
| 
 | ||||
|   many-gradle-builds: | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Build distribution | ||||
|       shell: bash | ||||
|       run: | | ||||
|         npm install | ||||
|         npm run build | ||||
|       working-directory: sources | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false | ||||
|         cache-cleanup: 'on-success' | ||||
|     - name: Build kotlin-dsl project | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
|       run: ./gradlew assemble | ||||
| @ -46,26 +35,22 @@ jobs: | ||||
|       run: |  | ||||
|          ./gradlew tasks --no-daemon | ||||
|          ./gradlew help check | ||||
|          ./gradlew wrapper --gradle-version 8.7 --gradle-distribution-sha256-sum 544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d | ||||
|     - name: Fail groovy-dsl project | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       continue-on-error: true | ||||
|       run: ./gradlew not-a-real-task | ||||
|     - name: Dependency submission | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         dependency-graph: generate-and-upload | ||||
| 
 | ||||
|   successful-builds-with-no-summary: | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Build distribution | ||||
|       shell: bash | ||||
|       run: | | ||||
|         npm install | ||||
|         npm run build | ||||
|       working-directory: sources | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -78,14 +63,16 @@ jobs: | ||||
|       run: ./gradlew assemble check --no-scan | ||||
| 
 | ||||
|   pre-existing-gradle-home: | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Build distribution | ||||
|       shell: bash | ||||
|       run: | | ||||
|         npm install | ||||
|         npm run build | ||||
|       working-directory: sources | ||||
|     - name: Pre-create Gradle User Home | ||||
|       shell: bash | ||||
|       run: | | ||||
| @ -97,20 +84,3 @@ jobs: | ||||
|     - name: Run build | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: ./gradlew assemble | ||||
| 
 | ||||
|   cache-read-only: | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: true | ||||
|     - name: Build kotlin-dsl project | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
|       run: ./gradlew assemble | ||||
|  | ||||
							
								
								
									
										40
									
								
								.github/workflows/demo-pr-build-scan-comment.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								.github/workflows/demo-pr-build-scan-comment.yml
									
									
									
									
										vendored
									
									
								
							| @ -4,28 +4,14 @@ on: | ||||
|     types: [assigned, review_requested] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   pull-requests: write | ||||
| 
 | ||||
| jobs: | ||||
|   build-distribution: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Build and upload distribution | ||||
|       uses: ./.github/actions/build-dist | ||||
| 
 | ||||
|   successful-build-with-always-comment: | ||||
|     permissions: | ||||
|       pull-requests: write | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Checkout project sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -36,16 +22,10 @@ jobs: | ||||
|       run: ./gradlew build --scan | ||||
| 
 | ||||
|   successful-build-with-comment-on-failure: | ||||
|     permissions: | ||||
|       pull-requests: write | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Checkout project sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -56,16 +36,10 @@ jobs: | ||||
|       run: ./gradlew build --scan | ||||
| 
 | ||||
|   failing-build-with-comment-on-failure: | ||||
|     permissions: | ||||
|       pull-requests: write | ||||
|     needs: build-distribution | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Checkout project sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
							
								
								
									
										22
									
								
								.github/workflows/dependency-submission-save.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/dependency-submission-save.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| name: Test dependency-submission save | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   push: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission-save: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and save dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         dependency-graph: generate-and-upload | ||||
|       env: | ||||
|         GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository | ||||
							
								
								
									
										20
									
								
								.github/workflows/dependency-submission-submit.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								.github/workflows/dependency-submission-submit.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,20 @@ | ||||
| name: Test dependency-submission submit | ||||
| 
 | ||||
| on: | ||||
|   workflow_run: | ||||
|     workflows: ['Test dependency-submission save'] | ||||
|     types: [completed] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: write | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission-submit: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download and submit dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: download-and-submit | ||||
							
								
								
									
										61
									
								
								.github/workflows/dependency-submission.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								.github/workflows/dependency-submission.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | ||||
| name: Test dependency-submission | ||||
| 
 | ||||
| on: | ||||
|   workflow_dispatch: | ||||
|   push: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: write | ||||
| 
 | ||||
| jobs: | ||||
|   test-dependency-submission: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and submit dependencies | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|       env: | ||||
|         GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository | ||||
| 
 | ||||
|   test-gradle-versions: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         gradle: [8.0.2, 7.6.4, 7.1.1, 6.9.4, 6.0.1, 5.6.4, 5.2.1] | ||||
|         include: | ||||
|           - gradle: 5.6.4 | ||||
|             build-root-suffix: -gradle-5 | ||||
|           - gradle: 5.2.1 | ||||
|             build-root-suffix: -gradle-5 | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and submit dependencies | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         gradle-version: ${{ matrix.gradle }} | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }} | ||||
|       env: | ||||
|         GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository | ||||
| 
 | ||||
|   test-after-setup-gradle: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|     - name: Generate and submit dependencies | ||||
|       id: dependency-submission | ||||
|       uses: ./dependency-submission | ||||
|       continue-on-error: true | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|     - name: Assert step failure | ||||
|       if: steps.dependency-submission.outcome != 'failure' | ||||
|       run: | | ||||
|         echo "Dependency submission step should fail after setup-gradle" | ||||
|         exit 1 | ||||
							
								
								
									
										40
									
								
								.github/workflows/integ-test-action-inputs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								.github/workflows/integ-test-action-inputs.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,40 @@ | ||||
| name: Test action inputs | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   action-inputs: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Invoke with multi-line arguments | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         arguments: | | ||||
|             --configuration-cache | ||||
|             --build-cache | ||||
|             -DsystemProperty=FOO | ||||
|             -PgradleProperty=BAR | ||||
|             test | ||||
|             jar | ||||
| @ -1,69 +0,0 @@ | ||||
| name: Test develocity injection | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: build-scan-publish-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   build-scan-publish: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         gradle: ['current', '8.14.3', '7.6.2', '6.9.4', '5.6.4'] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         include: | ||||
|           - java-version: 17 | ||||
|           - gradle: '8.14.3' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.6.2' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.9.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '5.6.4' | ||||
|             java-version: 11 | ||||
| 
 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       with: | ||||
|         java-version: ${{ matrix.java-version }} | ||||
| 
 | ||||
|     - name: Setup Gradle | ||||
|       id: setup-gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         gradle-version: ${{ matrix.gradle }} | ||||
|         build-scan-publish: true | ||||
|         build-scan-terms-of-use-url: 'https://gradle.com/terms-of-service' | ||||
|         build-scan-terms-of-use-agree: 'yes' | ||||
|     - name: Run Gradle build | ||||
|       id: gradle | ||||
|       working-directory: .github/workflow-samples/no-ge | ||||
|       run: gradle help | ||||
|     - name: Check Build Scan url | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected')    | ||||
| 
 | ||||
							
								
								
									
										69
									
								
								.github/workflows/integ-test-cache-cleanup.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										69
									
								
								.github/workflows/integ-test-cache-cleanup.yml
									
									
									
									
										vendored
									
									
								
							| @ -5,103 +5,82 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   # Requires a fresh cache entry each run | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: cache-cleanup-${{ inputs.cache-key-prefix }}-${{github.run_number}} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: integ-test-cache-cleanup-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   cache-cleanup-full-build: | ||||
|   full-build: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|     - name: Build with 3.1 | ||||
|       working-directory: sources/test/jest/resources/cache-cleanup | ||||
|       run: ./gradlew --no-daemon --build-cache -Dcommons_math3_version="3.1" build | ||||
|       run: gradle --no-daemon --build-cache -Dcommons_math3_version="3.1" build | ||||
| 
 | ||||
|   # Second build will use the cache from the first build, but cleanup should remove unused artifacts | ||||
|   cache-cleanup-assemble-build: | ||||
|     needs: cache-cleanup-full-build | ||||
|   assemble-build: | ||||
|     needs: full-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false | ||||
|         cache-cleanup: 'on-success' | ||||
|         gradle-home-cache-cleanup: true | ||||
|     - name: Build with 3.1.1 | ||||
|       working-directory: sources/test/jest/resources/cache-cleanup | ||||
|       run: ./gradlew --no-daemon --build-cache -Dcommons_math3_version="3.1.1" build | ||||
|       run: gradle --no-daemon --build-cache -Dcommons_math3_version="3.1.1" build | ||||
| 
 | ||||
|   cache-cleanup-check-clean-cache: | ||||
|     needs: cache-cleanup-assemble-build | ||||
|   check-clean-cache: | ||||
|     needs: assemble-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: true | ||||
|     - name: Report Gradle User Home | ||||
|       shell: bash | ||||
|       run: | | ||||
|         du -hc $GRADLE_USER_HOME/caches/modules-2 | ||||
|         du -hc $GRADLE_USER_HOME/wrapper/dists | ||||
|       run: du -hc ~/.gradle/caches/modules-2 | ||||
|     - name: Verify cleaned cache | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -e $GRADLE_USER_HOME/caches/modules-2/files-2.1/org.apache.commons/commons-math3/3.1.1 ]; then | ||||
|         if [ ! -e ~/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-math3/3.1.1 ]; then | ||||
|           echo "::error ::Should find commons-math3 3.1.1 in cache" | ||||
|           exit 1 | ||||
|         fi | ||||
|         if [ -e $GRADLE_USER_HOME/caches/modules-2/files-2.1/org.apache.commons/commons-math3/3.1 ]; then | ||||
|         if [ -e ~/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-math3/3.1 ]; then | ||||
|           echo "::error ::Should NOT find commons-math3 3.1 in cache" | ||||
|           exit 1 | ||||
|         fi | ||||
|         if [ ! -e $GRADLE_USER_HOME/wrapper/dists/gradle-8.0.2-bin ]; then | ||||
|           echo "::error ::Should find gradle-8.0.2 in wrapper/dists" | ||||
|           exit 1 | ||||
|         fi | ||||
|  | ||||
							
								
								
									
										109
									
								
								.github/workflows/integ-test-caching-config.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								.github/workflows/integ-test-caching-config.yml
									
									
									
									
										vendored
									
									
								
							| @ -5,44 +5,36 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: caching-config-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-caching-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   caching-config-seed-build: | ||||
|   seed-build: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         # Add "application" to main cache entry but omit "notifications" | ||||
|         # Add "enterprise" to main cache entry but omit "notifications" | ||||
|         gradle-home-cache-includes: | | ||||
|             caches | ||||
|             application | ||||
|             enterprise | ||||
|         # Exclude build-cache from main cache entry | ||||
|         gradle-home-cache-excludes: | | ||||
|             caches/build-cache-* | ||||
| @ -52,27 +44,24 @@ jobs: | ||||
|       run: ./gradlew test | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache dependencies, by running build with --offline | ||||
|   caching-config-verify-build: | ||||
|     needs: caching-config-seed-build | ||||
|   verify-build: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         # Use the same configuration as used in the seed build | ||||
|         gradle-home-cache-includes: | | ||||
|             caches | ||||
|             application | ||||
|             enterprise | ||||
|         gradle-home-cache-excludes: | | ||||
|             caches/build-cache-* | ||||
|             caches/*/executionHistory | ||||
| @ -82,74 +71,67 @@ jobs: | ||||
|       run: ./gradlew test --offline | ||||
| 
 | ||||
|   # Test that build scans are captured when caching is explicitly disabled | ||||
|   caching-config-cache-disabled: | ||||
|   cache-disabled: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-disabled: true | ||||
|     - name: Build using Gradle wrapper | ||||
|     - name: Run Gradle build | ||||
|       id: gradle | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: ./gradlew help | ||||
|       working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }} | ||||
|       run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}" | ||||
|     - name: Check Build Scan url is captured | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected') | ||||
| 
 | ||||
|   # Test that build scans are captured when caching is disabled because Gradle User Home already exists | ||||
|   caching-config-cache-disabled-pre-existing-gradle-home: | ||||
|     runs-on: ubuntu-latest # This test only runs on Ubuntu | ||||
|   cache-disabled-pre-existing-gradle-home: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Create dummy Gradle User Home | ||||
|       run: mkdir -p ~/.gradle/caches | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|     - name: Build using Gradle wrapper | ||||
|     - name: Run Gradle build | ||||
|       id: gradle | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: ./gradlew help | ||||
|       working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }} | ||||
|       run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}" | ||||
|     - name: Check Build Scan url is captured | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected') | ||||
| 
 | ||||
|   # Test seed the cache with cache-write-only and verify with cache-read-only | ||||
|   caching-config-seed-write-only: | ||||
|   seed-build-write-only: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: caching-config-write-only-${{ inputs.cache-key-prefix }} | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only- | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -158,22 +140,19 @@ jobs: | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: ./gradlew test | ||||
| 
 | ||||
|   caching-config-verify-write-only: | ||||
|   verify-write-only-build: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: caching-config-write-only-${{ inputs.cache-key-prefix }} | ||||
|     needs: caching-config-seed-write-only | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only- | ||||
|     needs: seed-build-write-only | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
							
								
								
									
										128
									
								
								.github/workflows/integ-test-dependency-graph-failures.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								.github/workflows/integ-test-dependency-graph-failures.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,128 @@ | ||||
| name: Test dependency graph | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   failing-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         dependency-graph: generate | ||||
|         dependency-graph-continue-on-failure: true | ||||
|     - name: Run build that will fail | ||||
|       id: gradle-build | ||||
|       continue-on-error: true | ||||
|       run: ./gradlew build fail | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|     - name: Check no dependency graph is generated | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -z "$(ls -A dependency-graph-reports)" ]; then | ||||
|             echo "Expected no dependency graph files to be generated" | ||||
|             ls -l dependency-graph-reports | ||||
|             exit 1 | ||||
|         fi         | ||||
| 
 | ||||
|   unsupported-gradle-version-warning: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: 7.0.1 | ||||
|         dependency-graph: generate | ||||
|         dependency-graph-continue-on-failure: true | ||||
|     - name: Run with unsupported Gradle version | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: | | ||||
|         if gradle help | grep -q 'warning::Dependency Graph is not supported for Gradle 7.0.1. No dependency snapshot will be generated.'; | ||||
|         then | ||||
|           echo "Got the expected warning" | ||||
|         else | ||||
|           echo "Did not get the expected warning" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   unsupported-gradle-version-failure: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: 7.0.1 | ||||
|         dependency-graph: generate | ||||
|         dependency-graph-continue-on-failure: false | ||||
|     - name: Run with unsupported Gradle version | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: | | ||||
|         if gradle help; then | ||||
|           echo "Expected build to fail with Gradle 7.0.1" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   insufficient-permissions-warning: | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         dependency-graph: generate-and-submit | ||||
|         dependency-graph-continue-on-failure: true | ||||
|     - name: Run with insufficient permissions | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: ./gradlew help | ||||
|       # This test is primarily for demonstration: it's unclear how to check for warnings emitted in the post-action | ||||
| 
 | ||||
|   SHOULD_FAIL-insufficient-permissions-failure: | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
|     continue-on-error: true | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         dependency-graph: generate-and-submit | ||||
|         dependency-graph-continue-on-failure: false | ||||
|     - name: Run with insufficient permissions | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: ./gradlew help | ||||
|       # This test is primarily for demonstration: it's unclear how to check for a failure in the post-action | ||||
							
								
								
									
										141
									
								
								.github/workflows/integ-test-dependency-graph.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										141
									
								
								.github/workflows/integ-test-dependency-graph.yml
									
									
									
									
										vendored
									
									
								
							| @ -5,31 +5,31 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }} | ||||
|   GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   contents: write | ||||
| 
 | ||||
| env: | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-graph-groovy-upload: | ||||
|     runs-on: "ubuntu-latest" | ||||
|   groovy-generate: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -38,34 +38,16 @@ jobs: | ||||
|       run: ./gradlew build | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
| 
 | ||||
|   dependency-graph-groovy-submit: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     needs: [dependency-graph-groovy-upload] | ||||
|     runs-on: "ubuntu-latest" | ||||
|   kotlin-generate: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Submit dependency graphs | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         dependency-graph: download-and-submit | ||||
|       env: | ||||
|         DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: groovy-upload | ||||
| 
 | ||||
|   dependency-graph-kotlin-generate-and-submit: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: "ubuntu-latest" | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -73,17 +55,30 @@ jobs: | ||||
|     - name: Run gradle build | ||||
|       run: ./gradlew build | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
| 
 | ||||
|   dependency-graph-multiple-builds: | ||||
|     permissions: | ||||
|       contents: write | ||||
|    | ||||
|   submit: | ||||
|     needs: [groovy-generate] | ||||
|     runs-on: "ubuntu-latest" | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Submit dependency graphs | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         dependency-graph: download-and-submit | ||||
| 
 | ||||
|   multiple-builds: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -117,16 +112,13 @@ jobs: | ||||
|             exit 1 | ||||
|         fi | ||||
|          | ||||
|   dependency-graph-config-cache: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: ubuntu-latest # Test is not compatible with Windows | ||||
|   config-cache: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -153,40 +145,3 @@ jobs: | ||||
|             ls -l dependency-graph-reports | ||||
|             exit 1 | ||||
|         fi         | ||||
| 
 | ||||
|   dependency-graph-generate-submit-and-upload: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: "ubuntu-latest" | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Setup Gradle for dependency-graph generate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         dependency-graph: generate-submit-and-upload | ||||
|     - name: Run gradle build | ||||
|       id: gradle-build | ||||
|       run: ./gradlew build | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
| 
 | ||||
|   dependency-graph-generate-submit-and-upload-check: | ||||
|     needs: [dependency-graph-generate-submit-and-upload] | ||||
|     runs-on: "ubuntu-latest" | ||||
|     steps: | ||||
|     - name: Download dependency-graph artifact | ||||
|       uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 | ||||
|       with: | ||||
|         path: downloaded-dependency-graphs | ||||
|         pattern: dependency-graph_*dependency-graph-generate-submit-and-upload.json | ||||
|     - name: Check for downloaded dependency graphs | ||||
|       shell: bash | ||||
|       run: | | ||||
|         ls -A "${{ github.workspace }}/downloaded-dependency-graphs" | ||||
|         if [ -z "$(ls -A "${{ github.workspace }}/downloaded-dependency-graphs")" ]; then | ||||
|           echo "No dependency graph files found" | ||||
|           exit 1 | ||||
|         fi | ||||
|  | ||||
| @ -1,103 +0,0 @@ | ||||
| name: Test dependency submission failures | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-submission-failures-${{ inputs.cache-key-prefix }} | ||||
|   GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission-failures-failing-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Submit with failing build | ||||
|       id: gradle-build | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         additional-arguments: fail | ||||
|       continue-on-error: true | ||||
|     - name: Check step failed | ||||
|       if: steps.gradle-build.outcome != 'failure' | ||||
|       run: | | ||||
|         echo "Expected dependency submission step to fail" | ||||
|         exit 1 | ||||
|     - name: Check no dependency graph is generated | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -z "$(ls -A dependency-graph-reports)" ]; then | ||||
|             echo "Expected no dependency graph files to be generated" | ||||
|             ls -l dependency-graph-reports | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   dependency-submission-failures-unsupported-gradle-version: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Submit with unsupported Gradle version | ||||
|       id: gradle-build | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         gradle-version: '7.0.1' | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|       continue-on-error: true | ||||
|     - name: Check step failed | ||||
|       if: steps.gradle-build.outcome != 'failure' | ||||
|       run: | | ||||
|         echo "Expected dependency submission step to fail" | ||||
|         exit 1 | ||||
|     - name: Check no dependency graph is generated | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -z "$(ls -A dependency-graph-reports)" ]; then | ||||
|             echo "Expected no dependency graph files to be generated" | ||||
|             ls -l dependency-graph-reports | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   dependency-submission-failures-insufficient-permissions: | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Submit with insufficient permissions | ||||
|       id: gradle-build | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|       continue-on-error: true | ||||
|     - name: Check step failed | ||||
|       if: steps.gradle-build.outcome != 'failure' | ||||
|       run: | | ||||
|         echo "Expected dependency submission step to fail" | ||||
|         exit 1 | ||||
| @ -1,423 +0,0 @@ | ||||
| name: Test dependency submission | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-submission-${{ inputs.cache-key-prefix }} | ||||
|   GITHUB_DEPENDENCY_GRAPH_REF: 'refs/tags/v0.0.1' # Use a different ref to avoid updating the real dependency graph for the repository | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission-groovy-generate-and-upload: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Generate dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: generate-and-upload | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         cache-read-only: false | ||||
|       env:  | ||||
|         GRADLE_BUILD_ACTION_CACHE_KEY_JOB: groovy-dependency-submission | ||||
| 
 | ||||
|   dependency-submission-groovy-restore-cache: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     needs: [dependency-submission-groovy-generate-and-upload] | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Restore dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         additional-arguments: --offline | ||||
|       env:  | ||||
|         GRADLE_BUILD_ACTION_CACHE_KEY_JOB: groovy-dependency-submission | ||||
| 
 | ||||
|   dependency-submission-groovy-download-and-submit: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     needs: [dependency-submission-groovy-generate-and-upload] | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Submit dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: download-and-submit | ||||
|       env: | ||||
|         DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: groovy-generate-and-upload-${{ matrix.os }} | ||||
| 
 | ||||
|   dependency-submission-kotlin-generate-and-submit: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/kotlin-dsl | ||||
| 
 | ||||
|   dependency-submission-multiple-builds: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - id: kotlin-dsl | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/kotlin-dsl | ||||
|     - id: groovy-dsl | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|     - id: groovy-dsl-again | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         dependency-resolution-task: assemble | ||||
|     - name: Check generated dependency graphs | ||||
|       shell: bash | ||||
|       run: | | ||||
|         echo "kotlin-dsl report file: ${{ steps.kotlin-dsl.outputs.dependency-graph-file }}" | ||||
|         echo "groovy-dsl report file: ${{ steps.groovy-dsl.outputs.dependency-graph-file }}" | ||||
|         echo "groovy-dsl-again report file: ${{ steps.groovy-dsl-again.outputs.dependency-graph-file }}" | ||||
|         ls -l dependency-graph-reports | ||||
|         if [ ! -e "${{ steps.kotlin-dsl.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find kotlin-dsl dependency graph file" | ||||
|             exit 1 | ||||
|         fi | ||||
|         if [ ! -e "${{ steps.groovy-dsl.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find groovy-dsl dependency graph file" | ||||
|             exit 1 | ||||
|         fi | ||||
|         if [ ! -e "${{ steps.groovy-dsl-again.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find groovy-dsl-again dependency graph file" | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   dependency-submission-multiple-builds-upload: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - id: kotlin-dsl | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: generate-and-upload | ||||
|         build-root-directory: .github/workflow-samples/kotlin-dsl | ||||
|     - id: groovy-dsl | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: generate-and-upload | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
| 
 | ||||
|   dependency-submission-config-cache: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: ubuntu-latest # Test is not compatible with Windows | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - id: config-cache-store | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         additional-arguments: --configuration-cache | ||||
|     - name: Check and delete generated dependency graph | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -e "${{ steps.config-cache-store.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find config-cache-store dependency graph files" | ||||
|             exit 1 | ||||
|         fi | ||||
|         rm ${{ steps.config-cache-store.outputs.dependency-graph-file }}* | ||||
|     - id: config-cache-reuse | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         additional-arguments: --configuration-cache | ||||
|     - name: Check no dependency graph is generated | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -z "$(ls -A dependency-graph-reports)" ]; then | ||||
|             echo "Expected no dependency graph files to be generated" | ||||
|             ls -l dependency-graph-reports | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   dependency-submission-gradle-versions: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         gradle: ['9.0.0', '8.14.3', '8.0.2', '7.6.4', '7.1.1', '6.9.4', '6.0.1', '5.6.4', '5.2.1'] | ||||
|         include: | ||||
|           - java-version: 17 | ||||
|           - gradle: '8.14.3' | ||||
|             java-version: 11 | ||||
|           - gradle: '8.0.2' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.6.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.1.1' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.9.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.0.1' | ||||
|             java-version: 11 | ||||
|           - gradle: '5.6.4' | ||||
|             java-version: 11 | ||||
|             build-root-suffix: -gradle-5 | ||||
|           - gradle: '5.2.1' | ||||
|             java-version: 11 | ||||
|             build-root-suffix: -gradle-5 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       with: | ||||
|         java-version: ${{ matrix.java-version }} | ||||
|     - name: Generate and submit dependencies | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         gradle-version: ${{ matrix.gradle }} | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }} | ||||
| 
 | ||||
|   dependency-submission-with-setup-gradle: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: ubuntu-latest # Test is not compatible with Windows | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|     - name: Generate and submit dependencies | ||||
|       id: dependency-submission | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|     - name: Check and delete generated dependency graph | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -e "${{ steps.dependency-submission.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find generated dependency graph files" | ||||
|             exit 1 | ||||
|         fi | ||||
|         rm ${{ steps.dependency-submission.outputs.dependency-graph-file }}* | ||||
|     - name: Run Gradle build | ||||
|       run: ./gradlew build | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|     - name: Check no dependency graph is generated | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -z "$(ls -A dependency-graph-reports)" ]; then | ||||
|             echo "Expected no dependency graph files to be generated" | ||||
|             ls -l dependency-graph-reports | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   dependency-submission-with-includes-and-excludes: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: ubuntu-latest # Test is not compatible with Windows | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Generate and submit dependencies | ||||
|       id: dependency-submission | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         dependency-graph-exclude-projects: excluded-project | ||||
|         dependency-graph-include-projects: included-project | ||||
|         dependency-graph-exclude-configurations: excluded-configuration | ||||
|         dependency-graph-include-configurations: included-configuration | ||||
|     - name: Check generated dependency graph and env vars | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ ! -e "${{ steps.dependency-submission.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find generated dependency graph file" | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|         if [ "$DEPENDENCY_GRAPH_EXCLUDE_PROJECTS" != "excluded-project" ] ||  | ||||
|            [ "$DEPENDENCY_GRAPH_INCLUDE_PROJECTS" != "included-project" ] ||  | ||||
|            [ "$DEPENDENCY_GRAPH_EXCLUDE_CONFIGURATIONS" != "excluded-configuration" ] ||  | ||||
|            [ "$DEPENDENCY_GRAPH_INCLUDE_CONFIGURATIONS" != "included-configuration" ]; then | ||||
|             echo "Did not set expected environment variables" | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
| 
 | ||||
|   dependency-submission-custom-report-dir-submit: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Generate dependency graph | ||||
|       id: dependency-graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: generate-and-submit | ||||
|         dependency-graph-report-dir: '${{ github.workspace }}/custom/report-dir' | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|     - name: Check generated dependency graphs | ||||
|       shell: bash | ||||
|       run: | | ||||
|         echo "report file: ${{ steps.dependency-graph.outputs.dependency-graph-file }}" | ||||
|          | ||||
|         if [ ! -e "${{ steps.dependency-graph.outputs.dependency-graph-file }}" ]; then | ||||
|             echo "Did not find dependency graph file" | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|         if [ -z "$(ls -A "${{ github.workspace }}/custom/report-dir")" ]; then | ||||
|           echo "No dependency graph files found in custom directory" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   dependency-submission-custom-report-dir-upload: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Generate and upload dependency graph | ||||
|       id: dependency-graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: generate-and-upload | ||||
|         dependency-graph-report-dir: '${{ github.workspace }}/custom/report-dir' | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
| 
 | ||||
|   custom-report-dir-download-and-submit: | ||||
|     permissions: | ||||
|       contents: write | ||||
|     needs: [dependency-submission-custom-report-dir-upload] | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Download and submit dependency graph | ||||
|       uses: ./dependency-submission | ||||
|       with: | ||||
|         dependency-graph: download-and-submit | ||||
|         dependency-graph-report-dir: '${{ github.workspace }}/custom/report-dir' | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|       env:  | ||||
|         DEPENDENCY_GRAPH_DOWNLOAD_ARTIFACT_NAME: custom-report-dir-upload # For testing, to avoid downloading artifacts from other worklfows | ||||
| 
 | ||||
|     - name: Check downloaded dependency graph | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ -z "$(ls -A "${{ github.workspace }}/custom/report-dir")" ]; then | ||||
|           echo "No dependency graph files found in custom directory" | ||||
|           exit 1 | ||||
|         fi | ||||
| @ -5,24 +5,20 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: detect-java-toolchain-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   # Test that pre-installed runner JDKs are detected | ||||
|   detect-toolchains-pre-installed-jdks: | ||||
|   pre-installed-toolchains: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @ -30,29 +26,28 @@ jobs: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|     - name: List detected toolchains | ||||
|       shell: bash | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: |  | ||||
|         ./gradlew --info javaToolchains > output.txt | ||||
|         gradle --info javaToolchains > output.txt | ||||
|         cat output.txt | ||||
|     - name: Verify detected toolchains | ||||
|       shell: bash | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: |  | ||||
|         grep -q 'Eclipse Temurin JDK 8' output.txt || (echo "::error::Did not detect preinstalled JDK 8" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 1.8' output.txt || (echo "::error::Did not detect preinstalled JDK 1.8" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 11' output.txt || (echo "::error::Did not detect preinstalled JDK 11" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 17' output.txt || (echo "::error::Did not detect preinstalled JDK 17" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 21' output.txt || (echo "::error::Did not detect preinstalled JDK 21" && exit 1) | ||||
| 
 | ||||
|   # Test that JDKs provisioned by setup-java are detected | ||||
|   detect-toolchains-setup-java-jdks: | ||||
|   setup-java-installed-toolchain: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
| @ -60,27 +55,26 @@ jobs: | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Setup Java 16 | ||||
|       uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: 16 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java 20 | ||||
|       uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: 20 | ||||
|         java-version: '20' | ||||
|     - name: Setup Java 16 | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: '16' | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|     - name: List detected toolchains | ||||
|       shell: bash | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: |  | ||||
|         ./gradlew --info javaToolchains > output.txt | ||||
|         gradle --info javaToolchains > output.txt | ||||
|         cat output.txt | ||||
|     - name: Verify setup JDKs are detected | ||||
|       shell: bash | ||||
| @ -92,7 +86,7 @@ jobs: | ||||
|       shell: bash | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: |  | ||||
|         grep -q 'Eclipse Temurin JDK 8' output.txt || (echo "::error::Did not detect preinstalled JDK 8" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 1.8' output.txt || (echo "::error::Did not detect preinstalled JDK 1.8" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 11' output.txt || (echo "::error::Did not detect preinstalled JDK 11" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 17' output.txt || (echo "::error::Did not detect preinstalled JDK 17" && exit 1) | ||||
|         grep -q 'Eclipse Temurin JDK 21' output.txt || (echo "::error::Did not detect preinstalled JDK 21" && exit 1) | ||||
							
								
								
									
										56
									
								
								.github/workflows/integ-test-execution-with-caching.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/integ-test-execution-with-caching.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | ||||
| name: Test execution with caching | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: execution-with-caching-${{ inputs.cache-key-prefix }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true | ||||
| 
 | ||||
| jobs: | ||||
|   seed-build: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Execute Gradle build | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         arguments: test | ||||
| 
 | ||||
|   # Test that the gradle-user-home is restored | ||||
|   verify-build: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Execute Gradle build | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: true | ||||
|         build-root-directory: .github/workflow-samples/groovy-dsl | ||||
|         arguments: test --offline -DverifyCachedBuild=true | ||||
| 
 | ||||
							
								
								
									
										93
									
								
								.github/workflows/integ-test-execution.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								.github/workflows/integ-test-execution.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | ||||
| name: Test execution | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: execution-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs:    | ||||
|   # Tests for executing with different Gradle versions.  | ||||
|   # Each build verifies that it is executed with the expected Gradle version. | ||||
|   gradle-execution: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         include: | ||||
|           - os: windows-latest | ||||
|             script-suffix: '.bat' | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Test use defined Gradle version | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         gradle-version: 6.9 | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper | ||||
|         arguments: help -DgradleVersionCheck=6.9 | ||||
|     - name: Test use Gradle version alias | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: release-candidate | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper | ||||
|         arguments: help | ||||
|     - name: Test with non-executable wrapper | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: wrapper | ||||
|         build-root-directory: .github/workflow-samples/non-executable-wrapper | ||||
|         arguments: help | ||||
| 
 | ||||
|   gradle-versions: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         gradle: [7.5.1, 6.9.2, 5.6.4, 4.10.3, 3.5.1] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         include: | ||||
|           - gradle: 5.6.4 | ||||
|             build-root-suffix: -gradle-5 | ||||
|           - gradle: 4.10.3 | ||||
|             build-root-suffix: -gradle-4 | ||||
|           - gradle: 3.5.1 | ||||
|             build-root-suffix: -gradle-4 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: temurin | ||||
|         java-version: 8 | ||||
|     - name: Run Gradle build | ||||
|       uses: ./setup-gradle | ||||
|       id: gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         gradle-version: ${{matrix.gradle}} | ||||
|         build-root-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }} | ||||
|         arguments: help -DgradleVersionCheck=${{matrix.gradle}} | ||||
|     - name: Check Build Scan url | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected')     | ||||
|    | ||||
|     | ||||
							
								
								
									
										239
									
								
								.github/workflows/integ-test-inject-develocity.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										239
									
								
								.github/workflows/integ-test-inject-develocity.yml
									
									
									
									
										vendored
									
									
								
							| @ -5,11 +5,10 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
|     secrets: | ||||
| @ -17,49 +16,32 @@ on: | ||||
|         required: true | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: inject-develocity-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: provision-gradle-versions-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   inject-develocity: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         gradle: ['current', '8.14.3', '7.6.2', '6.9.4', '5.6.4'] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         plugin-version: ['3.16.2', '4.2.2'] | ||||
|         include: | ||||
|           - java-version: 17 | ||||
|           - gradle: '8.14.3' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.6.2' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.9.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '5.6.4' | ||||
|             java-version: 11 | ||||
|           - plugin-version: '3.16.2' | ||||
|             accessKeyEnv: GRADLE_ENTERPRISE_ACCESS_KEY | ||||
|           - plugin-version: '4.2.2' | ||||
|             accessKeyEnv: DEVELOCITY_ACCESS_KEY | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     env: | ||||
|       DEVELOCITY_INJECTION_ENABLED: true | ||||
|       DEVELOCITY_INJECTION_URL: https://ge.solutions-team.gradle.com | ||||
|       DEVELOCITY_INJECTION_DEVELOCITY_PLUGIN_VERSION: ${{ matrix.plugin-version }} | ||||
|       DEVELOCITY_INJECTION_CCUD_PLUGIN_VERSION: '2.2.1' | ||||
|       ${{matrix.accessKeyEnv}}: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||||
| 
 | ||||
|       DEVELOCITY_URL: https://ge.solutions-team.gradle.com | ||||
|       DEVELOCITY_PLUGIN_VERSION: 3.16.2 | ||||
|       DEVELOCITY_CCUD_PLUGIN_VERSION: 1.12.1 | ||||
|       GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} # This env var has not (yet) been renamed/aliased in GE plugin 3.16.2 | ||||
|     strategy: | ||||
|       matrix: | ||||
|         gradle: [current, 7.6.2, 6.9.4, 5.6.4] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         java-version: ${{ matrix.java-version }} | ||||
|         distribution: temurin | ||||
|         java-version: 8 | ||||
|     - name: Setup Gradle | ||||
|       id: setup-gradle | ||||
|       uses: ./setup-gradle | ||||
| @ -72,160 +54,43 @@ jobs: | ||||
|       run: gradle help | ||||
|     - name: Check Build Scan url | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected') | ||||
|     - name: Check short lived token (DEVELOCITY_ACCESS_KEY) | ||||
|       run: "[ ${#DEVELOCITY_ACCESS_KEY} -gt 500 ] || (echo 'DEVELOCITY_ACCESS_KEY does not look like a short lived token'; exit 1)" | ||||
|     - name: Check short lived token (GRADLE_ENTERPRISE_ACCESS_KEY) | ||||
|       run: "[ ${#GRADLE_ENTERPRISE_ACCESS_KEY} -gt 500 ] || (echo 'GRADLE_ENTERPRISE_ACCESS_KEY does not look like a short lived token'; exit 1)" | ||||
|           core.setFailed('No Build Scan detected')    | ||||
| 
 | ||||
|   inject-develocity-with-access-key: | ||||
|     env: | ||||
|       DEVELOCITY_INJECTION_ENABLED: true | ||||
|       DEVELOCITY_INJECTION_URL: 'https://ge.solutions-team.gradle.com' | ||||
|       DEVELOCITY_INJECTION_DEVELOCITY_PLUGIN_VERSION: ${{ matrix.plugin-version }} | ||||
|       DEVELOCITY_INJECTION_CCUD_PLUGIN_VERSION: '2.2.1' | ||||
|   build-scan-publish: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         gradle: ['current', '8.14.3', '7.6.2', '6.9.4', '5.6.4'] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         plugin-version: ['3.16.2', '4.2.2'] | ||||
|         include: | ||||
|           - java-version: 17 | ||||
|           - gradle: '8.14.3' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.6.2' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.9.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '5.6.4' | ||||
|             java-version: 11 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|       - name: Checkout sources | ||||
|         uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       - name: Initialize integ-test | ||||
|         uses: ./.github/actions/init-integ-test | ||||
|         with: | ||||
|           java-version: ${{ matrix.java-version }} | ||||
|       - name: Setup Gradle | ||||
|         id: setup-gradle | ||||
|         uses: ./setup-gradle | ||||
|         with: | ||||
|           cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|           gradle-version: ${{ matrix.gradle }} | ||||
|           develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||||
|           develocity-token-expiry: 1 | ||||
|       - name: Run Gradle build | ||||
|         id: gradle | ||||
|         working-directory: .github/workflow-samples/no-ge | ||||
|         run: gradle help | ||||
|       - name: Check short lived token (DEVELOCITY_ACCESS_KEY) | ||||
|         run: "[ ${#DEVELOCITY_ACCESS_KEY} -gt 500 ] || (echo 'DEVELOCITY_ACCESS_KEY does not look like a short lived token'; exit 1)" | ||||
|       - name: Check short lived token (GRADLE_ENTERPRISE_ACCESS_KEY) | ||||
|         run: "[ ${#GRADLE_ENTERPRISE_ACCESS_KEY} -gt 500 ] || (echo 'GRADLE_ENTERPRISE_ACCESS_KEY does not look like a short lived token'; exit 1)" | ||||
|       - name: Check Build Scan url | ||||
|         if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|         uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|         with: | ||||
|           script: | | ||||
|             core.setFailed('No Build Scan detected') | ||||
| 
 | ||||
|   inject-develocity-short-lived-token-failed: | ||||
|     env: | ||||
|       DEVELOCITY_INJECTION_ENABLED: true | ||||
|       DEVELOCITY_INJECTION_URL: 'https://localhost:3333/' | ||||
|       DEVELOCITY_INJECTION_DEVELOCITY_PLUGIN_VERSION: ${{ matrix.plugin-version }} | ||||
|       DEVELOCITY_INJECTION_CCUD_PLUGIN_VERSION: '2.1' | ||||
|       # Access key also set as an env var, we want to check it does not leak | ||||
|       GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||||
|       DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         gradle: ['current', '8.14.3', '7.6.2', '6.9.4', '5.6.4'] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         plugin-version: [ '3.16.2', '4.2.2' ] | ||||
|         include: | ||||
|           - java-version: 17 | ||||
|           - gradle: '8.14.3' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.6.2' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.9.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '5.6.4' | ||||
|             java-version: 11 | ||||
|         gradle: [current, 7.6.2, 6.9.4, 5.6.4] | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout sources | ||||
|         uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       - name: Initialize integ-test | ||||
|         uses: ./.github/actions/init-integ-test | ||||
|         with: | ||||
|           java-version: ${{ matrix.java-version }} | ||||
|       - name: Setup Gradle | ||||
|         id: setup-gradle | ||||
|         uses: ./setup-gradle | ||||
|         with: | ||||
|           gradle-version: ${{ matrix.gradle }} | ||||
|           cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|           develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||||
|       - name: Run Gradle build | ||||
|         id: gradle | ||||
|         working-directory: .github/workflow-samples/no-ge | ||||
|         run: gradle help | ||||
|       - name: Check access key is not blank (DEVELOCITY_ACCESS_KEY) | ||||
|         run: "[ \"${DEVELOCITY_ACCESS_KEY}\" != \"\" ] || (echo 'using DEVELOCITY_ACCESS_KEY!'; exit 1)" | ||||
|       - name: Check access key is not blank (GRADLE_ENTERPRISE_ACCESS_KEY) | ||||
|         run: "[ \"${GRADLE_ENTERPRISE_ACCESS_KEY}\" != \"\" ] || (echo 'GRADLE_ENTERPRISE_ACCESS_KEY is still supported in v3!'; exit 1)" | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: temurin | ||||
|         java-version: 8 | ||||
|     - name: Setup Gradle | ||||
|       id: setup-gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         gradle-version: ${{ matrix.gradle }} | ||||
|         build-scan-publish: true | ||||
|         build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" | ||||
|         build-scan-terms-of-service-agree: "yes" | ||||
|     - name: Run Gradle build | ||||
|       id: gradle | ||||
|       working-directory: .github/workflow-samples/no-ge | ||||
|       run: gradle help | ||||
|     - name: Check Build Scan url | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected')    | ||||
| 
 | ||||
|   inject-develocity-with-access-key-from-input-actions: | ||||
|     env: | ||||
|       DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         gradle: ['current', '8.14.3', '7.6.2', '6.9.4', '5.6.4'] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         plugin-version: [ '3.16.2', '4.2.2' ] | ||||
|         include: | ||||
|           - java-version: 17 | ||||
|           - gradle: '8.14.3' | ||||
|             java-version: 11 | ||||
|           - gradle: '7.6.2' | ||||
|             java-version: 11 | ||||
|           - gradle: '6.9.4' | ||||
|             java-version: 11 | ||||
|           - gradle: '5.6.4' | ||||
|             java-version: 11 | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|       - name: Checkout sources | ||||
|         uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|       - name: Initialize integ-test | ||||
|         uses: ./.github/actions/init-integ-test | ||||
|         with: | ||||
|           java-version: ${{ matrix.java-version }} | ||||
|       - name: Setup Gradle | ||||
|         id: setup-gradle | ||||
|         uses: ./setup-gradle | ||||
|         with: | ||||
|           cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|           gradle-version: ${{ matrix.gradle }} | ||||
|           develocity-injection-enabled: true | ||||
|           develocity-url: 'https://ge.solutions-team.gradle.com' | ||||
|           develocity-plugin-version: ${{ matrix.plugin-version }} | ||||
|       - name: Run Gradle build | ||||
|         id: gradle | ||||
|         working-directory: .github/workflow-samples/no-ge | ||||
|         run: gradle help | ||||
|       - name: Check Build Scan url | ||||
|         if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|         uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|         with: | ||||
|           script: | | ||||
|             core.setFailed('No Build Scan detected') | ||||
|  | ||||
| @ -5,61 +5,49 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: provision-gradle-versions-${{ inputs.cache-key-prefix }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs:    | ||||
|   # Tests for executing with different Gradle versions.  | ||||
|   # Each build verifies that it is executed with the expected Gradle version. | ||||
|   provision-gradle: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         include: | ||||
|           - os: windows-latest | ||||
|             script-suffix: '.bat' | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       with: | ||||
|         java-version: '11' | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle with v6.9 | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         gradle-version: '6.9' | ||||
|         gradle-version: 6.9 | ||||
|     - name: Test uses Gradle v6.9 | ||||
|       working-directory: .github/workflow-samples/no-wrapper | ||||
|       run: gradle help "-DgradleVersionCheck=6.9" | ||||
|     - name: Setup Gradle with v7.1.1 | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: '7.1.1' | ||||
|         gradle-version: 7.1.1 | ||||
|     - name: Test uses Gradle v7.1.1 | ||||
|       working-directory: .github/workflow-samples/no-wrapper | ||||
|       run: gradle help "-DgradleVersionCheck=7.1.1" | ||||
|     # Configure JDK 17 for Gradle 9 and later | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 | ||||
|       with: | ||||
|         distribution: temurin | ||||
|         java-version: 17 | ||||
|     - name: Setup Gradle with release-candidate | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -72,48 +60,36 @@ jobs: | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         gradle-version: current | ||||
|     - name: Test use current | ||||
|       working-directory: .github/workflow-samples/no-wrapper | ||||
|       run: gradle help | ||||
|     - name: Check current version output parameter | ||||
|       if: ${{ !startsWith(steps.gradle-current.outputs.gradle-version , '9.') }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       if: ${{ !startsWith(steps.gradle-current.outputs.gradle-version , '8.') }} | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.gradle-current.outputs.gradle-version }}"')     | ||||
| 
 | ||||
|   provision-gradle-version: | ||||
|    | ||||
|   gradle-versions: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         gradle: ['9.0.0', '8.14.2', '8.12', '8.12-rc-1', '8.9', '8.1', '7.6.4', '6.9.4', '5.6.4', '4.10.3', '3.5.1'] | ||||
|         gradle: [7.3, 6.9, 5.6.4, 4.10.3, 3.5.1] | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|         include: | ||||
|           - java-version: 11 | ||||
|           - gradle: '9.0.0' | ||||
|             java-version: 17 | ||||
|           - gradle: '5.6.4' | ||||
|           - gradle: 5.6.4 | ||||
|             build-root-suffix: -gradle-5 | ||||
|           - gradle: '4.10.3' | ||||
|           - gradle: 4.10.3 | ||||
|             build-root-suffix: -gradle-4 | ||||
|           - gradle: '3.5.1' | ||||
|           - gradle: 3.5.1 | ||||
|             build-root-suffix: -gradle-4 | ||||
|             java-version: 8 | ||||
|         exclude: | ||||
|           - os: macos-latest # Java 8 is not supported on macos-latest, so we cannot test Gradle 3.5.1 | ||||
|             gradle: '3.5.1' | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@dded0888837ed1f317902acf8a20df0ad188d165 # v5.0.0 | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: temurin | ||||
|         java-version: ${{ matrix.java-version }} | ||||
|         java-version: 8 | ||||
|     - name: Setup Gradle | ||||
|       id: setup-gradle | ||||
|       uses: ./setup-gradle | ||||
| @ -122,7 +98,7 @@ jobs: | ||||
|         gradle-version: ${{ matrix.gradle }} | ||||
|     - name: Check output parameter | ||||
|       if: ${{ steps.setup-gradle.outputs.gradle-version != matrix.gradle }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.setup-gradle.outputs.gradle-version }}"')     | ||||
| @ -132,7 +108,7 @@ jobs: | ||||
|       run: gradle help "-DgradleVersionCheck=${{matrix.gradle}}" | ||||
|     - name: Check Build Scan url | ||||
|       if: ${{ !steps.gradle.outputs.build-scan-url }} | ||||
|       uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           core.setFailed('No Build Scan detected')     | ||||
|  | ||||
| @ -5,11 +5,10 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
|     secrets: | ||||
| @ -17,126 +16,93 @@ on: | ||||
|         required: true | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-configuration-cache-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   restore-cc-seed-build-groovy: | ||||
|   seed-build-groovy: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java to ensure consistency | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'liberica' | ||||
|         java-version: '21' | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         cache-write-only: true # Ensure we start with a clean cache entry | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|         gradle-version: 8.6 | ||||
|     - name: Groovy build with configuration-cache enabled | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: gradle test --configuration-cache | ||||
| 
 | ||||
|   restore-cc-verify-build-groovy: | ||||
|   verify-build-groovy: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_1 | ||||
|     needs: restore-cc-seed-build-groovy | ||||
|     needs: seed-build-groovy | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java to ensure consistency | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         cache-read-only: false | ||||
|         cache-cleanup: on-success | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|     - name: Groovy build with configuration-cache enabled | ||||
|       id: execute | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: gradle test --configuration-cache | ||||
|     - name: Verify configuration-cache hit | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ -e ".github/workflow-samples/groovy-dsl/task-configured.txt" ]; then | ||||
|             echo "Configuration cache was not used - task was configured unexpectedly" | ||||
|             exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   # Ensure that cache-cleanup doesn't remove all necessary files | ||||
|   restore-cc-verify-no-cache-cleanup-groovy: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_2 | ||||
|     needs: restore-cc-verify-build-groovy | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|         distribution: 'liberica' | ||||
|         java-version: '21' | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: true | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|         gradle-version: 8.6 | ||||
|     - name: Groovy build with configuration-cache enabled | ||||
|       id: execute | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: gradle test --configuration-cache | ||||
|     - name: Verify configuration-cache hit | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ -e ".github/workflow-samples/groovy-dsl/task-configured.txt" ]; then | ||||
|             echo "Configuration cache was not used - task was configured unexpectedly" | ||||
|             exit 1 | ||||
|         fi | ||||
|     - name: Check that configuration-cache was used | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           const fs = require('fs') | ||||
|           if (fs.existsSync('.github/workflow-samples/groovy-dsl/task-configured.txt')) { | ||||
|             core.setFailed('Configuration cache was not used - task was configured unexpectedly') | ||||
|           } | ||||
| 
 | ||||
|   # Check that the build can run when no extracted cache entries are restored | ||||
|   restore-cc-gradle-user-home-not-fully-restored: | ||||
|   gradle-user-home-not-fully-restored: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_x | ||||
|     needs: restore-cc-seed-build-groovy | ||||
|     needs: seed-build-groovy | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java to ensure consistency | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'liberica' | ||||
|         java-version: '21' | ||||
|     - name: Setup Gradle with no extracted cache entries restored | ||||
|       uses: ./setup-gradle | ||||
|       env:  | ||||
| @ -144,92 +110,101 @@ jobs: | ||||
|       with: | ||||
|         cache-read-only: true | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|         gradle-version: 8.6 | ||||
|     - name: Check execute Gradle build with configuration cache enabled (but not restored) | ||||
|       working-directory: .github/workflow-samples/groovy-dsl | ||||
|       run: gradle test --configuration-cache | ||||
| 
 | ||||
|   restore-cc-seed-build-kotlin: | ||||
|   seed-build-kotlin: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java to ensure consistency | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'liberica' | ||||
|         java-version: '21' | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         cache-write-only: true # Ensure we start with a clean cache entry | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|         gradle-version: 8.6 | ||||
|     - name: Execute 'help' with configuration-cache enabled | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
|       run: gradle help --configuration-cache | ||||
| 
 | ||||
|   restore-cc-modify-build-kotlin: | ||||
|   modify-build-kotlin: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_1 | ||||
|     needs: restore-cc-seed-build-kotlin | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified | ||||
|     needs: seed-build-kotlin | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java to ensure consistency | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'liberica' | ||||
|         java-version: '21' | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: false # For testing, allow writing cache entries on non-default branches | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|         gradle-version: 8.6 | ||||
|     - name: Execute 'test' with configuration-cache enabled | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
|       run: gradle test --configuration-cache | ||||
| 
 | ||||
|   # Test restore configuration-cache from the third build invocation | ||||
|   restore-cc-verify-build-kotlin: | ||||
|   verify-build-kotlin: | ||||
|     env: | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB_EXECUTION: ${{github.sha}}_2 | ||||
|     needs: restore-cc-modify-build-kotlin | ||||
|       GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified | ||||
|     needs: modify-build-kotlin | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java to ensure consistency | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'liberica' | ||||
|         java-version: '21' | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|         cache-read-only: true | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
|         gradle-version: 8.6 | ||||
|     - name: Execute 'test' again with configuration-cache enabled | ||||
|       id: execute | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
|       run: gradle test --configuration-cache | ||||
|     - name: Verify configuration-cache hit | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ -e ".github/workflow-samples/kotlin-dsl/task-configured.txt" ]; then | ||||
|             echo "Configuration cache was not used - task was configured unexpectedly" | ||||
|             exit 1 | ||||
|         fi | ||||
|     - name: Check that configuration-cache was used | ||||
|       uses: actions/github-script@v7 | ||||
|       with: | ||||
|         script: | | ||||
|           const fs = require('fs') | ||||
|           if (fs.existsSync('.github/workflow-samples/kotlin-dsl/task-configured.txt')) { | ||||
|             core.setFailed('Configuration cache was not used - task was configured unexpectedly') | ||||
|           } | ||||
| 
 | ||||
|  | ||||
| @ -5,28 +5,28 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       skip-dist: | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-containerized-gradle-home-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-custom-gradle-home-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| jobs: | ||||
|   restore-containerized-seed-build: | ||||
|   seed-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     container: fedora:latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         java-version: 11 | ||||
|         distribution: temurin | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -36,16 +36,20 @@ jobs: | ||||
|       run: ./gradlew test | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache dependencies, by running build with --offline | ||||
|   restore-containerized-dependencies-cache: | ||||
|     needs: restore-containerized-seed-build | ||||
|   dependencies-cache: | ||||
|     needs: seed-build | ||||
|     runs-on: ubuntu-latest | ||||
|     container: fedora:latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         java-version: 11 | ||||
|         distribution: temurin | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
| @ -5,31 +5,26 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       skip-dist: | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-custom-gradle-home-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   restore-custom-gradle-home-seed-build: | ||||
|   seed-build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Set Gradle User Home | ||||
|       run: | | ||||
|         mkdir -p $GITHUB_WORKSPACE/gradle-user-home | ||||
|         echo "GRADLE_USER_HOME=$GITHUB_WORKSPACE/gradle-user-home" >> $GITHUB_ENV | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -39,19 +34,18 @@ jobs: | ||||
|       run: ./gradlew test --info | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache dependencies, by running build with --offline | ||||
|   restore-custom-gradle-home-dependencies-cache: | ||||
|     needs: restore-custom-gradle-home-seed-build | ||||
|   dependencies-cache: | ||||
|     needs: seed-build | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Set Gradle User Home | ||||
|       run: | | ||||
|         mkdir -p $GITHUB_WORKSPACE/gradle-user-home | ||||
|         echo "GRADLE_USER_HOME=$GITHUB_WORKSPACE/gradle-user-home" >> $GITHUB_ENV | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -61,19 +55,18 @@ jobs: | ||||
|       run: ./gradlew test --offline --info | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache and restore local build-cache | ||||
|   restore-custom-gradle-home-build-cache: | ||||
|     needs: restore-custom-gradle-home-seed-build | ||||
|   build-cache: | ||||
|     needs: seed-build | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Set Gradle User Home | ||||
|       run: | | ||||
|         mkdir -p $GITHUB_WORKSPACE/gradle-user-home | ||||
|         echo "GRADLE_USER_HOME=$GITHUB_WORKSPACE/gradle-user-home" >> $GITHUB_ENV | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
| @ -5,36 +5,29 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-gradle-home-${{ inputs.cache-key-prefix }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-gradle-home | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   restore-gradle-home-seed-build: | ||||
|   seed-build: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -44,20 +37,17 @@ jobs: | ||||
|       run: ./gradlew test | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache dependencies, by running build with --offline | ||||
|   restore-gradle-home-dependencies-cache: | ||||
|     needs: restore-gradle-home-seed-build | ||||
|   dependencies-cache: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -67,20 +57,17 @@ jobs: | ||||
|       run: ./gradlew test --offline | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache and restore local build-cache | ||||
|   restore-gradle-home-build-cache: | ||||
|     needs: restore-gradle-home-seed-build | ||||
|   build-cache: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -90,20 +77,17 @@ jobs: | ||||
|       run: ./gradlew test -DverifyCachedBuild=true | ||||
| 
 | ||||
|   # Check that the build can run when Gradle User Home is not fully restored | ||||
|   restore-gradle-home-no-extracted-cache-entries-restored: | ||||
|     needs: restore-gradle-home-seed-build | ||||
|   no-extracted-cache-entries-restored: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle with no extracted cache entries restored | ||||
|       uses: ./setup-gradle | ||||
|       env:  | ||||
| @ -115,20 +99,17 @@ jobs: | ||||
|       run: ./gradlew test | ||||
| 
 | ||||
|   # Test that a pre-existing gradle-user-home can be overwritten by the restored cache | ||||
|   restore-gradle-home-pre-existing-gradle-home: | ||||
|     needs: restore-gradle-home-seed-build | ||||
|   pre-existing-gradle-home: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Pre-create Gradle User Home | ||||
|       shell: bash | ||||
|       run: | | ||||
|  | ||||
| @ -5,37 +5,28 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-java-toolchain-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   restore-java-toolchain-seed-build: | ||||
|   seed-build: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       with: | ||||
|         java-version: '17' | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -45,22 +36,17 @@ jobs: | ||||
|       run: ./gradlew test --info | ||||
| 
 | ||||
|   # Test that the gradle-user-home cache will cache the toolchain, by running build with --offline | ||||
|   restore-java-toolchain-verify-build: | ||||
|     needs: restore-java-toolchain-seed-build | ||||
|   toolchain-cache: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
|       with: | ||||
|         java-version: '17' | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
| @ -5,35 +5,28 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: sample-gradle-plugin-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   sample-gradle-plugin-seed-build: | ||||
|   seed-build: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -42,20 +35,17 @@ jobs: | ||||
|       working-directory: .github/workflow-samples/gradle-plugin | ||||
|       run: ./gradlew build | ||||
| 
 | ||||
|   sample-gradle-plugin-verify-build: | ||||
|     needs: sample-gradle-plugin-seed-build | ||||
|   verify-build: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
| @ -5,35 +5,28 @@ on: | ||||
|     inputs: | ||||
|       cache-key-prefix: | ||||
|         type: string | ||||
|         default: '0' | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         default: '["ubuntu-latest", "windows-latest", "macos-latest"]' | ||||
|       download-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
|   DOWNLOAD_DIST: ${{ inputs.download-dist }} | ||||
|   GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: sample-kotlin-dsl-${{ inputs.cache-key-prefix }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   sample-kotlin-dsl-seed-build: | ||||
|   seed-build: | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
| @ -42,20 +35,17 @@ jobs: | ||||
|       working-directory: .github/workflow-samples/kotlin-dsl | ||||
|       run: ./gradlew build | ||||
| 
 | ||||
|   sample-kotlin-dsl-verify-build: | ||||
|     needs: sample-kotlin-dsl-seed-build | ||||
|   verify-build: | ||||
|     needs: seed-build | ||||
|     strategy: | ||||
|       max-parallel: 1 | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Download distribution if required | ||||
|       uses: ./.github/actions/download-dist | ||||
|     - name: Setup Gradle | ||||
|       uses: ./setup-gradle | ||||
|       with: | ||||
|  | ||||
							
								
								
									
										168
									
								
								.github/workflows/integ-test-wrapper-validation.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										168
									
								
								.github/workflows/integ-test-wrapper-validation.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,168 +0,0 @@ | ||||
| name: Test wrapper validation | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| env: | ||||
|   SKIP_DIST: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   wrapper-validation-setup-gradle: | ||||
|     strategy: | ||||
|       fail-fast: false | ||||
|       matrix: | ||||
|         os: ${{fromJSON(inputs.runner-os)}} | ||||
|     runs-on: ${{ matrix.os }} | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Run wrapper-validation-action | ||||
|       id: setup-gradle | ||||
|       uses: ./setup-gradle | ||||
|       env: | ||||
|         ALLOWED_GRADLE_WRAPPER_CHECKSUMS: '' | ||||
|       continue-on-error: true | ||||
| 
 | ||||
|     - name: Check failure | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ "${{ steps.setup-gradle.outcome}}" != "failure" ] ; then | ||||
|           echo "Expected validation to fail, but it didn't" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   wrapper-validation-success: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Run wrapper-validation-action | ||||
|       id: action-test | ||||
|       uses: ./wrapper-validation | ||||
|       with: | ||||
|         # to allow the invalid wrapper jar present in test data | ||||
|         allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 | ||||
|         min-wrapper-count: 10 | ||||
| 
 | ||||
|     - name: Check outcome | ||||
|       env: | ||||
|         # Evaluate workflow expressions here as env variable values instead of inside shell script | ||||
|         # below to not accidentally inject code into shell script or break its syntax | ||||
|         FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }} | ||||
|         FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == '' }} | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then | ||||
|           echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   wrapper-validation-error: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Run wrapper-validation-action | ||||
|       id: action-test | ||||
|       uses: ./wrapper-validation | ||||
|       # Expected to fail; validated below | ||||
|       continue-on-error: true | ||||
| 
 | ||||
|     - name: Check outcome | ||||
|       env: | ||||
|         # Evaluate workflow expressions here as env variable values instead of inside shell script | ||||
|         # below to not accidentally inject code into shell script or break its syntax | ||||
|         VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }} | ||||
|         FAILED_WRAPPERS: ${{ steps.action-test.outputs.failed-wrapper }} | ||||
|         FAILED_WRAPPERS_MATCHES: ${{ steps.action-test.outputs.failed-wrapper == 'sources/test/jest/wrapper-validation/data/invalid/gradle-wrapper.jar|sources/test/jest/wrapper-validation/data/invalid/gradlе-wrapper.jar' }} | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ "$VALIDATION_FAILED" != "true" ] ; then | ||||
|           echo "Expected validation to fail, but it didn't" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|         if [ "$FAILED_WRAPPERS_MATCHES" != "true" ] ; then | ||||
|           echo "'outputs.failed-wrapper' has unexpected content: $FAILED_WRAPPERS" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   wrapper-validation-minimum-wrapper-count: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Run wrapper-validation-action | ||||
|       id: action-test | ||||
|       uses: ./wrapper-validation | ||||
|       with: | ||||
|         # to allow the invalid wrapper jar present in test data | ||||
|         allow-checksums: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 | ||||
|         min-wrapper-count: 11 | ||||
|       # Expected to fail; validated below | ||||
|       continue-on-error: true | ||||
| 
 | ||||
|     - name: Check outcome | ||||
|       env: | ||||
|         # Evaluate workflow expressions here as env variable values instead of inside shell script | ||||
|         # below to not accidentally inject code into shell script or break its syntax | ||||
|         VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }} | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ "$VALIDATION_FAILED" != "true" ] ; then | ||||
|           echo "Expected validation to fail, but it didn't" | ||||
|           exit 1 | ||||
|         fi | ||||
| 
 | ||||
|   wrapper-validation-zero-wrappers: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.2.2 # Checkout the repository with no wrappers | ||||
|       with: | ||||
|         sparse-checkout: | | ||||
|           .github/actions | ||||
|           dist | ||||
|           wrapper-validation | ||||
|     - name: Initialize integ-test | ||||
|       uses: ./.github/actions/init-integ-test | ||||
| 
 | ||||
|     - name: Run wrapper-validation-action | ||||
|       id: action-test | ||||
|       uses: ./wrapper-validation | ||||
|       # Expected to fail; validated below | ||||
|       continue-on-error: true | ||||
| 
 | ||||
|     - name: Check outcome | ||||
|       env: | ||||
|         # Evaluate workflow expressions here as env variable values instead of inside shell script | ||||
|         # below to not accidentally inject code into shell script or break its syntax | ||||
|         VALIDATION_FAILED: ${{ steps.action-test.outcome == 'failure' }} | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ "$VALIDATION_FAILED" != "true" ] ; then | ||||
|           echo "Expected validation to fail, but it didn't" | ||||
|           exit 1 | ||||
|         fi | ||||
							
								
								
									
										55
									
								
								.github/workflows/suite-integ-test-caching.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										55
									
								
								.github/workflows/suite-integ-test-caching.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,55 +0,0 @@ | ||||
| name: suite-integ-test-caching | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   cache-cleanup: | ||||
|     uses: ./.github/workflows/integ-test-cache-cleanup.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   caching-config: | ||||
|     uses: ./.github/workflows/integ-test-caching-config.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   restore-configuration-cache: | ||||
|     if: ${{ ! github.event.pull_request.head.repo.fork }} | ||||
|     uses: ./.github/workflows/integ-test-restore-configuration-cache.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
|     secrets: | ||||
|       GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
| 
 | ||||
|   restore-containerized-gradle-home: | ||||
|     uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   restore-custom-gradle-home: | ||||
|     uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   restore-gradle-home: | ||||
|     uses: ./.github/workflows/integ-test-restore-gradle-home.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   restore-java-toolchain: | ||||
|     uses: ./.github/workflows/integ-test-restore-java-toolchain.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
							
								
								
									
										85
									
								
								.github/workflows/suite-integ-test-other.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										85
									
								
								.github/workflows/suite-integ-test-other.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,85 +0,0 @@ | ||||
| name: suite-integ-test-other | ||||
| 
 | ||||
| on: | ||||
|   workflow_call: | ||||
|     inputs: | ||||
|       runner-os: | ||||
|         type: string | ||||
|         default: '["ubuntu-latest"]' | ||||
|       skip-dist: | ||||
|         type: boolean | ||||
|         default: false | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   build-scan-publish: | ||||
|     uses: ./.github/workflows/integ-test-build-scan-publish.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   dependency-graph: | ||||
|     if: ${{ ! github.event.pull_request.head.repo.fork }} | ||||
|     uses: ./.github/workflows/integ-test-dependency-graph.yml | ||||
|     permissions: | ||||
|       contents: write | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   dependency-submission: | ||||
|     if: ${{ ! github.event.pull_request.head.repo.fork }} | ||||
|     uses: ./.github/workflows/integ-test-dependency-submission.yml | ||||
|     permissions: | ||||
|       contents: write | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   dependency-submission-failures: | ||||
|     if: ${{ ! github.event.pull_request.head.repo.fork }} | ||||
|     uses: ./.github/workflows/integ-test-dependency-submission-failures.yml | ||||
|     permissions: | ||||
|       contents: write | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   develocity-injection: | ||||
|     if: ${{ ! github.event.pull_request.head.repo.fork }} | ||||
|     uses: ./.github/workflows/integ-test-inject-develocity.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
|     secrets: | ||||
|       DEVELOCITY_ACCESS_KEY: ${{ secrets.DV_SOLUTIONS_ACCESS_KEY }} | ||||
| 
 | ||||
|   provision-gradle-versions: | ||||
|     uses: ./.github/workflows/integ-test-provision-gradle-versions.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   sample-kotlin-dsl: | ||||
|     uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   sample-gradle-plugin: | ||||
|     uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   toolchain-detection: | ||||
|     uses: ./.github/workflows/integ-test-detect-toolchains.yml | ||||
|     with: | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
| 
 | ||||
|   wrapper-validation: | ||||
|     uses: ./.github/workflows/integ-test-wrapper-validation.yml | ||||
|     with: | ||||
|       runner-os: '${{ inputs.runner-os }}' | ||||
|       skip-dist: ${{ inputs.skip-dist }} | ||||
							
								
								
									
										94
									
								
								.github/workflows/update-checksums-file.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										94
									
								
								.github/workflows/update-checksums-file.js
									
									
									
									
										vendored
									
									
								
							| @ -1,94 +0,0 @@ | ||||
| /* | ||||
|  * Updates the `wrapper-checksums.json` file | ||||
|  * | ||||
|  * This is intended to be executed by the GitHub workflow, but can also be run | ||||
|  * manually. | ||||
|  */ | ||||
| 
 | ||||
| // @ts-check
 | ||||
| 
 | ||||
| const httpm = require('../../sources/node_modules/@actions/http-client') | ||||
| 
 | ||||
| const path = require('path') | ||||
| const fs = require('fs') | ||||
| 
 | ||||
| /** | ||||
|  * @returns {Promise<void>} | ||||
|  */ | ||||
| async function main() { | ||||
|   const httpc = new httpm.HttpClient( | ||||
|     'gradle/wrapper-validation-action/update-checksums-workflow', | ||||
|     undefined, | ||||
|     {allowRetries: true, maxRetries: 3} | ||||
|   ) | ||||
| 
 | ||||
|   /** | ||||
|    * @param {string} url | ||||
|    * @returns {Promise<string>} | ||||
|    */ | ||||
|   async function httpGetText(url) { | ||||
|     const response = await httpc.get(url) | ||||
|     return await response.readBody() | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * @typedef {Object} ApiVersionEntry | ||||
|    * @property {string} version - version name | ||||
|    * @property {string=} wrapperChecksumUrl - wrapper checksum URL; not present for old versions | ||||
|    * @property {boolean} snapshot - whether this is a snapshot version | ||||
|    */ | ||||
| 
 | ||||
|   /** | ||||
|    * @returns {Promise<ApiVersionEntry[]>} | ||||
|    */ | ||||
|   async function httpGetVersions() { | ||||
|     return JSON.parse( | ||||
|       await httpGetText('https://services.gradle.org/versions/all') | ||||
|     ) | ||||
|   } | ||||
| 
 | ||||
|   const versions = (await httpGetVersions()) | ||||
|     // Only include versions with checksum
 | ||||
|     .filter(e => e.wrapperChecksumUrl !== undefined) | ||||
|     // Ignore snapshots; they are changing frequently so no point in including them in checksums file
 | ||||
|     .filter(e => !e.snapshot) | ||||
|   console.info(`Got ${versions.length} relevant Gradle versions`) | ||||
| 
 | ||||
|   // Note: For simplicity don't sort the entries but keep the order from the API; this also has the
 | ||||
|   // advantage that the latest versions come first, so compared to appending versions at the end
 | ||||
|   // this will not cause redundant Git diff due to trailing `,` being forbidden by JSON
 | ||||
| 
 | ||||
|   /** | ||||
|    * @typedef {Object} FileVersionEntry | ||||
|    * @property {string} version | ||||
|    * @property {string} checksum | ||||
|    */ | ||||
|   /** @type {FileVersionEntry[]} */ | ||||
|   const fileVersions = [] | ||||
|   for (const entry of versions) { | ||||
|     /** @type {string} */ | ||||
|     // @ts-ignore
 | ||||
|     const checksumUrl = entry.wrapperChecksumUrl | ||||
|     const checksum = await httpGetText(checksumUrl) | ||||
|     fileVersions.push({version: entry.version, checksum}) | ||||
|   } | ||||
| 
 | ||||
|   const jsonPath = path.resolve( | ||||
|     __dirname, | ||||
|     '..', | ||||
|     '..', | ||||
|     'sources', | ||||
|     'src', | ||||
|     'wrapper-validation', | ||||
|     'wrapper-checksums.json' | ||||
|   ) | ||||
|   console.info(`Writing checksums file to ${jsonPath}`) | ||||
|   // Write pretty-printed JSON (and add trailing line break)
 | ||||
|   fs.writeFileSync(jsonPath, JSON.stringify(fileVersions, null, 2) + '\n') | ||||
| } | ||||
| 
 | ||||
| main().catch(e => { | ||||
|   console.error(e) | ||||
|   // Manually set error exit code, otherwise error is logged but script exits successfully
 | ||||
|   process.exitCode = 1 | ||||
| }) | ||||
							
								
								
									
										68
									
								
								.github/workflows/update-checksums-file.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/update-checksums-file.yml
									
									
									
									
										vendored
									
									
								
							| @ -1,68 +0,0 @@ | ||||
| name: 'Update Wrapper checksums file' | ||||
| 
 | ||||
| on: | ||||
|   # Run weekly (at arbitrary time) | ||||
|   schedule: | ||||
|     - cron: '24 5 * * 6' | ||||
|   workflow_dispatch: | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   update-checksums: | ||||
|     permissions: | ||||
|       contents: write | ||||
|       pull-requests: write | ||||
|     name: Update checksums | ||||
|     runs-on: ubuntu-latest | ||||
| 
 | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 | ||||
| 
 | ||||
|       - name: Set up Node.js | ||||
|         uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0 | ||||
|         with: | ||||
|           node-version: 20 | ||||
|           cache: npm | ||||
|           cache-dependency-path: sources/package-lock.json | ||||
| 
 | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           npm clean-install typed-rest-client@1.8.11 --no-save | ||||
|         working-directory: sources | ||||
| 
 | ||||
|       - name: Update checksums file | ||||
|         run: node ../.github/workflows/update-checksums-file.js | ||||
|         working-directory: sources | ||||
| 
 | ||||
|       - name: Import GPG key to sign commits | ||||
|         uses: crazy-max/ghaction-import-gpg@e89d40939c28e39f97cf32126055eeae86ba74ec # v6.3.0 | ||||
|         with: | ||||
|           gpg_private_key: ${{ secrets.GH_BOT_PGP_PRIVATE_KEY }} | ||||
|           passphrase: ${{ secrets.GH_BOT_PGP_PASSPHRASE }} | ||||
|           git_user_signingkey: true | ||||
|           git_commit_gpgsign: true | ||||
|           git_config_global: true | ||||
| 
 | ||||
|       # If there are no changes, this action will not create a pull request | ||||
|       - name: Create or update pull request | ||||
|         uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8 | ||||
|         with: | ||||
|           branch: bot/wrapper-checksums-update | ||||
|           author: bot-githubaction <bot-githubaction@gradle.com> | ||||
|           committer: bot-githubaction <bot-githubaction@gradle.com> | ||||
|           commit-message: Update known wrapper checksums | ||||
|           title: Update known wrapper checksums | ||||
|           # Note: Unfortunately this action cannot trigger the regular workflows for the PR automatically, see | ||||
|           # https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs | ||||
|           # Therefore suggest below to close and then reopen the PR | ||||
|           body: | | ||||
|             Automatically generated pull request to update the known wrapper checksums. | ||||
| 
 | ||||
|             In case of conflicts, manually run the workflow from the [Actions tab](https://github.com/gradle/actions/actions/workflows/update-checksums-file.yml), the changes will then be force-pushed onto this pull request branch. | ||||
|             Do not manually update the pull request branch; those changes might get overwritten. | ||||
| 
 | ||||
|             > [!IMPORTANT]   | ||||
|             > GitHub workflows have not been executed for this pull request yet. Before merging, close and then directly reopen this pull request to trigger the workflows. | ||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +0,0 @@ | ||||
| .git | ||||
| .vscode | ||||
| @ -1,34 +1,14 @@ | ||||
| ## Building | ||||
| ### How to merge a Dependabot PR | ||||
| 
 | ||||
| The `build` script in the project root provides a convenient way to perform many local build tasks: | ||||
| 1. `./build` will lint and compile typescript sources | ||||
| 2. `./build all` will lint and compile typescript and run unit tests | ||||
| 3. `./build install` will install npm packages followed by lint and compile | ||||
| 4. `./build init-scripts` will run the init-script integration tests | ||||
| 5. `./build act <act-commands>` will run `act` after building local changes (see below) | ||||
| The "distribution" for a GitHub Action is checked into the repository itself.  | ||||
| In the case of these actions, the transpiled sources are committed to the `dist` directory.  | ||||
| Any production dependencies are inlined into the distribution.  | ||||
| So if a Dependabot PR updates a production dependency (or a dev dependency that changes the distribution, like the Typescript compiler),  | ||||
| then a manual step is required to rebuild the dist and commit. | ||||
| 
 | ||||
| ## Using `act` to run integ-test workflows locally | ||||
| 
 | ||||
| It's possible to run GitHub Actions workflows locally with https://nektosact.com/. | ||||
| Many of the test workflows from this repository can be run in this way, making it easier to | ||||
| test local changes without pushing to a branch. | ||||
| 
 | ||||
| This feature is most useful to run a single `integ-test-*` workflow. Avoid running `ci-quick-test` or other aggregating workflows unless you want to use your local machine as a heater! | ||||
| 
 | ||||
| Example running a single workflow: | ||||
| `./build act -W .github/workflows/integ-test-caching-config.yml` | ||||
| 
 | ||||
| Example running a single job: | ||||
| `./build act -W .github/workflows/integ-test-caching-config.yml -j cache-disabled-pre-existing-gradle-home` | ||||
| 
 | ||||
| Known issues: | ||||
| - `integ-test-detect-java-toolchains.yml` fails when running on a `linux/amd64` container, since the expected pre-installed JDKs are not present. Should be fixed by #89. | ||||
| - `act` is not yet compatible with `actions/upload-artifact@v4` (or related toolkit functions) | ||||
|     - See https://github.com/nektos/act/pull/2224 | ||||
| - Workflows run by `act` cannot submit to the dependency-submission API, as no `GITHUB_TOKEN` is available by default. | ||||
| 
 | ||||
| Tips: | ||||
| - Add the following lines to `~/.actrc`: | ||||
|     - `--container-daemon-socket -` : Prevents "error while creating mount source path", and yes that's a solitary dash at the end | ||||
|     - `--matrix os:ubuntu-latest` : Avoids a lot of logging about unsupported runners being skipped | ||||
| - Runners don't have `java` installed by default, so all workflows that run Gradle require a `setup-java` step. | ||||
| The simplest process to follow is: | ||||
| 1. Checkout the dependabot branch locally eg: `git checkout dependabot/npm_and_yarn/actions/github-5.1.0` | ||||
| 2. In the `sources` directory, run `npm install` to download NPM dependencies | ||||
| 3. In the `sources` directory, run `npm run build` to regenerate the distribution | ||||
| 4. Push the changes to the dependabot branch | ||||
| 5. If/when the checks pass, you can merge the dependabot PR | ||||
|  | ||||
							
								
								
									
										60
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								README.md
									
									
									
									
									
								
							| @ -1,24 +1,17 @@ | ||||
| # GitHub Actions for Gradle builds | ||||
| 
 | ||||
| [](https://scorecard.dev/viewer/?uri=github.com/gradle/actions) | ||||
| 
 | ||||
| This repository contains a set of GitHub Actions that are useful for building Gradle projects on GitHub. | ||||
| 
 | ||||
| ## The `setup-gradle` action | ||||
| 
 | ||||
| The `setup-gradle` action can be used to configure Gradle for optimal execution on any platform supported by GitHub Actions. | ||||
| 
 | ||||
| This replaces the previous `gradle/gradle-build-action`, which now delegates to this implementation. | ||||
| 
 | ||||
| The recommended way to execute any Gradle build is with the help of the [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html), and the examples assume that the Gradle Wrapper has been configured for the project. See [this example](docs/setup-gradle.md#build-with-a-specific-gradle-version) if your project doesn't use the Gradle Wrapper. | ||||
| 
 | ||||
| ### Example usage | ||||
| 
 | ||||
| ```yaml | ||||
| name: Build | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
| on: [ push ] | ||||
| 
 | ||||
| jobs: | ||||
|   build: | ||||
| @ -26,18 +19,13 @@ jobs: | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: 17 | ||||
|     - name: Setup Gradle | ||||
|       uses: gradle/actions/setup-gradle@v5 | ||||
|       uses: gradle/actions/setup-gradle@v3 | ||||
|     - name: Build with Gradle | ||||
|       run: ./gradlew build | ||||
| ``` | ||||
| 
 | ||||
| See the [full action documentation](docs/setup-gradle.md) for more advanced usage scenarios. | ||||
| See the [full action documentation](setup-gradle/README.md) for more advanced usage scenarios. | ||||
| 
 | ||||
| ## The `dependency-submission` action | ||||
| 
 | ||||
| @ -51,9 +39,7 @@ Simply add this as a new workflow file to your repository (eg `.github/workflows | ||||
| ```yaml | ||||
| name: Dependency Submission | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: [ 'main' ] | ||||
| on: [ push ] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: write | ||||
| @ -64,42 +50,8 @@ jobs: | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: 17 | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v5 | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
| ``` | ||||
| 
 | ||||
| See the [full action documentation](docs/dependency-submission.md) for more advanced usage scenarios. | ||||
| 
 | ||||
| ## The `wrapper-validation` action | ||||
| 
 | ||||
| The `wrapper-validation` action validates the checksums of _all_ [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) JAR files present in the repository and fails if any unknown Gradle Wrapper JAR files are found. | ||||
| 
 | ||||
| The action should be run in the root of the repository, as it will recursively search for any files named `gradle-wrapper.jar`. | ||||
| 
 | ||||
| Starting with v4 the `setup-gradle` action will [perform wrapper validation](docs/setup-gradle.md#gradle-wrapper-validation) on each execution. | ||||
| If you are using `setup-gradle` in your workflows, it is unlikely that you will need to use the `wrapper-validation` action. | ||||
| 
 | ||||
| ### Example workflow | ||||
| 
 | ||||
| ```yaml | ||||
| name: "Validate Gradle Wrapper" | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|   pull_request: | ||||
| 
 | ||||
| jobs: | ||||
|   validation: | ||||
|     name: "Validation" | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - uses: actions/checkout@v4 | ||||
|       - uses: gradle/actions/wrapper-validation@v5 | ||||
| ``` | ||||
| 
 | ||||
| See the [full action documentation](docs/wrapper-validation.md) for more advanced usage scenarios. | ||||
| See the [full action documentation](dependency-submission/README.md) for more advanced usage scenarios. | ||||
|  | ||||
							
								
								
									
										32
									
								
								RELEASING.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								RELEASING.md
									
									
									
									
									
								
							| @ -1,32 +0,0 @@ | ||||
| # Gradle GitHub Actions release process | ||||
| 
 | ||||
| ## Preparation | ||||
| - Push any outstanding changes to branch main. | ||||
| - Check that https://github.com/gradle/actions/actions is green for all workflows for the main branch. | ||||
|   - This should include any workflows triggered by `[bot] Update dist directory` | ||||
| - Decide on the version number to use for the release. The action releases should follow semantic versioning. | ||||
|   - By default, a patch release is assumed (eg. `4.0.0` → `4.0.1`) | ||||
|   - If new features have been added, bump the minor version (eg `4.1.1` → `4.2.0`) | ||||
|   - If a new major release is required, bump the major version (eg `4.1.1` → `5.0.0`) | ||||
|   - Note: The gradle actions follow the GitHub Actions convention of including a .0 patch number for the first release of a minor version, unlike the Gradle convention which omits the trailing .0. | ||||
| 
 | ||||
| ## Release gradle/actions | ||||
| - Create a tag for the release. The tag should have the format `v5.0.0` | ||||
|   - From CLI: `git tag -s -m "v5.0.0" v5.0.0 && git push --tags` | ||||
|   - Note that we sign the tag and set the commit message for the tag to the newly released version. | ||||
| - Go to https://github.com/gradle/actions/releases and "Draft new release" | ||||
|   - Use the newly created tag and copy the tag name exactly as the release title. | ||||
|   - Craft release notes content based on issues closed, PRs merged and commits | ||||
|   - Include a Full changelog link in the format https://github.com/gradle/actions/compare/v2.12.0...v3.0.0 | ||||
| - Publish the release. | ||||
| - Force push the `v5` tag (or current major version) to point to the new release. It is conventional for users to bind to a major release version using this tag. | ||||
|   - From CLI: `git tag -f -s -a -m "v5.0.0" v5 v5.0.0 && git push -f --tags` | ||||
|   - Note that we sign the tag and set the commit message for the tag to the newly released version. | ||||
| 
 | ||||
| ## Post release steps | ||||
| 
 | ||||
| Submit PRs to update the GitHub starter workflow. Starter workflows contain content that should reference the Git hash of the current gradle/actions release: | ||||
| https://github.com/actions/starter-workflows has [gradle](https://github.com/actions/starter-workflows/blob/main/ci/gradle.yml) and [gradle-publish](https://github.com/actions/starter-workflows/blob/main/ci/gradle-publish.yml): see [the v4.0.0 update PR](https://github.com/actions/starter-workflows/pull/2468) for an example. | ||||
| 
 | ||||
| Submit PRs to update the GitHub documentation. The documentation contains content that should reference the Git hash of the current gradle/actions release: | ||||
| https://github.com/github/docs has [building-and-testing-java-with-gradle](https://github.com/github/docs/blob/main/content/actions/automating-builds-and-tests/building-and-testing-java-with-gradle.md) and [publishing-java-packages-with-gradle](https://github.com/github/docs/blob/main/content/actions/publishing-packages/publishing-java-packages-with-gradle.md) : see [the v4.0.0 update PR](https://github.com/github/docs/pull/34239) for an example. | ||||
| @ -1,11 +0,0 @@ | ||||
| { | ||||
| 	"folders": [ | ||||
| 		{ | ||||
| 			"path": "." | ||||
| 		}, | ||||
| 		{ | ||||
| 			"path": "sources" | ||||
| 		} | ||||
| 	], | ||||
| 	"settings": {} | ||||
| } | ||||
							
								
								
									
										46
									
								
								build
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								build
									
									
									
									
									
								
							| @ -1,46 +0,0 @@ | ||||
| #!/bin/bash | ||||
| 
 | ||||
| cd sources | ||||
| 
 | ||||
| if [[ -f ~/.gradle/develocity/keys.properties ]]; then | ||||
|     export NODE_OPTIONS='-r @gradle-tech/develocity-agent/preload' | ||||
|     export DEVELOCITY_URL=https://ge.solutions-team.gradle.com | ||||
|     export DEVELOCITY_ACCESS_KEY=$(paste -sd ';' ~/.gradle/develocity/keys.properties) | ||||
| fi | ||||
| 
 | ||||
| case "$1" in | ||||
|     all) | ||||
|         npm run all | ||||
|         ;; | ||||
|     act) | ||||
|         # Build and copy outputs to the dist directory | ||||
|         npm run build | ||||
|         cd .. | ||||
|         cp -r sources/dist . | ||||
|         # Run act | ||||
|         $@ | ||||
|         # Revert the changes to the dist directory | ||||
|         git checkout -- dist | ||||
|         ;; | ||||
|     dist) | ||||
|         npm clean-install | ||||
|         npm run build | ||||
|         cd .. | ||||
|         cp -r sources/dist . | ||||
|         ;; | ||||
|     init-scripts) | ||||
|         cd test/init-scripts | ||||
|         ./gradlew check | ||||
|         ;; | ||||
|     install) | ||||
|         npm clean-install | ||||
|         npm run build | ||||
|         ;; | ||||
|     test) | ||||
|         shift | ||||
|         npm test -- $@ | ||||
|         ;; | ||||
|     *) | ||||
|         npm run build | ||||
|         ;; | ||||
| esac | ||||
| @ -1,6 +1,19 @@ | ||||
| ## The `dependency-submission` action | ||||
| # The `dependency-submission` action | ||||
| 
 | ||||
| Generates and submits a dependency graph for a Gradle project, allowing GitHub to alert about reported vulnerabilities in your project dependencies. | ||||
| The `gradle/actions/dependency-submission` action provides the simplest (and recommended) way to generate a  | ||||
| dependency graph for your project. This action will attempt to detect all dependencies used by your build | ||||
| without building and testing the project itself. | ||||
| 
 | ||||
| The dependency graph snapshot is generated via integration with the [GitHub Dependency Graph Gradle Plugin](https://plugins.gradle.org/plugin/org.gradle.github-dependency-graph-gradle-plugin), and submitted to your repository via the  | ||||
| [GitHub Dependency Submission API](https://docs.github.com/en/rest/dependency-graph/dependency-submission). | ||||
| The generated snapshot files can be submitted in the same job, or saved for submission in a subsequent job. | ||||
| 
 | ||||
| The generated dependency graph includes all of the dependencies in your build, and is used by GitHub to generate  | ||||
| [Dependabot Alerts](https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts)  | ||||
| for vulnerable dependencies, as well as to populate the  | ||||
| [Dependency Graph insights view](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository#viewing-the-dependency-graph). | ||||
| 
 | ||||
| ## General usage | ||||
| 
 | ||||
| The following workflow will generate a dependency graph for a Gradle project and submit it immediately to the repository via the | ||||
| Dependency Submission API. For most projects, this default configuration should be all that you need. | ||||
| @ -10,9 +23,7 @@ Simply add this as a new workflow file to your repository (eg `.github/workflows | ||||
| ```yaml | ||||
| name: Dependency Submission | ||||
| 
 | ||||
| on: | ||||
|   push: | ||||
|     branches: ['main'] | ||||
| on: [ push ] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: write | ||||
| @ -23,13 +34,377 @@ jobs: | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Setup Java | ||||
|       uses: actions/setup-java@v4 | ||||
|       with: | ||||
|         distribution: 'temurin' | ||||
|         java-version: 17 | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v5 | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
| ``` | ||||
| 
 | ||||
| See the [full action documentation](../docs/dependency-submission.md) for more advanced usage scenarios. | ||||
| ### Configuration parameters | ||||
| 
 | ||||
| In some cases, the default action configuration will not be sufficient, and additional action parameters will need to be specified. | ||||
| 
 | ||||
| See the example below for a summary, and the [Action Metadata file](action.yml) for a more detailed description of each input parameter. | ||||
| 
 | ||||
| ```yaml | ||||
| name: Dependency Submission with advanced config | ||||
| 
 | ||||
| on: [ push ] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and save dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|       with: | ||||
|         # Use a particular Gradle version instead of the configured wrapper. | ||||
|         gradle-version: 8.6 | ||||
| 
 | ||||
|         # The gradle project is not in the root of the repository. | ||||
|         build-root-directory: my-gradle-project | ||||
| 
 | ||||
|         # Enable configuration-cache reuse for this build. | ||||
|         cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }} | ||||
| 
 | ||||
|         # Do not attempt to submit the dependency-graph. Save it as a workflow artifact. | ||||
|         dependency-graph: generate-and-upload | ||||
| ``` | ||||
| 
 | ||||
| # Resolving a dependency vulnerability | ||||
| 
 | ||||
| ## Finding the source of a dependency vulnerability | ||||
| 
 | ||||
| Once you have submitted a dependency graph, you may receive Dependabot Alerts warning about vulnerabilities in | ||||
| dependencies of your project. In the case of transitive dependencies, it may not be obvious how that dependency is | ||||
| used or what you can do to address the vulnerability alert. | ||||
| 
 | ||||
| The first step to investigating a Dependabot Alert is to determine the source of the dependency. One of the best ways to  | ||||
| do so is with a free Develocity Build Scan®, which makes it easy to explore the dependencies resolved in your build. | ||||
| 
 | ||||
| <img width="1069" alt="image" src="https://github.com/gradle/actions/assets/179734/3a637dfd-396c-4e94-8332-dcc6eb5a35ac"> | ||||
| 
 | ||||
| In this example, we are searching for dependencies matching the name 'com.squareup.okio:okio' in the _Build Dependencies_ of  | ||||
| the project. You can easily see that this dependency originates from 'com.github.ben-manes:gradle-versions-plugin'. | ||||
| Knowing the source of the dependency can help determine how to deal with the Dependabot Alert. | ||||
| 
 | ||||
| Note that you may need to look at both the _Dependencies_ and the _Build Dependencies_ of your project to find the | ||||
| offending dependency. | ||||
| 
 | ||||
| ### Publishing a Develocity Build Scan® from your dependency submission workflow | ||||
| 
 | ||||
| You can automatically publish a Build Scan on every run of `gradle/actions/dependency-submission`. Three input parameters are  | ||||
| required, one to enable publishing and two more to accept the [Develocity terms of service](https://gradle.com/terms-of-service). | ||||
| 
 | ||||
| ```yaml | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|       with: | ||||
|         build-scan-publish: true | ||||
|         build-scan-terms-of-service-url: "https://gradle.com/terms-of-service" | ||||
|         build-scan-terms-of-service-agree: "yes" | ||||
| ``` | ||||
| 
 | ||||
| ### When you cannot publish a Build Scan® | ||||
| 
 | ||||
| If publishing a free Build Scan to https://scans.gradle.com isn't an option, and you don't have access to a private [Develocity | ||||
| server](https://gradle.com/) for your project, you can obtain information about the each resolved dependency by running the `dependency-submission` workflow with debug logging enabled. | ||||
| 
 | ||||
| The simplest way to do so is to re-run the dependency-submission job with debug logging enabled: | ||||
| 
 | ||||
| <img width="665" alt="image" src="https://github.com/gradle/actions/assets/179734/d95b889a-09fb-4731-91f2-baebbf647e31"> | ||||
| 
 | ||||
| When you do so, the Gradle build that generates the dependency-graph will include a log message for each dependency version included in the graph. | ||||
| Given the details in one log message, you can run (locally) the built-in [dependencyInsight](https://docs.gradle.org/current/userguide/viewing_debugging_dependencies.html#dependency_insights) task | ||||
| to determine exactly how the dependency was resolved.  | ||||
| 
 | ||||
| For example, given the following message in the logs: | ||||
| ``` | ||||
| Detected dependency 'com.google.guava:guava:32.1.3-jre': project = ':my-subproject', configuration = 'compileClasspath' | ||||
| ``` | ||||
| 
 | ||||
| You would run the following command locally: | ||||
| ``` | ||||
| ./gradlew :my-subproject:dependencyInsight --configuration compileClasspath --dependency com.google.guava:guava:32.1.3-jre | ||||
| ``` | ||||
| 
 | ||||
| #### Dealing with 'classpath' configuration | ||||
| 
 | ||||
| If the configuration value in the log message is "classpath" then instead of running `dependency-insight` you'll need to run the Gradle | ||||
| `buildEnvironment` task. | ||||
| 
 | ||||
| For example, given the following message in the logs: | ||||
| ``` | ||||
| Detected dependency 'xerces:xercesImpl:2.12.2': project = ':my-subproject', configuration = 'classpath' | ||||
| ``` | ||||
| 
 | ||||
| You would run the following command locally to expose the `xercesImpl` dependency: | ||||
| ``` | ||||
| ./gradlew :my-subproject:buildEnvironment | grep -C 5 xercesImpl | ||||
| ``` | ||||
| 
 | ||||
| ## Updating the dependency version | ||||
| 
 | ||||
| Once you've discovered the source of the dependency, the most obvious fix is to update the dependency to a patched version that does not | ||||
| suffer the vulnerability. For direct dependencies, this is often straightforward.  But for transitive dependencies it can be tricky. | ||||
| 
 | ||||
| ### Dependency source is specified directly in the build | ||||
| 
 | ||||
| If the dependency is used to compile your code or run your tests, it's normal for the underlying "source" of the dependency to have a | ||||
| version configured directly in the build. For example, if you have a vulnerable version of `com.squareup.okio:okio` in your `compileClasspath`, then | ||||
| it's likely you have a dependency like `com.squareup.moshi:moshi` configured as an `api` or `implementation` dependency. | ||||
| 
 | ||||
| In this case there are 2 possibilities: | ||||
| 1. There is a newer, compatible version of `com.squareup.moshi:moshi` available, and you can just bump the version number. | ||||
| 2. There isn't a newer, compatible version of `com.squareup.moshi:moshi` | ||||
| 
 | ||||
| In the second case, you can add a Dependency Constraint, to force the use of the newest version of `com.squareup.okio`: | ||||
| 
 | ||||
| ```kotlin | ||||
| dependencies { | ||||
|   implementation("com.squareup.moshi:moshi:1.12.0") | ||||
|   constraints { | ||||
|     // Force a newer version of okio in transitive resolution | ||||
|     implementation("com.squareup.okio:okio:3.6.0") | ||||
|   } | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ### Dependency source is a plugin classpath | ||||
| 
 | ||||
| If the vulnerable dependency is introduced by a Gradle plugin, again the best option is to look for a newer version of the plugin. | ||||
| But if none is available, you can still use a dependency constraint to force a newer transitive version to be used. | ||||
| 
 | ||||
| The dependency constraint must be added to the `classpath` configuration of the buildscript that loads the plugin. | ||||
| 
 | ||||
| ```kotlin | ||||
| buildscript { | ||||
|   repositories { | ||||
|     gradlePluginPortal() | ||||
|   } | ||||
|   dependencies { | ||||
|     constraints { | ||||
|       // Force a newer version of okio in transitive resolution | ||||
|       classpath("com.squareup.okio:okio:3.6.0") | ||||
|     } | ||||
|   } | ||||
| } | ||||
| plugins { | ||||
|   id("com.github.ben-manes.versions") version("0.51.0") | ||||
| } | ||||
| ``` | ||||
| 
 | ||||
| ## Limiting the dependencies that appear in the dependency graph | ||||
| 
 | ||||
| By default, the `dependency-submission` action attempts to detect all dependencies declared and used by your Gradle build. | ||||
| At times it may helpful to limit the dependencies reported to GitHub, to avoid security alerts for dependencies that  | ||||
| don't form a critical part of your product. For example, a vulnerability in the tool you use to generate documentation  | ||||
| may not be as important as a vulnerability in one of your runtime dependencies. | ||||
| 
 | ||||
| The `dependency-submission` action provides a convenient mechanism to filter the projects and configurations that | ||||
| contribute to the dependency graph. | ||||
| 
 | ||||
| > [!NOTE] | ||||
| > Ideally, all dependencies involved in building and testing a project will be extracted and reported in a dependency graph.  | ||||
| > These dependencies would be assigned to different scopes (eg development, runtime, testing) and the GitHub UI would make it easy to opt-in to security alerts for different dependency scopes. | ||||
| > However, this functionality does not yet exist. | ||||
| 
 | ||||
| ### Excluding certain Gradle projects from to the dependency graph | ||||
| 
 | ||||
| If you do not want the dependency graph to include dependencies from every project in your build,  | ||||
| you can easily exclude certain projects from the dependency extraction process. | ||||
| 
 | ||||
| To restrict which Gradle subprojects contribute to the report, specify which projects to exclude via a regular expression. | ||||
| You can provide this value via the `DEPENDENCY_GRAPH_EXCLUDE_PROJECTS` environment variable or system property. | ||||
| 
 | ||||
| Note that excluding a project in this way only removes dependencies that are _resolved_ as part of that project, and may | ||||
| not necessarily remove all dependencies _declared_ in that project. If another project depends on the excluded project | ||||
| then it may transitively resolve dependencies declared in the excluded project: these dependencies will still be included | ||||
| in the generated dependency graph. | ||||
| 
 | ||||
| ### Excluding certain Gradle configurations from to the dependency graph | ||||
| 
 | ||||
| Similarly to Gradle projects, it is possible to exclude a set of configuration instances from dependency graph generation, | ||||
| so that dependencies resolved by those configurations are not included. | ||||
| 
 | ||||
| To restrict which Gradle configurations contribute to the report, specify which configurations to exclude via a regular expression. | ||||
| You can provide this value via the `DEPENDENCY_GRAPH_EXCLUDE_CONFIGURATIONS` environment variable or system property. | ||||
| 
 | ||||
| Note that configuration exclusion applies to the configuration in which the dependency is _resolved_ which is not necessarily | ||||
| the configuration where the dependency is _declared_. For example if you decare a dependency as `implementation` in | ||||
| a Java project, that dependency will be resolved in `compileClasspath`, `runtimeClasspath` and possibly other configurations. | ||||
| 
 | ||||
| ### Example of project and configuration filtering | ||||
| 
 | ||||
| For example, if you want to exclude dependencies in the `buildSrc` project, and exclude dependencies from the `testCompileClasspath` and `testRuntimeClasspath` configurations, you would use the following configuration: | ||||
| 
 | ||||
| ```yaml | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|       env: | ||||
|         # Exclude all dependencies that originate solely in the 'buildSrc' project | ||||
|         DEPENDENCY_GRAPH_EXCLUDE_PROJECTS: ':buildSrc' | ||||
|         # Exclude dependencies that are only resolved in test classpaths | ||||
|         DEPENDENCY_GRAPH_EXCLUDE_CONFIGURATIONS: '.*[Tt]est(Compile|Runtime)Classpath' | ||||
| ``` | ||||
| 
 | ||||
| ### Other filtering options | ||||
| 
 | ||||
| The [GitHub Dependency Graph Gradle Plugin](https://plugins.gradle.org/plugin/org.gradle.github-dependency-graph-gradle-plugin) | ||||
| has other filtering options that may be useful. | ||||
|  See [the docs](https://github.com/gradle/github-dependency-graph-gradle-plugin?tab=readme-ov-file#filtering-which-gradle-configurations-contribute-to-the-dependency-graph) for details. | ||||
| 
 | ||||
| # Advance usage scenarios | ||||
| 
 | ||||
| ## Using a custom plugin repository | ||||
| 
 | ||||
| By default, the action downloads the `github-dependency-graph-gradle-plugin` from the Gradle Plugin Portal (https://plugins.gradle.org). If your GitHub Actions environment does not have access to this URL, you can specify a custom plugin repository to use.  | ||||
| Do so by setting the `GRADLE_PLUGIN_REPOSITORY_URL` environment variable. | ||||
| 
 | ||||
| ```yaml | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|       env: | ||||
|         GRADLE_PLUGIN_REPOSITORY_URL: "https://gradle-plugins-proxy.mycorp.com" | ||||
| ``` | ||||
| 
 | ||||
| ## Integrating the `dependency-review-action` | ||||
| 
 | ||||
| The GitHub [dependency-review-action](https://github.com/actions/dependency-review-action) helps you  | ||||
| understand dependency changes (and the security impact of these changes) for a pull request, | ||||
| by comparing the dependency graph for the pull-request with that of the HEAD commit. | ||||
| 
 | ||||
| Example of a pull request workflow that executes a build for a pull request and runs the `dependency-review-action`: | ||||
| 
 | ||||
| ```yaml | ||||
| name: Dependency review for pull requests | ||||
| 
 | ||||
| on: [ pull_request ] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: write | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|    | ||||
|   dependency-review: | ||||
|     needs: dependency-submission | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Perform dependency review | ||||
|       uses: actions/dependency-review-action@v3 | ||||
| ``` | ||||
| 
 | ||||
| Note that the `dependency-submission` action submits the dependency graph at the completion of the workflow Job. | ||||
| For this reason, the `dependency-review-action` must be executed in a dependent job, and not as a subsequent step in the job that generates the dependency graph. | ||||
| 
 | ||||
| ## Usage with pull requests from public forked repositories | ||||
| 
 | ||||
| This `contents: write` permission is [not available for any workflow that is triggered by a pull request submitted from a public forked repository](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token). | ||||
| This limitation is designed to prevent a malicious pull request from effecting repository changes. | ||||
| 
 | ||||
| Because of this restriction, we require 2 separate workflows in order to generate and submit a dependency graph: | ||||
| 1. The first workflow runs directly against the pull request sources and will `generate-and-upload` the dependency graph. | ||||
| 2. The second workflow is triggered on `workflow_run` of the first workflow, and will `download-and-submit` the previously saved dependency graph. | ||||
| 
 | ||||
| ***Main workflow file*** | ||||
| ```yaml | ||||
| name: Generate and save dependency graph | ||||
| 
 | ||||
| on: [ pull_request ] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read # 'write' permission is not available | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-submission: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout sources | ||||
|       uses: actions/checkout@v4 | ||||
|     - name: Generate and save dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|       with: | ||||
|         dependency-graph: generate-and-upload | ||||
| ``` | ||||
| 
 | ||||
| ***Dependent workflow file*** | ||||
| ```yaml | ||||
| name: Download and submit dependency graph | ||||
| 
 | ||||
| on: | ||||
|   workflow_run: | ||||
|     workflows: ['Generate and save dependency graph'] | ||||
|     types: [completed] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: write | ||||
| 
 | ||||
| jobs: | ||||
|   submit-dependency-graph: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Download and submit dependency graph | ||||
|       uses: gradle/actions/dependency-submission@v3 | ||||
|       with: | ||||
|         dependency-graph: download-and-submit # Download saved dependency-graph and submit | ||||
| ``` | ||||
| 
 | ||||
| ### Integrating `dependency-review-action` for pull requests from public forked repositories | ||||
| 
 | ||||
| To integrate the `dependency-review-action` into the pull request workflows above, a third workflow file is required. | ||||
| This workflow will be triggered directly on `pull_request`, but will wait until the dependency graph results are | ||||
| submitted before the dependency review can complete. The period to wait is controlled by the `retry-on-snapshot-warnings` input parameters. | ||||
| 
 | ||||
| Here's an example of a separate "Dependency Review" workflow that will wait for 10 minutes for the above PR check workflow to complete. | ||||
| 
 | ||||
| ```yaml | ||||
| name: dependency-review | ||||
| 
 | ||||
| on: [ pull_request ] | ||||
| 
 | ||||
| permissions: | ||||
|   contents: read | ||||
| 
 | ||||
| jobs: | ||||
|   dependency-review: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: 'Dependency Review' | ||||
|       uses: actions/dependency-review-action@v3 | ||||
|       with: | ||||
|         retry-on-snapshot-warnings: true | ||||
|         retry-on-snapshot-warnings-timeout: 600 | ||||
| ``` | ||||
| 
 | ||||
| The `retry-on-snapshot-warnings-timeout` (in seconds) needs to be long enough to allow the entire `Generate and save dependency graph` and `Download and submit dependency graph` workflows (above) to complete. | ||||
| 
 | ||||
| # Gradle version compatibility | ||||
| 
 | ||||
| Dependency-graph generation is compatible with most versions of Gradle >= `5.2`, and is tested regularly against  | ||||
| Gradle versions `5.2.1`, `5.6.4`, `6.0.1`, `6.9.4`, `7.1.1` and `7.6.3`, as well as all patched versions of Gradle 8.x. | ||||
| 
 | ||||
| A known exception to this is that Gradle `7.0`, `7.0.1` and `7.0.2` are not supported. | ||||
| 
 | ||||
| See [here](https://github.com/gradle/github-dependency-graph-gradle-plugin?tab=readme-ov-file#gradle-compatibility) for complete compatibility information. | ||||
|  | ||||
| @ -2,230 +2,84 @@ name: Gradle Dependency Submission | ||||
| description: Generates a dependency graph for a Gradle project and submits it via the Dependency Submission API | ||||
| 
 | ||||
| inputs: | ||||
|   # Gradle execution configuration | ||||
|   gradle-version: | ||||
|     description: | | ||||
|       Gradle version to use. If specified, this Gradle version will be downloaded, added to the PATH and used for invoking Gradle. | ||||
|       If not provided, it is assumed that the project uses the Gradle Wrapper. | ||||
|     required: false | ||||
| 
 | ||||
|   build-root-directory: | ||||
|     description: Path to the root directory of the build. Default is the root of the GitHub workspace. | ||||
|     required: false | ||||
| 
 | ||||
|   dependency-resolution-task: | ||||
|     description: | | ||||
|       Task(s) that should be executed in order to resolve all project dependencies. | ||||
|       By default, the built-in `:ForceDependencyResolutionPlugin_resolveAllDependencies` task is executed. | ||||
|     required: false | ||||
| 
 | ||||
|   additional-arguments: | ||||
|     description: | | ||||
|       Additional arguments to pass to Gradle when generating the dependency graph. | ||||
|       For example, `--no-configuration-cache --stacktrace`. | ||||
|     required: false | ||||
| 
 | ||||
|   # Cache configuration | ||||
|   cache-disabled: | ||||
|     description: When 'true', all caching is disabled. No entries will be written to or read from the cache. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   cache-read-only: | ||||
|     description: | | ||||
|       When 'true', existing entries will be read from the cache but no entries will be written. | ||||
|       By default this value is 'false' for workflows on the GitHub default branch and 'true' for workflows on other branches. | ||||
|     required: false | ||||
|     default: ${{ github.event.repository != null && github.ref_name != github.event.repository.default_branch }} | ||||
| 
 | ||||
|   cache-write-only: | ||||
|     description: | | ||||
|       When 'true', entries will not be restored from the cache but will be saved at the end of the Job. | ||||
|       Setting this to 'true' implies cache-read-only will be 'false'. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   cache-overwrite-existing: | ||||
|     description: When 'true', a pre-existing Gradle User Home will not prevent the cache from being restored. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   cache-encryption-key: | ||||
|     description: | | ||||
|       A base64 encoded AES key used to encrypt the configuration-cache data. The key is exported as 'GRADLE_ENCRYPTION_KEY' for later steps. | ||||
|       A base64 encoded AES key used to encrypt the configuration-cache data. The key is exported as 'GRADLE_ENCRYPTION_KEY' for later steps.  | ||||
|       A suitable key can be generated with `openssl rand -base64 16`. | ||||
|       Configuration-cache data will not be saved/restored without an encryption key being provided. | ||||
|     required: false | ||||
| 
 | ||||
|   cache-cleanup: | ||||
|     description: | | ||||
|       Specifies if the action should attempt to remove any stale/unused entries from the Gradle User Home prior to saving to the GitHub Actions cache. | ||||
|       By default ('on-success'), cleanup is performed when all Gradle builds succeed for the Job.  | ||||
|       This behaviour can be disabled ('never'), or configured to always run irrespective of the build outcome ('always'). | ||||
|       Valid values are 'never', 'on-success' and 'always'. | ||||
|     required: false | ||||
|     default: 'on-success' | ||||
| 
 | ||||
|   gradle-home-cache-cleanup: | ||||
|     description: When 'true', the action will attempt to remove any stale/unused entries from the Gradle User Home prior to saving to the GitHub Actions cache. | ||||
|     required: false | ||||
|     deprecation-message: This input has been superceded by the 'cache-cleanup' input parameter. | ||||
| 
 | ||||
|   gradle-home-cache-includes: | ||||
|     description: Paths within Gradle User Home to cache. | ||||
|     required: false | ||||
|     default: | | ||||
|         caches | ||||
|         notifications | ||||
| 
 | ||||
|   gradle-home-cache-excludes: | ||||
|     description: Paths within Gradle User Home to exclude from cache. | ||||
|     required: false | ||||
| 
 | ||||
|   # Job summary configuration | ||||
|   add-job-summary: | ||||
|     description: Specifies when a Job Summary should be inluded in the action results. Valid values are 'never', 'always' (default), and 'on-failure'. | ||||
|     required: false | ||||
|     default: 'always' | ||||
| 
 | ||||
|   add-job-summary-as-pr-comment: | ||||
|     description: Specifies when each Job Summary should be added as a PR comment. Valid values are 'never' (default), 'always', and 'on-failure'. No action will be taken if the workflow was not triggered from a pull request. | ||||
|     required: false | ||||
|     default: 'never' | ||||
| 
 | ||||
|   # Dependency Graph configuration | ||||
|   dependency-graph: | ||||
|     description: | | ||||
|       Specifies how the dependency-graph should be handled by this action.  | ||||
|       By default a dependency-graph will be generated, submitted to the dependency-submission API, and saved as a workflow artifact. | ||||
|       Specifies how the dependency-graph should be handled by this action. By default a dependency-graph will be generated and submitted. | ||||
|       Valid values are: | ||||
|         'generate-and-submit': Generates a dependency graph for the project and submits it in the same Job. | ||||
|         'generate-submit-and-upload (default)': As per 'generate-and-submit', but also saves the dependency graph as a workflow artifact. | ||||
|         'generate-and-upload': Generates a dependency graph for the project and saves it as a workflow artifact. Does not submit it to the repository. | ||||
|         'generate-and-submit' (default): Generates a dependency graph for the project and submits it in the same Job. | ||||
|         'generate-and-upload': Generates a dependency graph for the project and saves it as a workflow artifact. | ||||
|         'download-and-submit': Retrieves a previously saved dependency-graph and submits it to the repository. | ||||
| 
 | ||||
|       Use `generate-and-submit` if you prefer not to save the dependency-graph as a workflow artifact. | ||||
|       The `generate-and-upload` and `download-and-submit` options are designed to be used in an untrusted workflow scenario, | ||||
|       where the workflow generating the dependency-graph cannot (or should not) be given the `contents: write` permissions | ||||
|       required to submit via the Dependency Submission API. | ||||
|     required: false | ||||
|     default: 'generate-submit-and-upload' | ||||
| 
 | ||||
|   dependency-graph-report-dir: | ||||
|     default: 'generate-and-submit' | ||||
|   additional-arguments: | ||||
|     description: | | ||||
|       Specifies where the dependency graph report will be generated.  | ||||
|       Paths can relative or absolute. Relative paths are resolved relative to the workspace directory. | ||||
|     required: false | ||||
|     default: 'dependency-graph-reports' | ||||
| 
 | ||||
|   dependency-graph-continue-on-failure: | ||||
|     description: When 'false' a failure to generate or submit a dependency graph will fail the Step or Job. When 'true' a warning will be emitted but no failure will result. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   dependency-graph-exclude-projects: | ||||
|     description: | | ||||
|       Gradle projects that should be excluded from dependency graph (regular expression). | ||||
|       When set, any matching project will be excluded. | ||||
|       Additional arguments to pass to Gradle. For example, `--no-configuration-cache --stacktrace`. | ||||
|     required: false | ||||
| 
 | ||||
|   dependency-graph-include-projects: | ||||
|     description: | | ||||
|       Gradle projects that should be included in dependency graph (regular expression).  | ||||
|       When set, only matching projects will be included. | ||||
|     required: false | ||||
| 
 | ||||
|   dependency-graph-exclude-configurations: | ||||
|     description: | | ||||
|       Gradle configurations that should be included in dependency graph (regular expression).  | ||||
|       When set, anymatching configurations will be excluded. | ||||
|     required: false | ||||
| 
 | ||||
|   dependency-graph-include-configurations: | ||||
|     description: | | ||||
|       Gradle configurations that should be included in dependency graph (regular expression).  | ||||
|       When set, only matching configurations will be included. | ||||
|     required: false | ||||
| 
 | ||||
|   artifact-retention-days: | ||||
|     description: Specifies the number of days to retain any artifacts generated by the action. If not set, the default retention settings for the repository will apply. | ||||
|     required: false | ||||
| 
 | ||||
|   # Build Scan configuration | ||||
|   build-scan-publish: | ||||
|     description: | | ||||
|       Set to 'true' to automatically publish build results as a Build Scan on scans.gradle.com. | ||||
|       For publication to succeed without user input, you must also provide values for `build-scan-terms-of-use-url` and 'build-scan-terms-of-use-agree'. | ||||
|       For publication to succeed without user input, you must also provide values for `build-scan-terms-of-service-url` and 'build-scan-terms-of-service-agree'. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   build-scan-terms-of-use-url: | ||||
|     description: The URL to the Build Scan® terms of use. This input must be set to 'https://gradle.com/terms-of-service' or 'https://gradle.com/help/legal-terms-of-use'. | ||||
|   build-scan-terms-of-service-url: | ||||
|     description: The URL to the Build Scan® terms of service. This input must be set to 'https://gradle.com/terms-of-service'. | ||||
|     required: false | ||||
| 
 | ||||
|   build-scan-terms-of-use-agree: | ||||
|     description: Indicate that you agree to the Build Scan® terms of use. This input value must be "yes". | ||||
|   build-scan-terms-of-service-agree: | ||||
|     description: Indicate that you agree to the Build Scan® terms of service. This input value must be "yes". | ||||
|     required: false | ||||
| 
 | ||||
|   develocity-access-key: | ||||
|     description: Develocity access key. Should be set to a secret containing the Develocity Access key. | ||||
|     required: false | ||||
| 
 | ||||
|   develocity-token-expiry: | ||||
|     description: The Develocity short-lived access tokens expiry in hours. Default is 2 hours. | ||||
|     required: false | ||||
| 
 | ||||
|   # Wrapper validation configuration | ||||
|   validate-wrappers: | ||||
|     description: | | ||||
|       When 'true' the action will automatically validate all wrapper jars found in the repository. | ||||
|       If the wrapper checksums are not valid, the action will fail. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   allow-snapshot-wrappers: | ||||
|     description: | | ||||
|       When 'true', wrapper validation will include the checksums of snapshot wrapper jars.  | ||||
|       Use this if you are running with nightly or snapshot versions of the Gradle wrapper. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   # DEPRECATED ACTION INPUTS | ||||
| 
 | ||||
|   # EXPERIMENTAL ACTION INPUTS | ||||
|   # The following action properties allow fine-grained tweaking of the action caching behaviour. | ||||
|   # These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `setup-gradle`. | ||||
|   # Use at your own risk! | ||||
|   gradle-home-cache-strict-match: | ||||
|     description: When 'true', the action will not attempt to restore the Gradle User Home entries from other Jobs. | ||||
|     required: false | ||||
|     default: false | ||||
| 
 | ||||
|   # INTERNAL ACTION INPUTS | ||||
|   # These inputs should not be configured directly, and are only used to pass environmental information to the action | ||||
|   workflow-job-context: | ||||
|     description: Used to uniquely identify the current job invocation. Defaults to the matrix values for this job; this should not be overridden by users (INTERNAL). | ||||
|     required: false | ||||
|     default: ${{ toJSON(matrix) }} | ||||
| 
 | ||||
|   github-token: | ||||
|     description: The GitHub token used to authenticate when submitting via the Dependency Submission API. | ||||
|     default: ${{ github.token }} | ||||
|     required: false | ||||
| 
 | ||||
| outputs: | ||||
|   build-scan-url: | ||||
|     description: Link to the Build Scan® generated by a Gradle build. Note that this output applies to a Step executing Gradle, not to the `setup-gradle` Step itself. | ||||
|   dependency-graph-file: | ||||
|     description: Path to the GitHub Dependency Graph snapshot file generated by a Gradle build. Note that this output applies to a Step executing Gradle, not to the `setup-gradle` Step itself. | ||||
|   gradle-version: | ||||
|     description: Version of Gradle that was setup by the action | ||||
| 
 | ||||
| runs: | ||||
|   using: 'node24' | ||||
|   main: '../dist/dependency-submission/main/index.js' | ||||
|   post: '../dist/dependency-submission/post/index.js' | ||||
| 
 | ||||
| branding: | ||||
|   icon: 'box' | ||||
|   color: 'gray-dark' | ||||
|   using: "composite" | ||||
|   steps: | ||||
|     - name: Check no setup-gradle | ||||
|       shell: bash | ||||
|       run: | | ||||
|         if [ -n "${GRADLE_BUILD_ACTION_SETUP_COMPLETED}" ]; then | ||||
|           echo "The dependency-submission action cannot be used in the same Job as the setup-gradle action. Please use a separate Job for dependency submission." | ||||
|           exit 1 | ||||
|         fi | ||||
|     - name: Generate dependency graph | ||||
|       if: ${{ inputs.dependency-graph == 'generate-and-submit' || inputs.dependency-graph == 'generate-and-upload' }} | ||||
|       uses: gradle/actions/setup-gradle@v3.1.0 | ||||
|       with: | ||||
|         dependency-graph: ${{ inputs.dependency-graph }} | ||||
|         dependency-graph-continue-on-failure: false | ||||
|         gradle-version: ${{ inputs.gradle-version }} | ||||
|         build-root-directory: ${{ inputs.build-root-directory }} | ||||
|         cache-encryption-key: ${{ inputs.cache-encryption-key }} | ||||
|         build-scan-publish: ${{ inputs.build-scan-publish }} | ||||
|         build-scan-terms-of-service-url: ${{ inputs.build-scan-terms-of-service-url }} | ||||
|         build-scan-terms-of-service-agree: ${{ inputs.build-scan-terms-of-service-agree }} | ||||
|         artifact-retention-days: 1 | ||||
|         arguments: | | ||||
|           -Dorg.gradle.configureondemand=false | ||||
|           -Dorg.gradle.dependency.verification=off | ||||
|           -Dorg.gradle.unsafe.isolated-projects=false | ||||
|           :ForceDependencyResolutionPlugin_resolveAllDependencies | ||||
|           ${{ inputs.additional-arguments }} | ||||
|     - name: Download and submit dependency graph | ||||
|       if: ${{ inputs.dependency-graph == 'download-and-submit' }} | ||||
|       uses: gradle/actions/setup-gradle@v3.1.0 | ||||
|       with: | ||||
|         dependency-graph: download-and-submit | ||||
|         dependency-graph-continue-on-failure: false | ||||
|         cache-disabled: true | ||||
|  | ||||
							
								
								
									
										196360
									
								
								dist/dependency-submission/main/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										196360
									
								
								dist/dependency-submission/main/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/dependency-submission/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								dist/dependency-submission/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										148513
									
								
								dist/dependency-submission/post/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										148513
									
								
								dist/dependency-submission/post/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/dependency-submission/post/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								dist/dependency-submission/post/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										223535
									
								
								dist/setup-gradle/main/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										223535
									
								
								dist/setup-gradle/main/index.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								dist/setup-gradle/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								dist/setup-gradle/main/index.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user