mirror of
				https://hub.gitmirror.com/https://github.com/gradle/gradle-build-action
				synced 2025-11-04 12:00:09 +08:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "main" and "v1" have entirely different histories.
		
	
	
		
	
		
							
								
								
									
										3
									
								
								.eslintignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.eslintignore
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					dist/
 | 
				
			||||||
 | 
					lib/
 | 
				
			||||||
 | 
					node_modules/
 | 
				
			||||||
							
								
								
									
										52
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "plugins": ["jest", "@typescript-eslint"],
 | 
				
			||||||
 | 
					    "extends": ["plugin:github/recommended"],
 | 
				
			||||||
 | 
					    "parser": "@typescript-eslint/parser",
 | 
				
			||||||
 | 
					    "parserOptions": {
 | 
				
			||||||
 | 
					      "ecmaVersion": 9,
 | 
				
			||||||
 | 
					      "sourceType": "module",
 | 
				
			||||||
 | 
					      "project": "./tsconfig.json"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "rules": {
 | 
				
			||||||
 | 
					      "eslint-comments/no-use": "off",
 | 
				
			||||||
 | 
					      "import/no-namespace": "off",
 | 
				
			||||||
 | 
					      "no-unused-vars": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-unused-vars": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/explicit-member-accessibility": ["error", {"accessibility": "no-public"}],
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-require-imports": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/array-type": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/await-thenable": "error",
 | 
				
			||||||
 | 
					      "camelcase": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
 | 
				
			||||||
 | 
					      "@typescript-eslint/func-call-spacing": ["error", "never"],
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-array-constructor": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-empty-interface": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-explicit-any": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-extraneous-class": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-for-in-array": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-inferrable-types": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-misused-new": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-namespace": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-non-null-assertion": "warn",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-unnecessary-qualifier": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-unnecessary-type-assertion": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-useless-constructor": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/no-var-requires": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/prefer-for-of": "warn",
 | 
				
			||||||
 | 
					      "@typescript-eslint/prefer-function-type": "warn",
 | 
				
			||||||
 | 
					      "@typescript-eslint/prefer-includes": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/prefer-string-starts-ends-with": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/promise-function-async": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/require-array-sort-compare": ["error", {"ignoreStringArrays":  true}],
 | 
				
			||||||
 | 
					      "@typescript-eslint/restrict-plus-operands": "error",
 | 
				
			||||||
 | 
					      "semi": "off",
 | 
				
			||||||
 | 
					      "@typescript-eslint/semi": ["error", "never"],
 | 
				
			||||||
 | 
					      "@typescript-eslint/type-annotation-spacing": "error",
 | 
				
			||||||
 | 
					      "@typescript-eslint/unbound-method": "error"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "env": {
 | 
				
			||||||
 | 
					      "node": true,
 | 
				
			||||||
 | 
					      "es6": true,
 | 
				
			||||||
 | 
					      "jest/globals": true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
							
								
								
									
										3
									
								
								.github/dco.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.github/dco.yml
									
									
									
									
										vendored
									
									
								
							@ -1,3 +0,0 @@
 | 
				
			|||||||
# Disable sign-off checking for members of the Gradle GitHub organization
 | 
					 | 
				
			||||||
require:
 | 
					 | 
				
			||||||
  members: false
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										249
									
								
								.github/workflow-samples/gradle-plugin/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										249
									
								
								.github/workflow-samples/gradle-plugin/gradlew
									
									
									
									
										vendored
									
									
								
							@ -1,249 +0,0 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 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.
 | 
					 | 
				
			||||||
# You may obtain a copy of the License at
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
# See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
# limitations under the License.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Gradle start up script for POSIX generated by Gradle.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for running:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
 | 
					 | 
				
			||||||
#       noncompliant, but you have some other compliant shell such as ksh or
 | 
					 | 
				
			||||||
#       bash, then to run this script, type that shell name before the whole
 | 
					 | 
				
			||||||
#       command line, like:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#           ksh Gradle
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Busybox and similar reduced shells will NOT work, because this script
 | 
					 | 
				
			||||||
#       requires all of these POSIX shell features:
 | 
					 | 
				
			||||||
#         * functions;
 | 
					 | 
				
			||||||
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
 | 
					 | 
				
			||||||
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
 | 
					 | 
				
			||||||
#         * compound commands having a testable exit status, especially «case»;
 | 
					 | 
				
			||||||
#         * various built-in commands including «command», «set», and «ulimit».
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for patching:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (2) This script targets any POSIX shell, so it avoids extensions provided
 | 
					 | 
				
			||||||
#       by Bash, Ksh, etc; in particular arrays are avoided.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       The "traditional" practice of packing multiple parameters into a
 | 
					 | 
				
			||||||
#       space-separated string is a well documented source of bugs and security
 | 
					 | 
				
			||||||
#       problems, so this is (mostly) avoided, by progressively accumulating
 | 
					 | 
				
			||||||
#       options in "$@", and eventually passing that to Java.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
 | 
					 | 
				
			||||||
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
 | 
					 | 
				
			||||||
#       see the in-line comments for details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       There are tweaks for specific operating systems such as AIX, CygWin,
 | 
					 | 
				
			||||||
#       Darwin, MinGW, and NonStop.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (3) This script is generated from the Groovy template
 | 
					 | 
				
			||||||
#       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/.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Attempt to set APP_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Resolve links: $0 may be a link
 | 
					 | 
				
			||||||
app_path=$0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Need this for daisy-chained symlinks.
 | 
					 | 
				
			||||||
while
 | 
					 | 
				
			||||||
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
 | 
					 | 
				
			||||||
    [ -h "$app_path" ]
 | 
					 | 
				
			||||||
do
 | 
					 | 
				
			||||||
    ls=$( ls -ld "$app_path" )
 | 
					 | 
				
			||||||
    link=${ls#*' -> '}
 | 
					 | 
				
			||||||
    case $link in             #(
 | 
					 | 
				
			||||||
      /*)   app_path=$link ;; #(
 | 
					 | 
				
			||||||
      *)    app_path=$APP_HOME$link ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This is normally unused
 | 
					 | 
				
			||||||
# 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 "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
					 | 
				
			||||||
MAX_FD=maximum
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
warn () {
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
die () {
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# OS specific support (must be 'true' or 'false').
 | 
					 | 
				
			||||||
cygwin=false
 | 
					 | 
				
			||||||
msys=false
 | 
					 | 
				
			||||||
darwin=false
 | 
					 | 
				
			||||||
nonstop=false
 | 
					 | 
				
			||||||
case "$( uname )" in                #(
 | 
					 | 
				
			||||||
  CYGWIN* )         cygwin=true  ;; #(
 | 
					 | 
				
			||||||
  Darwin* )         darwin=true  ;; #(
 | 
					 | 
				
			||||||
  MSYS* | MINGW* )  msys=true    ;; #(
 | 
					 | 
				
			||||||
  NONSTOP* )        nonstop=true ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Determine the Java command to use to start the JVM.
 | 
					 | 
				
			||||||
if [ -n "$JAVA_HOME" ] ; then
 | 
					 | 
				
			||||||
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
					 | 
				
			||||||
        # IBM's JDK on AIX uses strange locations for the executables
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/jre/sh/java
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/bin/java
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if [ ! -x "$JAVACMD" ] ; then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    JAVACMD=java
 | 
					 | 
				
			||||||
    if ! command -v java >/dev/null 2>&1
 | 
					 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Increase the maximum file descriptors if we can.
 | 
					 | 
				
			||||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
 | 
					 | 
				
			||||||
    case $MAX_FD in #(
 | 
					 | 
				
			||||||
      max*)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        MAX_FD=$( ulimit -H -n ) ||
 | 
					 | 
				
			||||||
            warn "Could not query maximum file descriptor limit"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    case $MAX_FD in  #(
 | 
					 | 
				
			||||||
      '' | soft) :;; #(
 | 
					 | 
				
			||||||
      *)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        ulimit -n "$MAX_FD" ||
 | 
					 | 
				
			||||||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command, stacking in reverse order:
 | 
					 | 
				
			||||||
#   * args from the command line
 | 
					 | 
				
			||||||
#   * the main class name
 | 
					 | 
				
			||||||
#   * -classpath
 | 
					 | 
				
			||||||
#   * -D...appname settings
 | 
					 | 
				
			||||||
#   * --module-path (only if needed)
 | 
					 | 
				
			||||||
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 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" )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
					 | 
				
			||||||
    for arg do
 | 
					 | 
				
			||||||
        if
 | 
					 | 
				
			||||||
            case $arg in                                #(
 | 
					 | 
				
			||||||
              -*)   false ;;                            # don't mess with options #(
 | 
					 | 
				
			||||||
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
 | 
					 | 
				
			||||||
                    [ -e "$t" ] ;;                      #(
 | 
					 | 
				
			||||||
              *)    false ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
        then
 | 
					 | 
				
			||||||
            arg=$( cygpath --path --ignore --mixed "$arg" )
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        # Roll the args list around exactly as many times as the number of
 | 
					 | 
				
			||||||
        # args, so each arg winds up back in the position where it started, but
 | 
					 | 
				
			||||||
        # possibly modified.
 | 
					 | 
				
			||||||
        #
 | 
					 | 
				
			||||||
        # NB: a `for` loop captures its iteration list before it begins, so
 | 
					 | 
				
			||||||
        # changing the positional parameters here affects neither the number of
 | 
					 | 
				
			||||||
        # iterations, nor the values presented in `arg`.
 | 
					 | 
				
			||||||
        shift                   # remove old arg
 | 
					 | 
				
			||||||
        set -- "$@" "$arg"      # push replacement arg
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					 | 
				
			||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command:
 | 
					 | 
				
			||||||
#   * 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" \
 | 
					 | 
				
			||||||
        -classpath "$CLASSPATH" \
 | 
					 | 
				
			||||||
        org.gradle.wrapper.GradleWrapperMain \
 | 
					 | 
				
			||||||
        "$@"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Stop when "xargs" is not available.
 | 
					 | 
				
			||||||
if ! command -v xargs >/dev/null 2>&1
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    die "xargs is not available"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use "xargs" to parse quoted args.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# In Bash we could simply go:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
 | 
					 | 
				
			||||||
#   set -- "${ARGS[@]}" "$@"
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# but POSIX shell has neither arrays nor command substitution, so instead we
 | 
					 | 
				
			||||||
# post-process each arg (as a line of input to sed) to backslash-escape any
 | 
					 | 
				
			||||||
# character that might be a shell metacharacter, then use eval to reverse
 | 
					 | 
				
			||||||
# that process (while maintaining the separation between arguments), and wrap
 | 
					 | 
				
			||||||
# the whole thing up as a single "set" statement.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This will of course break if any of these variables contains a newline or
 | 
					 | 
				
			||||||
# an unmatched quote.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eval "set -- $(
 | 
					 | 
				
			||||||
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
 | 
					 | 
				
			||||||
        xargs -n1 |
 | 
					 | 
				
			||||||
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
 | 
					 | 
				
			||||||
        tr '\n' ' '
 | 
					 | 
				
			||||||
    )" '"$@"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
exec "$JAVACMD" "$@"
 | 
					 | 
				
			||||||
@ -1,60 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * 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,57 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * This Java source file was generated by the Gradle 'init' task.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
package org.example.gradle.plugin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.io.File;
 | 
					 | 
				
			||||||
import java.io.IOException;
 | 
					 | 
				
			||||||
import java.io.Writer;
 | 
					 | 
				
			||||||
import java.io.FileWriter;
 | 
					 | 
				
			||||||
import java.nio.file.Files;
 | 
					 | 
				
			||||||
import org.gradle.testkit.runner.GradleRunner;
 | 
					 | 
				
			||||||
import org.gradle.testkit.runner.BuildResult;
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.io.TempDir;
 | 
					 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.*;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * A simple functional test for the 'org.example.gradle.plugin.greeting' plugin.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
class GradlePluginPluginFunctionalTest {
 | 
					 | 
				
			||||||
    @TempDir
 | 
					 | 
				
			||||||
    File projectDir;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private File getBuildFile() {
 | 
					 | 
				
			||||||
        return new File(projectDir, "build.gradle");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private File getSettingsFile() {
 | 
					 | 
				
			||||||
        return new File(projectDir, "settings.gradle");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test void canRunTaskWithGradle691() throws IOException {
 | 
					 | 
				
			||||||
        writeString(getSettingsFile(), "");
 | 
					 | 
				
			||||||
        writeString(getBuildFile(),
 | 
					 | 
				
			||||||
            "plugins {" +
 | 
					 | 
				
			||||||
            "  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.gradle.plugin.greeting'"));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void writeString(File file, String string) throws IOException {
 | 
					 | 
				
			||||||
        try (Writer writer = new FileWriter(file)) {
 | 
					 | 
				
			||||||
            writer.write(string);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,19 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * This Java source file was generated by the Gradle 'init' task.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
package org.example.gradle.plugin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.gradle.api.Project;
 | 
					 | 
				
			||||||
import org.gradle.api.Plugin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * A simple 'hello world' plugin.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
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.gradle.plugin.greeting'"));
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,23 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * This Java source file was generated by the Gradle 'init' task.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
package org.example.gradle.plugin;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.gradle.testfixtures.ProjectBuilder;
 | 
					 | 
				
			||||||
import org.gradle.api.Project;
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.*;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 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.gradle.plugin.greeting");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Verify the result
 | 
					 | 
				
			||||||
        assertNotNull(project.getTasks().findByName("greeting"));
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										22
									
								
								.github/workflow-samples/groovy-dsl/build.gradle
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflow-samples/groovy-dsl/build.gradle
									
									
									
									
										vendored
									
									
								
							@ -1,22 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id 'java'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
repositories {
 | 
					 | 
				
			||||||
    mavenCentral()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
dependencies {
 | 
					 | 
				
			||||||
    testImplementation('junit:junit:4.13.2')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tasks.named("test").configure {
 | 
					 | 
				
			||||||
    // Write marker file so we can detect if task was configured
 | 
					 | 
				
			||||||
    file("task-configured.txt").text = "true"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    doLast {
 | 
					 | 
				
			||||||
        if (System.properties.verifyCachedBuild) {
 | 
					 | 
				
			||||||
            throw new RuntimeException("Build was not cached: unexpected execution of test task")
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
org.gradle.caching=true
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										249
									
								
								.github/workflow-samples/groovy-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										249
									
								
								.github/workflow-samples/groovy-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							@ -1,249 +0,0 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 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.
 | 
					 | 
				
			||||||
# You may obtain a copy of the License at
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
# See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
# limitations under the License.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Gradle start up script for POSIX generated by Gradle.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for running:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
 | 
					 | 
				
			||||||
#       noncompliant, but you have some other compliant shell such as ksh or
 | 
					 | 
				
			||||||
#       bash, then to run this script, type that shell name before the whole
 | 
					 | 
				
			||||||
#       command line, like:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#           ksh Gradle
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Busybox and similar reduced shells will NOT work, because this script
 | 
					 | 
				
			||||||
#       requires all of these POSIX shell features:
 | 
					 | 
				
			||||||
#         * functions;
 | 
					 | 
				
			||||||
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
 | 
					 | 
				
			||||||
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
 | 
					 | 
				
			||||||
#         * compound commands having a testable exit status, especially «case»;
 | 
					 | 
				
			||||||
#         * various built-in commands including «command», «set», and «ulimit».
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for patching:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (2) This script targets any POSIX shell, so it avoids extensions provided
 | 
					 | 
				
			||||||
#       by Bash, Ksh, etc; in particular arrays are avoided.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       The "traditional" practice of packing multiple parameters into a
 | 
					 | 
				
			||||||
#       space-separated string is a well documented source of bugs and security
 | 
					 | 
				
			||||||
#       problems, so this is (mostly) avoided, by progressively accumulating
 | 
					 | 
				
			||||||
#       options in "$@", and eventually passing that to Java.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
 | 
					 | 
				
			||||||
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
 | 
					 | 
				
			||||||
#       see the in-line comments for details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       There are tweaks for specific operating systems such as AIX, CygWin,
 | 
					 | 
				
			||||||
#       Darwin, MinGW, and NonStop.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (3) This script is generated from the Groovy template
 | 
					 | 
				
			||||||
#       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/.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Attempt to set APP_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Resolve links: $0 may be a link
 | 
					 | 
				
			||||||
app_path=$0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Need this for daisy-chained symlinks.
 | 
					 | 
				
			||||||
while
 | 
					 | 
				
			||||||
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
 | 
					 | 
				
			||||||
    [ -h "$app_path" ]
 | 
					 | 
				
			||||||
do
 | 
					 | 
				
			||||||
    ls=$( ls -ld "$app_path" )
 | 
					 | 
				
			||||||
    link=${ls#*' -> '}
 | 
					 | 
				
			||||||
    case $link in             #(
 | 
					 | 
				
			||||||
      /*)   app_path=$link ;; #(
 | 
					 | 
				
			||||||
      *)    app_path=$APP_HOME$link ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This is normally unused
 | 
					 | 
				
			||||||
# 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 "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
					 | 
				
			||||||
MAX_FD=maximum
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
warn () {
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
die () {
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# OS specific support (must be 'true' or 'false').
 | 
					 | 
				
			||||||
cygwin=false
 | 
					 | 
				
			||||||
msys=false
 | 
					 | 
				
			||||||
darwin=false
 | 
					 | 
				
			||||||
nonstop=false
 | 
					 | 
				
			||||||
case "$( uname )" in                #(
 | 
					 | 
				
			||||||
  CYGWIN* )         cygwin=true  ;; #(
 | 
					 | 
				
			||||||
  Darwin* )         darwin=true  ;; #(
 | 
					 | 
				
			||||||
  MSYS* | MINGW* )  msys=true    ;; #(
 | 
					 | 
				
			||||||
  NONSTOP* )        nonstop=true ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Determine the Java command to use to start the JVM.
 | 
					 | 
				
			||||||
if [ -n "$JAVA_HOME" ] ; then
 | 
					 | 
				
			||||||
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
					 | 
				
			||||||
        # IBM's JDK on AIX uses strange locations for the executables
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/jre/sh/java
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/bin/java
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if [ ! -x "$JAVACMD" ] ; then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    JAVACMD=java
 | 
					 | 
				
			||||||
    if ! command -v java >/dev/null 2>&1
 | 
					 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Increase the maximum file descriptors if we can.
 | 
					 | 
				
			||||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
 | 
					 | 
				
			||||||
    case $MAX_FD in #(
 | 
					 | 
				
			||||||
      max*)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        MAX_FD=$( ulimit -H -n ) ||
 | 
					 | 
				
			||||||
            warn "Could not query maximum file descriptor limit"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    case $MAX_FD in  #(
 | 
					 | 
				
			||||||
      '' | soft) :;; #(
 | 
					 | 
				
			||||||
      *)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        ulimit -n "$MAX_FD" ||
 | 
					 | 
				
			||||||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command, stacking in reverse order:
 | 
					 | 
				
			||||||
#   * args from the command line
 | 
					 | 
				
			||||||
#   * the main class name
 | 
					 | 
				
			||||||
#   * -classpath
 | 
					 | 
				
			||||||
#   * -D...appname settings
 | 
					 | 
				
			||||||
#   * --module-path (only if needed)
 | 
					 | 
				
			||||||
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 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" )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
					 | 
				
			||||||
    for arg do
 | 
					 | 
				
			||||||
        if
 | 
					 | 
				
			||||||
            case $arg in                                #(
 | 
					 | 
				
			||||||
              -*)   false ;;                            # don't mess with options #(
 | 
					 | 
				
			||||||
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
 | 
					 | 
				
			||||||
                    [ -e "$t" ] ;;                      #(
 | 
					 | 
				
			||||||
              *)    false ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
        then
 | 
					 | 
				
			||||||
            arg=$( cygpath --path --ignore --mixed "$arg" )
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        # Roll the args list around exactly as many times as the number of
 | 
					 | 
				
			||||||
        # args, so each arg winds up back in the position where it started, but
 | 
					 | 
				
			||||||
        # possibly modified.
 | 
					 | 
				
			||||||
        #
 | 
					 | 
				
			||||||
        # NB: a `for` loop captures its iteration list before it begins, so
 | 
					 | 
				
			||||||
        # changing the positional parameters here affects neither the number of
 | 
					 | 
				
			||||||
        # iterations, nor the values presented in `arg`.
 | 
					 | 
				
			||||||
        shift                   # remove old arg
 | 
					 | 
				
			||||||
        set -- "$@" "$arg"      # push replacement arg
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					 | 
				
			||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command:
 | 
					 | 
				
			||||||
#   * 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" \
 | 
					 | 
				
			||||||
        -classpath "$CLASSPATH" \
 | 
					 | 
				
			||||||
        org.gradle.wrapper.GradleWrapperMain \
 | 
					 | 
				
			||||||
        "$@"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Stop when "xargs" is not available.
 | 
					 | 
				
			||||||
if ! command -v xargs >/dev/null 2>&1
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    die "xargs is not available"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use "xargs" to parse quoted args.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# In Bash we could simply go:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
 | 
					 | 
				
			||||||
#   set -- "${ARGS[@]}" "$@"
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# but POSIX shell has neither arrays nor command substitution, so instead we
 | 
					 | 
				
			||||||
# post-process each arg (as a line of input to sed) to backslash-escape any
 | 
					 | 
				
			||||||
# character that might be a shell metacharacter, then use eval to reverse
 | 
					 | 
				
			||||||
# that process (while maintaining the separation between arguments), and wrap
 | 
					 | 
				
			||||||
# the whole thing up as a single "set" statement.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This will of course break if any of these variables contains a newline or
 | 
					 | 
				
			||||||
# an unmatched quote.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eval "set -- $(
 | 
					 | 
				
			||||||
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
 | 
					 | 
				
			||||||
        xargs -n1 |
 | 
					 | 
				
			||||||
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
 | 
					 | 
				
			||||||
        tr '\n' ' '
 | 
					 | 
				
			||||||
    )" '"$@"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
exec "$JAVACMD" "$@"
 | 
					 | 
				
			||||||
							
								
								
									
										92
									
								
								.github/workflow-samples/groovy-dsl/gradlew.bat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										92
									
								
								.github/workflow-samples/groovy-dsl/gradlew.bat
									
									
									
									
										vendored
									
									
								
							@ -1,92 +0,0 @@
 | 
				
			|||||||
@rem
 | 
					 | 
				
			||||||
@rem Copyright 2015 the original author or authors.
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 | 
				
			||||||
@rem you may not use this file except in compliance with the License.
 | 
					 | 
				
			||||||
@rem You may obtain a copy of the License at
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem      https://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
@rem See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
@rem limitations under the License.
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@if "%DEBUG%"=="" @echo off
 | 
					 | 
				
			||||||
@rem ##########################################################################
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem  Gradle startup script for Windows
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem ##########################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Set local scope for the variables with windows NT shell
 | 
					 | 
				
			||||||
if "%OS%"=="Windows_NT" setlocal
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set DIRNAME=%~dp0
 | 
					 | 
				
			||||||
if "%DIRNAME%"=="" set DIRNAME=.
 | 
					 | 
				
			||||||
@rem This is normally unused
 | 
					 | 
				
			||||||
set APP_BASE_NAME=%~n0
 | 
					 | 
				
			||||||
set APP_HOME=%DIRNAME%
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
 | 
					 | 
				
			||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					 | 
				
			||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Find java.exe
 | 
					 | 
				
			||||||
if defined JAVA_HOME goto findJavaFromJavaHome
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
goto fail
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:findJavaFromJavaHome
 | 
					 | 
				
			||||||
set JAVA_HOME=%JAVA_HOME:"=%
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:end
 | 
					 | 
				
			||||||
@rem End local scope for the variables with windows NT shell
 | 
					 | 
				
			||||||
if %ERRORLEVEL% equ 0 goto mainEnd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:fail
 | 
					 | 
				
			||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
					 | 
				
			||||||
rem the _cmd.exe /c_ return code!
 | 
					 | 
				
			||||||
set EXIT_CODE=%ERRORLEVEL%
 | 
					 | 
				
			||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
 | 
					 | 
				
			||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
 | 
					 | 
				
			||||||
exit /b %EXIT_CODE%
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:mainEnd
 | 
					 | 
				
			||||||
if "%OS%"=="Windows_NT" endlocal
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:omega
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id "com.gradle.enterprise" version "3.16.2"
 | 
					 | 
				
			||||||
    id "com.gradle.common-custom-user-data-gradle-plugin" version "1.13"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gradleEnterprise {
 | 
					 | 
				
			||||||
    buildScan {
 | 
					 | 
				
			||||||
        termsOfServiceUrl = "https://gradle.com/terms-of-service"
 | 
					 | 
				
			||||||
        termsOfServiceAgree = "yes"
 | 
					 | 
				
			||||||
        publishAlways()
 | 
					 | 
				
			||||||
        uploadInBackground = false
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
rootProject.name = 'groovy-dsl'
 | 
					 | 
				
			||||||
@ -1,17 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id 'java'
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
java {
 | 
					 | 
				
			||||||
    toolchain {
 | 
					 | 
				
			||||||
        languageVersion = JavaLanguageVersion.of(16)
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
repositories {
 | 
					 | 
				
			||||||
    mavenCentral()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
dependencies {
 | 
					 | 
				
			||||||
    testImplementation('junit:junit:4.13.2')
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
org.gradle.caching=true
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										249
									
								
								.github/workflow-samples/java-toolchain/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										249
									
								
								.github/workflow-samples/java-toolchain/gradlew
									
									
									
									
										vendored
									
									
								
							@ -1,249 +0,0 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 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.
 | 
					 | 
				
			||||||
# You may obtain a copy of the License at
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
# See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
# limitations under the License.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Gradle start up script for POSIX generated by Gradle.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for running:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
 | 
					 | 
				
			||||||
#       noncompliant, but you have some other compliant shell such as ksh or
 | 
					 | 
				
			||||||
#       bash, then to run this script, type that shell name before the whole
 | 
					 | 
				
			||||||
#       command line, like:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#           ksh Gradle
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Busybox and similar reduced shells will NOT work, because this script
 | 
					 | 
				
			||||||
#       requires all of these POSIX shell features:
 | 
					 | 
				
			||||||
#         * functions;
 | 
					 | 
				
			||||||
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
 | 
					 | 
				
			||||||
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
 | 
					 | 
				
			||||||
#         * compound commands having a testable exit status, especially «case»;
 | 
					 | 
				
			||||||
#         * various built-in commands including «command», «set», and «ulimit».
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for patching:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (2) This script targets any POSIX shell, so it avoids extensions provided
 | 
					 | 
				
			||||||
#       by Bash, Ksh, etc; in particular arrays are avoided.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       The "traditional" practice of packing multiple parameters into a
 | 
					 | 
				
			||||||
#       space-separated string is a well documented source of bugs and security
 | 
					 | 
				
			||||||
#       problems, so this is (mostly) avoided, by progressively accumulating
 | 
					 | 
				
			||||||
#       options in "$@", and eventually passing that to Java.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
 | 
					 | 
				
			||||||
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
 | 
					 | 
				
			||||||
#       see the in-line comments for details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       There are tweaks for specific operating systems such as AIX, CygWin,
 | 
					 | 
				
			||||||
#       Darwin, MinGW, and NonStop.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (3) This script is generated from the Groovy template
 | 
					 | 
				
			||||||
#       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/.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Attempt to set APP_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Resolve links: $0 may be a link
 | 
					 | 
				
			||||||
app_path=$0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Need this for daisy-chained symlinks.
 | 
					 | 
				
			||||||
while
 | 
					 | 
				
			||||||
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
 | 
					 | 
				
			||||||
    [ -h "$app_path" ]
 | 
					 | 
				
			||||||
do
 | 
					 | 
				
			||||||
    ls=$( ls -ld "$app_path" )
 | 
					 | 
				
			||||||
    link=${ls#*' -> '}
 | 
					 | 
				
			||||||
    case $link in             #(
 | 
					 | 
				
			||||||
      /*)   app_path=$link ;; #(
 | 
					 | 
				
			||||||
      *)    app_path=$APP_HOME$link ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This is normally unused
 | 
					 | 
				
			||||||
# 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 "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
					 | 
				
			||||||
MAX_FD=maximum
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
warn () {
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
die () {
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# OS specific support (must be 'true' or 'false').
 | 
					 | 
				
			||||||
cygwin=false
 | 
					 | 
				
			||||||
msys=false
 | 
					 | 
				
			||||||
darwin=false
 | 
					 | 
				
			||||||
nonstop=false
 | 
					 | 
				
			||||||
case "$( uname )" in                #(
 | 
					 | 
				
			||||||
  CYGWIN* )         cygwin=true  ;; #(
 | 
					 | 
				
			||||||
  Darwin* )         darwin=true  ;; #(
 | 
					 | 
				
			||||||
  MSYS* | MINGW* )  msys=true    ;; #(
 | 
					 | 
				
			||||||
  NONSTOP* )        nonstop=true ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Determine the Java command to use to start the JVM.
 | 
					 | 
				
			||||||
if [ -n "$JAVA_HOME" ] ; then
 | 
					 | 
				
			||||||
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
					 | 
				
			||||||
        # IBM's JDK on AIX uses strange locations for the executables
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/jre/sh/java
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/bin/java
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if [ ! -x "$JAVACMD" ] ; then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    JAVACMD=java
 | 
					 | 
				
			||||||
    if ! command -v java >/dev/null 2>&1
 | 
					 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Increase the maximum file descriptors if we can.
 | 
					 | 
				
			||||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
 | 
					 | 
				
			||||||
    case $MAX_FD in #(
 | 
					 | 
				
			||||||
      max*)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        MAX_FD=$( ulimit -H -n ) ||
 | 
					 | 
				
			||||||
            warn "Could not query maximum file descriptor limit"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    case $MAX_FD in  #(
 | 
					 | 
				
			||||||
      '' | soft) :;; #(
 | 
					 | 
				
			||||||
      *)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        ulimit -n "$MAX_FD" ||
 | 
					 | 
				
			||||||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command, stacking in reverse order:
 | 
					 | 
				
			||||||
#   * args from the command line
 | 
					 | 
				
			||||||
#   * the main class name
 | 
					 | 
				
			||||||
#   * -classpath
 | 
					 | 
				
			||||||
#   * -D...appname settings
 | 
					 | 
				
			||||||
#   * --module-path (only if needed)
 | 
					 | 
				
			||||||
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 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" )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
					 | 
				
			||||||
    for arg do
 | 
					 | 
				
			||||||
        if
 | 
					 | 
				
			||||||
            case $arg in                                #(
 | 
					 | 
				
			||||||
              -*)   false ;;                            # don't mess with options #(
 | 
					 | 
				
			||||||
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
 | 
					 | 
				
			||||||
                    [ -e "$t" ] ;;                      #(
 | 
					 | 
				
			||||||
              *)    false ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
        then
 | 
					 | 
				
			||||||
            arg=$( cygpath --path --ignore --mixed "$arg" )
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        # Roll the args list around exactly as many times as the number of
 | 
					 | 
				
			||||||
        # args, so each arg winds up back in the position where it started, but
 | 
					 | 
				
			||||||
        # possibly modified.
 | 
					 | 
				
			||||||
        #
 | 
					 | 
				
			||||||
        # NB: a `for` loop captures its iteration list before it begins, so
 | 
					 | 
				
			||||||
        # changing the positional parameters here affects neither the number of
 | 
					 | 
				
			||||||
        # iterations, nor the values presented in `arg`.
 | 
					 | 
				
			||||||
        shift                   # remove old arg
 | 
					 | 
				
			||||||
        set -- "$@" "$arg"      # push replacement arg
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					 | 
				
			||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command:
 | 
					 | 
				
			||||||
#   * 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" \
 | 
					 | 
				
			||||||
        -classpath "$CLASSPATH" \
 | 
					 | 
				
			||||||
        org.gradle.wrapper.GradleWrapperMain \
 | 
					 | 
				
			||||||
        "$@"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Stop when "xargs" is not available.
 | 
					 | 
				
			||||||
if ! command -v xargs >/dev/null 2>&1
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    die "xargs is not available"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use "xargs" to parse quoted args.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# In Bash we could simply go:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
 | 
					 | 
				
			||||||
#   set -- "${ARGS[@]}" "$@"
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# but POSIX shell has neither arrays nor command substitution, so instead we
 | 
					 | 
				
			||||||
# post-process each arg (as a line of input to sed) to backslash-escape any
 | 
					 | 
				
			||||||
# character that might be a shell metacharacter, then use eval to reverse
 | 
					 | 
				
			||||||
# that process (while maintaining the separation between arguments), and wrap
 | 
					 | 
				
			||||||
# the whole thing up as a single "set" statement.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This will of course break if any of these variables contains a newline or
 | 
					 | 
				
			||||||
# an unmatched quote.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eval "set -- $(
 | 
					 | 
				
			||||||
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
 | 
					 | 
				
			||||||
        xargs -n1 |
 | 
					 | 
				
			||||||
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
 | 
					 | 
				
			||||||
        tr '\n' ' '
 | 
					 | 
				
			||||||
    )" '"$@"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
exec "$JAVACMD" "$@"
 | 
					 | 
				
			||||||
@ -1,92 +0,0 @@
 | 
				
			|||||||
@rem
 | 
					 | 
				
			||||||
@rem Copyright 2015 the original author or authors.
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 | 
				
			||||||
@rem you may not use this file except in compliance with the License.
 | 
					 | 
				
			||||||
@rem You may obtain a copy of the License at
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem      https://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
@rem See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
@rem limitations under the License.
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@if "%DEBUG%"=="" @echo off
 | 
					 | 
				
			||||||
@rem ##########################################################################
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem  Gradle startup script for Windows
 | 
					 | 
				
			||||||
@rem
 | 
					 | 
				
			||||||
@rem ##########################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Set local scope for the variables with windows NT shell
 | 
					 | 
				
			||||||
if "%OS%"=="Windows_NT" setlocal
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
set DIRNAME=%~dp0
 | 
					 | 
				
			||||||
if "%DIRNAME%"=="" set DIRNAME=.
 | 
					 | 
				
			||||||
@rem This is normally unused
 | 
					 | 
				
			||||||
set APP_BASE_NAME=%~n0
 | 
					 | 
				
			||||||
set APP_HOME=%DIRNAME%
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
 | 
					 | 
				
			||||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					 | 
				
			||||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@rem Find java.exe
 | 
					 | 
				
			||||||
if defined JAVA_HOME goto findJavaFromJavaHome
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
goto fail
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:findJavaFromJavaHome
 | 
					 | 
				
			||||||
set JAVA_HOME=%JAVA_HOME:"=%
 | 
					 | 
				
			||||||
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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:end
 | 
					 | 
				
			||||||
@rem End local scope for the variables with windows NT shell
 | 
					 | 
				
			||||||
if %ERRORLEVEL% equ 0 goto mainEnd
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:fail
 | 
					 | 
				
			||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
					 | 
				
			||||||
rem the _cmd.exe /c_ return code!
 | 
					 | 
				
			||||||
set EXIT_CODE=%ERRORLEVEL%
 | 
					 | 
				
			||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
 | 
					 | 
				
			||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
 | 
					 | 
				
			||||||
exit /b %EXIT_CODE%
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:mainEnd
 | 
					 | 
				
			||||||
if "%OS%"=="Windows_NT" endlocal
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
:omega
 | 
					 | 
				
			||||||
@ -1,5 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id("org.gradle.toolchains.foojay-resolver-convention") version("0.7.0")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rootProject.name = 'basic'
 | 
					 | 
				
			||||||
@ -1,29 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    `java-library`
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
repositories {
 | 
					 | 
				
			||||||
    mavenCentral()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
dependencies {
 | 
					 | 
				
			||||||
    api("org.apache.commons:commons-math3:3.6.1")
 | 
					 | 
				
			||||||
    implementation("com.google.guava:guava:33.1.0-jre")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tasks.test {
 | 
					 | 
				
			||||||
    useJUnitPlatform()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
tasks.named("test").configure {
 | 
					 | 
				
			||||||
    // Write marker file so we can detect if task was configured
 | 
					 | 
				
			||||||
    file("task-configured.txt").writeText("true")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    doLast {
 | 
					 | 
				
			||||||
        if (System.getProperties().containsKey("verifyCachedBuild")) {
 | 
					 | 
				
			||||||
            throw RuntimeException("Build was not cached: unexpected execution of test task")
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
org.gradle.caching=true
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							@ -1,8 +0,0 @@
 | 
				
			|||||||
distributionBase=GRADLE_USER_HOME
 | 
					 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					 | 
				
			||||||
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
 | 
					 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
 | 
					 | 
				
			||||||
networkTimeout=10000
 | 
					 | 
				
			||||||
validateDistributionUrl=true
 | 
					 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					 | 
				
			||||||
							
								
								
									
										249
									
								
								.github/workflow-samples/kotlin-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										249
									
								
								.github/workflow-samples/kotlin-dsl/gradlew
									
									
									
									
										vendored
									
									
								
							@ -1,249 +0,0 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# 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.
 | 
					 | 
				
			||||||
# You may obtain a copy of the License at
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#      https://www.apache.org/licenses/LICENSE-2.0
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# Unless required by applicable law or agreed to in writing, software
 | 
					 | 
				
			||||||
# distributed under the License is distributed on an "AS IS" BASIS,
 | 
					 | 
				
			||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
					 | 
				
			||||||
# See the License for the specific language governing permissions and
 | 
					 | 
				
			||||||
# limitations under the License.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Gradle start up script for POSIX generated by Gradle.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for running:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
 | 
					 | 
				
			||||||
#       noncompliant, but you have some other compliant shell such as ksh or
 | 
					 | 
				
			||||||
#       bash, then to run this script, type that shell name before the whole
 | 
					 | 
				
			||||||
#       command line, like:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#           ksh Gradle
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Busybox and similar reduced shells will NOT work, because this script
 | 
					 | 
				
			||||||
#       requires all of these POSIX shell features:
 | 
					 | 
				
			||||||
#         * functions;
 | 
					 | 
				
			||||||
#         * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
 | 
					 | 
				
			||||||
#           «${var#prefix}», «${var%suffix}», and «$( cmd )»;
 | 
					 | 
				
			||||||
#         * compound commands having a testable exit status, especially «case»;
 | 
					 | 
				
			||||||
#         * various built-in commands including «command», «set», and «ulimit».
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   Important for patching:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (2) This script targets any POSIX shell, so it avoids extensions provided
 | 
					 | 
				
			||||||
#       by Bash, Ksh, etc; in particular arrays are avoided.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       The "traditional" practice of packing multiple parameters into a
 | 
					 | 
				
			||||||
#       space-separated string is a well documented source of bugs and security
 | 
					 | 
				
			||||||
#       problems, so this is (mostly) avoided, by progressively accumulating
 | 
					 | 
				
			||||||
#       options in "$@", and eventually passing that to Java.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
 | 
					 | 
				
			||||||
#       and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
 | 
					 | 
				
			||||||
#       see the in-line comments for details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#       There are tweaks for specific operating systems such as AIX, CygWin,
 | 
					 | 
				
			||||||
#       Darwin, MinGW, and NonStop.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   (3) This script is generated from the Groovy template
 | 
					 | 
				
			||||||
#       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/.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
##############################################################################
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Attempt to set APP_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Resolve links: $0 may be a link
 | 
					 | 
				
			||||||
app_path=$0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Need this for daisy-chained symlinks.
 | 
					 | 
				
			||||||
while
 | 
					 | 
				
			||||||
    APP_HOME=${app_path%"${app_path##*/}"}  # leaves a trailing /; empty if no leading path
 | 
					 | 
				
			||||||
    [ -h "$app_path" ]
 | 
					 | 
				
			||||||
do
 | 
					 | 
				
			||||||
    ls=$( ls -ld "$app_path" )
 | 
					 | 
				
			||||||
    link=${ls#*' -> '}
 | 
					 | 
				
			||||||
    case $link in             #(
 | 
					 | 
				
			||||||
      /*)   app_path=$link ;; #(
 | 
					 | 
				
			||||||
      *)    app_path=$APP_HOME$link ;;
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# This is normally unused
 | 
					 | 
				
			||||||
# 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 "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
					 | 
				
			||||||
MAX_FD=maximum
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
warn () {
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
die () {
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    echo "$*"
 | 
					 | 
				
			||||||
    echo
 | 
					 | 
				
			||||||
    exit 1
 | 
					 | 
				
			||||||
} >&2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# OS specific support (must be 'true' or 'false').
 | 
					 | 
				
			||||||
cygwin=false
 | 
					 | 
				
			||||||
msys=false
 | 
					 | 
				
			||||||
darwin=false
 | 
					 | 
				
			||||||
nonstop=false
 | 
					 | 
				
			||||||
case "$( uname )" in                #(
 | 
					 | 
				
			||||||
  CYGWIN* )         cygwin=true  ;; #(
 | 
					 | 
				
			||||||
  Darwin* )         darwin=true  ;; #(
 | 
					 | 
				
			||||||
  MSYS* | MINGW* )  msys=true    ;; #(
 | 
					 | 
				
			||||||
  NONSTOP* )        nonstop=true ;;
 | 
					 | 
				
			||||||
esac
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Determine the Java command to use to start the JVM.
 | 
					 | 
				
			||||||
if [ -n "$JAVA_HOME" ] ; then
 | 
					 | 
				
			||||||
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
					 | 
				
			||||||
        # IBM's JDK on AIX uses strange locations for the executables
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/jre/sh/java
 | 
					 | 
				
			||||||
    else
 | 
					 | 
				
			||||||
        JAVACMD=$JAVA_HOME/bin/java
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    if [ ! -x "$JAVACMD" ] ; then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
    JAVACMD=java
 | 
					 | 
				
			||||||
    if ! command -v java >/dev/null 2>&1
 | 
					 | 
				
			||||||
    then
 | 
					 | 
				
			||||||
        die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Please set the JAVA_HOME variable in your environment to match the
 | 
					 | 
				
			||||||
location of your Java installation."
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Increase the maximum file descriptors if we can.
 | 
					 | 
				
			||||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
 | 
					 | 
				
			||||||
    case $MAX_FD in #(
 | 
					 | 
				
			||||||
      max*)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        MAX_FD=$( ulimit -H -n ) ||
 | 
					 | 
				
			||||||
            warn "Could not query maximum file descriptor limit"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
    case $MAX_FD in  #(
 | 
					 | 
				
			||||||
      '' | soft) :;; #(
 | 
					 | 
				
			||||||
      *)
 | 
					 | 
				
			||||||
        # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
 | 
					 | 
				
			||||||
        # shellcheck disable=SC2039,SC3045
 | 
					 | 
				
			||||||
        ulimit -n "$MAX_FD" ||
 | 
					 | 
				
			||||||
            warn "Could not set maximum file descriptor limit to $MAX_FD"
 | 
					 | 
				
			||||||
    esac
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command, stacking in reverse order:
 | 
					 | 
				
			||||||
#   * args from the command line
 | 
					 | 
				
			||||||
#   * the main class name
 | 
					 | 
				
			||||||
#   * -classpath
 | 
					 | 
				
			||||||
#   * -D...appname settings
 | 
					 | 
				
			||||||
#   * --module-path (only if needed)
 | 
					 | 
				
			||||||
#   * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# 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" )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
					 | 
				
			||||||
    for arg do
 | 
					 | 
				
			||||||
        if
 | 
					 | 
				
			||||||
            case $arg in                                #(
 | 
					 | 
				
			||||||
              -*)   false ;;                            # don't mess with options #(
 | 
					 | 
				
			||||||
              /?*)  t=${arg#/} t=/${t%%/*}              # looks like a POSIX filepath
 | 
					 | 
				
			||||||
                    [ -e "$t" ] ;;                      #(
 | 
					 | 
				
			||||||
              *)    false ;;
 | 
					 | 
				
			||||||
            esac
 | 
					 | 
				
			||||||
        then
 | 
					 | 
				
			||||||
            arg=$( cygpath --path --ignore --mixed "$arg" )
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        # Roll the args list around exactly as many times as the number of
 | 
					 | 
				
			||||||
        # args, so each arg winds up back in the position where it started, but
 | 
					 | 
				
			||||||
        # possibly modified.
 | 
					 | 
				
			||||||
        #
 | 
					 | 
				
			||||||
        # NB: a `for` loop captures its iteration list before it begins, so
 | 
					 | 
				
			||||||
        # changing the positional parameters here affects neither the number of
 | 
					 | 
				
			||||||
        # iterations, nor the values presented in `arg`.
 | 
					 | 
				
			||||||
        shift                   # remove old arg
 | 
					 | 
				
			||||||
        set -- "$@" "$arg"      # push replacement arg
 | 
					 | 
				
			||||||
    done
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
					 | 
				
			||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Collect all arguments for the java command:
 | 
					 | 
				
			||||||
#   * 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" \
 | 
					 | 
				
			||||||
        -classpath "$CLASSPATH" \
 | 
					 | 
				
			||||||
        org.gradle.wrapper.GradleWrapperMain \
 | 
					 | 
				
			||||||
        "$@"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Stop when "xargs" is not available.
 | 
					 | 
				
			||||||
if ! command -v xargs >/dev/null 2>&1
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
    die "xargs is not available"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Use "xargs" to parse quoted args.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# In Bash we could simply go:
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#   readarray ARGS < <( xargs -n1 <<<"$var" ) &&
 | 
					 | 
				
			||||||
#   set -- "${ARGS[@]}" "$@"
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# but POSIX shell has neither arrays nor command substitution, so instead we
 | 
					 | 
				
			||||||
# post-process each arg (as a line of input to sed) to backslash-escape any
 | 
					 | 
				
			||||||
# character that might be a shell metacharacter, then use eval to reverse
 | 
					 | 
				
			||||||
# that process (while maintaining the separation between arguments), and wrap
 | 
					 | 
				
			||||||
# the whole thing up as a single "set" statement.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
# This will of course break if any of these variables contains a newline or
 | 
					 | 
				
			||||||
# an unmatched quote.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
eval "set -- $(
 | 
					 | 
				
			||||||
        printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
 | 
					 | 
				
			||||||
        xargs -n1 |
 | 
					 | 
				
			||||||
        sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
 | 
					 | 
				
			||||||
        tr '\n' ' '
 | 
					 | 
				
			||||||
    )" '"$@"'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
exec "$JAVACMD" "$@"
 | 
					 | 
				
			||||||
@ -1,16 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id("com.gradle.enterprise") version "3.16.2"
 | 
					 | 
				
			||||||
    id("com.gradle.common-custom-user-data-gradle-plugin") version "1.13"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gradleEnterprise {
 | 
					 | 
				
			||||||
    buildScan {
 | 
					 | 
				
			||||||
        termsOfServiceUrl = "https://gradle.com/terms-of-service"
 | 
					 | 
				
			||||||
        termsOfServiceAgree = "yes"
 | 
					 | 
				
			||||||
        publishAlways()
 | 
					 | 
				
			||||||
        isUploadInBackground = false
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rootProject.name = "kotlin-dsl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * This Java source file was generated by the Gradle 'init' task.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
package com.example;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class Library {
 | 
					 | 
				
			||||||
    public boolean someLibraryMethod() {
 | 
					 | 
				
			||||||
        return true;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,14 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 * This Java source file was generated by the Gradle 'init' task.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
package com.example;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.*;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class LibraryTest {
 | 
					 | 
				
			||||||
    @Test void someLibraryMethodReturnsTrue() {
 | 
					 | 
				
			||||||
        Library classUnderTest = new Library();
 | 
					 | 
				
			||||||
        assertTrue(classUnderTest.someLibraryMethod(), "someLibraryMethod should return 'true'");
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										1
									
								
								.github/workflow-samples/no-ge/build.gradle
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflow-samples/no-ge/build.gradle
									
									
									
									
										vendored
									
									
								
							@ -1 +0,0 @@
 | 
				
			|||||||
// Required to keep dependabot happy
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
rootProject.name = 'no-ge'
 | 
					 | 
				
			||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id "com.gradle.build-scan" version "1.16"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
buildScan {
 | 
					 | 
				
			||||||
    termsOfServiceUrl = "https://gradle.com/terms-of-service"
 | 
					 | 
				
			||||||
    termsOfServiceAgree = "yes"
 | 
					 | 
				
			||||||
    publishAlways()
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,8 +0,0 @@
 | 
				
			|||||||
rootProject.name = 'no-wrapper'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
println "Using Gradle version: ${gradle.gradleVersion}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def gradleVersionCheck = System.properties.gradleVersionCheck
 | 
					 | 
				
			||||||
if (gradleVersionCheck && gradle.gradleVersion != gradleVersionCheck) {
 | 
					 | 
				
			||||||
    throw new RuntimeException("Got the wrong version: expected ${gradleVersionCheck} but was ${gradle.gradleVersion}")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,12 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id "com.gradle.build-scan" version "3.16.2"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gradleEnterprise {
 | 
					 | 
				
			||||||
    buildScan {
 | 
					 | 
				
			||||||
        termsOfServiceUrl = "https://gradle.com/terms-of-service"
 | 
					 | 
				
			||||||
        termsOfServiceAgree = "yes"
 | 
					 | 
				
			||||||
        publishAlways()
 | 
					 | 
				
			||||||
        uploadInBackground = false
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,8 +0,0 @@
 | 
				
			|||||||
rootProject.name = 'no-wrapper'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
println "Using Gradle version: ${gradle.gradleVersion}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def gradleVersionCheck = System.properties.gradleVersionCheck
 | 
					 | 
				
			||||||
if (gradleVersionCheck && gradle.gradleVersion != gradleVersionCheck) {
 | 
					 | 
				
			||||||
    throw new RuntimeException("Got the wrong version: expected ${gradleVersionCheck} but was ${gradle.gradleVersion}")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1 +0,0 @@
 | 
				
			|||||||
// Required to keep dependabot happy
 | 
					 | 
				
			||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
plugins {
 | 
					 | 
				
			||||||
    id "com.gradle.enterprise" version "3.16.2"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gradleEnterprise {
 | 
					 | 
				
			||||||
    buildScan {
 | 
					 | 
				
			||||||
        termsOfServiceUrl = "https://gradle.com/terms-of-service"
 | 
					 | 
				
			||||||
        termsOfServiceAgree = "yes"
 | 
					 | 
				
			||||||
        publishAlways()
 | 
					 | 
				
			||||||
        uploadInBackground = false
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rootProject.name = 'no-wrapper'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
println "Using Gradle version: ${gradle.gradleVersion}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def gradleVersionCheck = System.properties.gradleVersionCheck
 | 
					 | 
				
			||||||
if (gradleVersionCheck && gradle.gradleVersion != gradleVersionCheck) {
 | 
					 | 
				
			||||||
    throw new RuntimeException("Got the wrong version: expected ${gradleVersionCheck} but was ${gradle.gradleVersion}")
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										91
									
								
								.github/workflows/ci-full-check.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										91
									
								
								.github/workflows/ci-full-check.yml
									
									
									
									
										vendored
									
									
								
							@ -1,91 +0,0 @@
 | 
				
			|||||||
name: CI-full-check
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_dispatch:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  action-inputs:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-action-inputs.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}}-
 | 
					 | 
				
			||||||
							
								
								
									
										88
									
								
								.github/workflows/ci-quick-check.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										88
									
								
								.github/workflows/ci-quick-check.yml
									
									
									
									
										vendored
									
									
								
							@ -1,88 +0,0 @@
 | 
				
			|||||||
name: CI-quick-check
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_dispatch:
 | 
					 | 
				
			||||||
  push:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  action-inputs:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-action-inputs.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  caching-config:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-caching-config.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  dependency-graph:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-dependency-graph.yml
 | 
					 | 
				
			||||||
    permissions:
 | 
					 | 
				
			||||||
      contents: write
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  dependency-graph-failures:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-dependency-graph-failures.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  execution-with-caching:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-execution-with-caching.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  execution:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-execution.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-injection:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-inject-develocity.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_SOLUTIONS_ACCESS_TOKEN }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  provision-gradle-versions:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-provision-gradle-versions.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  restore-configuration-cache:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-restore-configuration-cache.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  restore-containerized-gradle-home:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-restore-containerized-gradle-home.yml
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  restore-custom-gradle-home:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-restore-custom-gradle-home.yml
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  restore-gradle-home:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-restore-gradle-home.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  restore-java-toolchain:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-restore-java-toolchain.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  sample-kotlin-dsl:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-sample-kotlin-dsl.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  sample-gradle-plugin:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-sample-gradle-plugin.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  toolchain-detection:
 | 
					 | 
				
			||||||
    uses: ./.github/workflows/integ-test-detect-java-toolchains.yml
 | 
					 | 
				
			||||||
    with:
 | 
					 | 
				
			||||||
      runner-os: '["ubuntu-latest"]'
 | 
					 | 
				
			||||||
							
								
								
									
										43
									
								
								.github/workflows/demo-failure-cases.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								.github/workflows/demo-failure-cases.yml
									
									
									
									
										vendored
									
									
								
							@ -1,43 +0,0 @@
 | 
				
			|||||||
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: ./
 | 
					 | 
				
			||||||
      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: ./
 | 
					 | 
				
			||||||
      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: ./
 | 
					 | 
				
			||||||
      continue-on-error: true
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        build-root-directory: .github/workflow-samples/no-wrapper
 | 
					 | 
				
			||||||
        arguments: help
 | 
					 | 
				
			||||||
        cache-disabled: yes
 | 
					 | 
				
			||||||
							
								
								
									
										71
									
								
								.github/workflows/demo-job-summary.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										71
									
								
								.github/workflows/demo-job-summary.yml
									
									
									
									
										vendored
									
									
								
							@ -1,71 +0,0 @@
 | 
				
			|||||||
name: Demo Job Summary, for Gradle builds
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_dispatch:
 | 
					 | 
				
			||||||
  push:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  many-gradle-builds:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew assemble
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project without Build Scan®
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew assemble check --no-scan
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project with Build Scan® publish failure
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew check -Dgradle.enterprise.url=https://not.valid.server
 | 
					 | 
				
			||||||
    - name: Build groovy-dsl project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew assemble
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project with multiple gradle invocations
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: | 
 | 
					 | 
				
			||||||
         ./gradlew tasks --no-daemon
 | 
					 | 
				
			||||||
         ./gradlew help check
 | 
					 | 
				
			||||||
    - name: Fail groovy-dsl project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      continue-on-error: true
 | 
					 | 
				
			||||||
      run: ./gradlew not-a-real-task
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  successful-builds-with-no-summary:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        add-job-summary: on-failure
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew assemble
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project without Build Scan®
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew assemble check --no-scan
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  pre-existing-gradle-home:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Pre-create Gradle User Home
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      run: |
 | 
					 | 
				
			||||||
        mkdir ~/.gradle
 | 
					 | 
				
			||||||
        mkdir ~/.gradle/caches
 | 
					 | 
				
			||||||
        touch ~/.gradle/caches/dummy.txt
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
    - name: Run build
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew assemble
 | 
					 | 
				
			||||||
							
								
								
									
										51
									
								
								.github/workflows/demo-pr-build-scan-comment.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								.github/workflows/demo-pr-build-scan-comment.yml
									
									
									
									
										vendored
									
									
								
							@ -1,51 +0,0 @@
 | 
				
			|||||||
name: Demo adding Build Scan® comment to PR
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  pull_request:
 | 
					 | 
				
			||||||
    types: [assigned, review_requested]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
permissions:
 | 
					 | 
				
			||||||
  pull-requests: write
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  successful-build-with-always-comment:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout project sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        add-job-summary-as-pr-comment: always
 | 
					 | 
				
			||||||
    - name: Run build with Gradle wrapper
 | 
					 | 
				
			||||||
      id: gradle
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew build --scan
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  successful-build-with-comment-on-failure:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout project sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        add-job-summary-as-pr-comment: on-failure
 | 
					 | 
				
			||||||
    - name: Run build with Gradle wrapper
 | 
					 | 
				
			||||||
      id: gradle
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew build --scan
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  failing-build-with-comment-on-failure:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout project sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        add-job-summary-as-pr-comment: on-failure
 | 
					 | 
				
			||||||
    - name: Run build with Gradle wrapper
 | 
					 | 
				
			||||||
      id: gradle
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew no-a-real-task --scan
 | 
					 | 
				
			||||||
      continue-on-error: true
 | 
					 | 
				
			||||||
							
								
								
									
										24
									
								
								.github/workflows/dev.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/dev.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
				
			|||||||
 | 
					# make sure the build works and doesn't produce spurious changes
 | 
				
			||||||
 | 
					name: dev
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  check:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Build
 | 
				
			||||||
 | 
					      run: |
 | 
				
			||||||
 | 
					        npm install
 | 
				
			||||||
 | 
					        npm run all
 | 
				
			||||||
 | 
					    - name: Check for uncommitted changes
 | 
				
			||||||
 | 
					      # Ensure no changes, but ignore node_modules dir since dev/fresh ci deps installed.
 | 
				
			||||||
 | 
					      run: |
 | 
				
			||||||
 | 
					        git diff --exit-code --stat -- . ':!node_modules' \
 | 
				
			||||||
 | 
					        || (echo "##[error] found changed files after build. please 'npm run all'" \
 | 
				
			||||||
 | 
					                 "and check in all changes" \
 | 
				
			||||||
 | 
					            && exit 1)
 | 
				
			||||||
							
								
								
									
										35
									
								
								.github/workflows/integ-test-action-inputs.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								.github/workflows/integ-test-action-inputs.yml
									
									
									
									
										vendored
									
									
								
							@ -1,35 +0,0 @@
 | 
				
			|||||||
name: Test action inputs
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  action-inputs:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Invoke with multi-line arguments
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        build-root-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
        arguments: |
 | 
					 | 
				
			||||||
            --configuration-cache
 | 
					 | 
				
			||||||
            --build-cache
 | 
					 | 
				
			||||||
            -DsystemProperty=FOO
 | 
					 | 
				
			||||||
            -PgradleProperty=BAR
 | 
					 | 
				
			||||||
            test
 | 
					 | 
				
			||||||
            jar
 | 
					 | 
				
			||||||
							
								
								
									
										148
									
								
								.github/workflows/integ-test-caching-config.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										148
									
								
								.github/workflows/integ-test-caching-config.yml
									
									
									
									
										vendored
									
									
								
							@ -1,148 +0,0 @@
 | 
				
			|||||||
name: Test caching configuration
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: action-inputs-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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
        # Add "enterprise" to main cache entry but omit "notifications"
 | 
					 | 
				
			||||||
        gradle-home-cache-includes: |
 | 
					 | 
				
			||||||
            caches
 | 
					 | 
				
			||||||
            enterprise
 | 
					 | 
				
			||||||
        # Exclude build-cache from main cache entry
 | 
					 | 
				
			||||||
        gradle-home-cache-excludes: |
 | 
					 | 
				
			||||||
            caches/build-cache-*
 | 
					 | 
				
			||||||
            caches/*/executionHistory
 | 
					 | 
				
			||||||
    - name: Build using Gradle wrapper
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache dependencies, by running build with --offline
 | 
					 | 
				
			||||||
  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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        # Use the same configuration as used in the seed build
 | 
					 | 
				
			||||||
        gradle-home-cache-includes: |
 | 
					 | 
				
			||||||
            caches
 | 
					 | 
				
			||||||
            enterprise
 | 
					 | 
				
			||||||
        gradle-home-cache-excludes: |
 | 
					 | 
				
			||||||
            caches/build-cache-*
 | 
					 | 
				
			||||||
            caches/*/executionHistory
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --offline
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that build scans are captured when caching is explicitly disabled
 | 
					 | 
				
			||||||
  cache-disabled:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-disabled: true
 | 
					 | 
				
			||||||
    - name: Run Gradle build
 | 
					 | 
				
			||||||
      id: gradle
 | 
					 | 
				
			||||||
      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@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
 | 
					 | 
				
			||||||
  cache-disabled-pre-existing-gradle-home:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Create dummy Gradle User Home
 | 
					 | 
				
			||||||
      run: mkdir -p ~/.gradle/caches
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
    - name: Run Gradle build
 | 
					 | 
				
			||||||
      id: gradle
 | 
					 | 
				
			||||||
      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@v7
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        script: |
 | 
					 | 
				
			||||||
          core.setFailed('No Build Scan detected')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test seed the cache with cache-write-only and verify with cache-read-only
 | 
					 | 
				
			||||||
  seed-build-write-only:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only-
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-write-only: true
 | 
					 | 
				
			||||||
    - name: Build using Gradle wrapper
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  verify-write-only-build:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ inputs.cache-key-prefix }}-write-only-
 | 
					 | 
				
			||||||
    needs: seed-build-write-only
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --offline
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,91 +0,0 @@
 | 
				
			|||||||
name: Test dependency graph
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  unsupported-gradle-version-warning:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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
 | 
					 | 
				
			||||||
							
								
								
									
										134
									
								
								.github/workflows/integ-test-dependency-graph.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										134
									
								
								.github/workflows/integ-test-dependency-graph.yml
									
									
									
									
										vendored
									
									
								
							@ -1,134 +0,0 @@
 | 
				
			|||||||
name: Test dependency graph
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
permissions:
 | 
					 | 
				
			||||||
  contents: write
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: dependency-graph-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  groovy-generate:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        dependency-graph: generate-and-upload
 | 
					 | 
				
			||||||
    - name: Run gradle build
 | 
					 | 
				
			||||||
      run: ./gradlew build
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  kotlin-generate:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        dependency-graph: generate-and-submit
 | 
					 | 
				
			||||||
    - name: Run gradle build
 | 
					 | 
				
			||||||
      run: ./gradlew build
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  submit:
 | 
					 | 
				
			||||||
    needs: [groovy-generate]
 | 
					 | 
				
			||||||
    runs-on: "ubuntu-latest"
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Submit dependency graphs
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        dependency-graph: generate-and-submit
 | 
					 | 
				
			||||||
    - id: gradle-assemble
 | 
					 | 
				
			||||||
      run: ./gradlew assemble
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
    - id: gradle-build
 | 
					 | 
				
			||||||
      run: ./gradlew build
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
    - id: gradle-build-again
 | 
					 | 
				
			||||||
      run: ./gradlew build
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
    - name: Check generated dependency graphs
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      run: |
 | 
					 | 
				
			||||||
        echo "gradle-assemble report file: ${{ steps.gradle-assemble.outputs.dependency-graph-file }}"
 | 
					 | 
				
			||||||
        echo "gradle-build report file: ${{ steps.gradle-build.outputs.dependency-graph-file }}"
 | 
					 | 
				
			||||||
        echo "gradle-build-again report file: ${{ steps.gradle-build-again.outputs.dependency-graph-file }}"
 | 
					 | 
				
			||||||
        ls -l dependency-graph-reports
 | 
					 | 
				
			||||||
        if [ ! -e "${{ steps.gradle-assemble.outputs.dependency-graph-file }}" ]; then
 | 
					 | 
				
			||||||
            echo "Did not find gradle-assemble dependency graph file"
 | 
					 | 
				
			||||||
            exit 1
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        if [ ! -e "${{ steps.gradle-build.outputs.dependency-graph-file }}" ]; then
 | 
					 | 
				
			||||||
            echo "Did not find gradle-build dependency graph files"
 | 
					 | 
				
			||||||
            exit 1
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        if [ ! -e "${{ steps.gradle-build-again.outputs.dependency-graph-file }}" ]; then
 | 
					 | 
				
			||||||
            echo "Did not find gradle-build-again dependency graph files"
 | 
					 | 
				
			||||||
            exit 1
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
  config-cache:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle for dependency-graph generate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        dependency-graph: generate-and-submit
 | 
					 | 
				
			||||||
    - id: config-cache-store
 | 
					 | 
				
			||||||
      run: ./gradlew assemble --configuration-cache
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
    - 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
 | 
					 | 
				
			||||||
      run: ./gradlew assemble --configuration-cache
 | 
					 | 
				
			||||||
      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        
 | 
					 | 
				
			||||||
@ -1,85 +0,0 @@
 | 
				
			|||||||
name: Test detect java toolchains
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: detect-java-toolchain-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  # Test that pre-installed runner JDKs are detected
 | 
					 | 
				
			||||||
  pre-installed-toolchains:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      fail-fast: false
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
    - name: List detected toolchains
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: | 
 | 
					 | 
				
			||||||
        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 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
 | 
					 | 
				
			||||||
  setup-java-installed-toolchain:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      fail-fast: false
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java 20
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'temurin'
 | 
					 | 
				
			||||||
        java-version: '20'
 | 
					 | 
				
			||||||
    - name: Setup Java 16
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'temurin'
 | 
					 | 
				
			||||||
        java-version: '16'
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
    - name: List detected toolchains
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: | 
 | 
					 | 
				
			||||||
        gradle --info javaToolchains > output.txt
 | 
					 | 
				
			||||||
        cat output.txt
 | 
					 | 
				
			||||||
    - name: Verify setup JDKs are detected
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: | 
 | 
					 | 
				
			||||||
        grep -q 'Eclipse Temurin JDK 16' output.txt || (echo "::error::Did not detect setup-java installed JDK 16" && exit 1)
 | 
					 | 
				
			||||||
        grep -q 'Eclipse Temurin JDK 20' output.txt || (echo "::error::Did not detect setup-java installed JDK 20" && exit 1)
 | 
					 | 
				
			||||||
    - name: Verify pre-installed toolchains are detected
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: | 
 | 
					 | 
				
			||||||
        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)
 | 
					 | 
				
			||||||
@ -1,48 +0,0 @@
 | 
				
			|||||||
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"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  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: Execute Gradle build
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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: Execute Gradle build
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
        build-root-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
        arguments: test --offline -DverifyCachedBuild=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
							
								
								
									
										80
									
								
								.github/workflows/integ-test-execution.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										80
									
								
								.github/workflows/integ-test-execution.yml
									
									
									
									
										vendored
									
									
								
							@ -1,80 +0,0 @@
 | 
				
			|||||||
name: Test execution
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: execution-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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: Test use defined Gradle version
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        gradle-version: release-candidate
 | 
					 | 
				
			||||||
        build-root-directory: .github/workflow-samples/no-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: Setup Java
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: temurin
 | 
					 | 
				
			||||||
        java-version: 8
 | 
					 | 
				
			||||||
    - name: Run Gradle build
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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')    
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
@ -1,89 +0,0 @@
 | 
				
			|||||||
name: Test develocity injection
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      DEVELOCITY_ACCESS_KEY:
 | 
					 | 
				
			||||||
        required: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: provision-gradle-versions-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  inject-develocity:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      DEVELOCITY_INJECTION_ENABLED: true
 | 
					 | 
				
			||||||
      DEVELOCITY_URL: https://ge.solutions-team.gradle.com
 | 
					 | 
				
			||||||
      DEVELOCITY_PLUGIN_VERSION: 3.16.2
 | 
					 | 
				
			||||||
      DEVELOCITY_CCUD_PLUGIN_VERSION: 1.13
 | 
					 | 
				
			||||||
      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@v4
 | 
					 | 
				
			||||||
    - name: Setup Java
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: temurin
 | 
					 | 
				
			||||||
        java-version: 8
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      id: setup-gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
        gradle-version: ${{ matrix.gradle }}
 | 
					 | 
				
			||||||
    - 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')   
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  build-scan-publish:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        gradle: [current, 7.6.2, 6.9.4, 5.6.4]
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: temurin
 | 
					 | 
				
			||||||
        java-version: 8
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      id: setup-gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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')   
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,108 +0,0 @@
 | 
				
			|||||||
name: Test provision Gradle versions
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: provision-gradle-versions-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:   
 | 
					 | 
				
			||||||
  # Tests for executing with different Gradle versions. 
 | 
					 | 
				
			||||||
  # Each build verifies that it is executed with the expected Gradle version.
 | 
					 | 
				
			||||||
  provision-gradle:
 | 
					 | 
				
			||||||
    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: Setup Gradle with v6.9
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
        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: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        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"
 | 
					 | 
				
			||||||
    - name: Setup Gradle with release-candidate
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        gradle-version: release-candidate
 | 
					 | 
				
			||||||
    - name: Test use release-candidate
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/no-wrapper
 | 
					 | 
				
			||||||
      run: gradle help
 | 
					 | 
				
			||||||
    - name: Setup Gradle with current
 | 
					 | 
				
			||||||
      id: gradle-current
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        gradle-version: current
 | 
					 | 
				
			||||||
    - name: Check current version output parameter
 | 
					 | 
				
			||||||
      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 }}"')    
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  gradle-versions:
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        gradle: [7.3, 6.9, 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: Setup Java
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: temurin
 | 
					 | 
				
			||||||
        java-version: 8
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      id: setup-gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
        gradle-version: ${{ matrix.gradle }}
 | 
					 | 
				
			||||||
    - name: Check output parameter
 | 
					 | 
				
			||||||
      if: ${{ steps.setup-gradle.outputs.gradle-version != matrix.gradle }}
 | 
					 | 
				
			||||||
      uses: actions/github-script@v7
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        script: |
 | 
					 | 
				
			||||||
          core.setFailed('Gradle version parameter not set correctly: value was "${{ steps.setup-gradle.outputs.gradle-version }}"')    
 | 
					 | 
				
			||||||
    - name: Run Gradle build
 | 
					 | 
				
			||||||
      id: gradle
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/no-wrapper${{ matrix.build-root-suffix }}
 | 
					 | 
				
			||||||
      run: gradle 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')    
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
@ -1,195 +0,0 @@
 | 
				
			|||||||
name: Test restore configuration-cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
    secrets:
 | 
					 | 
				
			||||||
      GRADLE_ENCRYPTION_KEY:
 | 
					 | 
				
			||||||
        required: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-configuration-cache-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  seed-build-groovy:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java to ensure consistency
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'liberica'
 | 
					 | 
				
			||||||
        java-version: '21'
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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-rc-1
 | 
					 | 
				
			||||||
    - name: Groovy build with configuration-cache enabled
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: gradle test --configuration-cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  verify-build-groovy:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy
 | 
					 | 
				
			||||||
    needs: seed-build-groovy
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java to ensure consistency
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'liberica'
 | 
					 | 
				
			||||||
        java-version: '21'
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
        cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
 | 
					 | 
				
			||||||
        gradle-version: 8.6-rc-1
 | 
					 | 
				
			||||||
    - name: Groovy build with configuration-cache enabled
 | 
					 | 
				
			||||||
      id: execute
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: gradle test --configuration-cache
 | 
					 | 
				
			||||||
    - 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
 | 
					 | 
				
			||||||
  gradle-user-home-not-fully-restored:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-groovy
 | 
					 | 
				
			||||||
    needs: seed-build-groovy
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - 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: ./
 | 
					 | 
				
			||||||
      env: 
 | 
					 | 
				
			||||||
        GRADLE_BUILD_ACTION_SKIP_RESTORE: "generated-gradle-jars|wrapper-zips|java-toolchains|instrumented-jars|dependencies|kotlin-dsl"
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
        cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
 | 
					 | 
				
			||||||
        gradle-version: 8.6-rc-1
 | 
					 | 
				
			||||||
    - name: Check execute Gradle build with configuration cache enabled (but not restored)
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: gradle test --configuration-cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  seed-build-kotlin:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java to ensure consistency
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'liberica'
 | 
					 | 
				
			||||||
        java-version: '21'
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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-rc-1
 | 
					 | 
				
			||||||
    - name: Execute 'help' with configuration-cache enabled
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: gradle help --configuration-cache
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  modify-build-kotlin:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified
 | 
					 | 
				
			||||||
    needs: seed-build-kotlin
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java to ensure consistency
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'liberica'
 | 
					 | 
				
			||||||
        java-version: '21'
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      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-rc-1
 | 
					 | 
				
			||||||
    - 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
 | 
					 | 
				
			||||||
  verify-build-kotlin:
 | 
					 | 
				
			||||||
    env:
 | 
					 | 
				
			||||||
      GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-cc-kotlin-modified
 | 
					 | 
				
			||||||
    needs: modify-build-kotlin
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java to ensure consistency
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        distribution: 'liberica'
 | 
					 | 
				
			||||||
        java-version: '21'
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
        cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
 | 
					 | 
				
			||||||
        gradle-version: 8.6-rc-1
 | 
					 | 
				
			||||||
    - name: Execute 'test' again with configuration-cache enabled
 | 
					 | 
				
			||||||
      id: execute
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: gradle test --configuration-cache
 | 
					 | 
				
			||||||
    - 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')
 | 
					 | 
				
			||||||
          }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,52 +0,0 @@
 | 
				
			|||||||
name: Test restore custom Gradle Home
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-custom-gradle-home-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  seed-build:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    container: fedora:latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        java-version: 11
 | 
					 | 
				
			||||||
        distribution: temurin
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
    - name: Build using Gradle wrapper
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache dependencies, by running build with --offline
 | 
					 | 
				
			||||||
  dependencies-cache:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    container: fedora:latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Java
 | 
					 | 
				
			||||||
      uses: actions/setup-java@v4
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        java-version: 11
 | 
					 | 
				
			||||||
        distribution: temurin
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --offline
 | 
					 | 
				
			||||||
@ -1,67 +0,0 @@
 | 
				
			|||||||
name: Test restore custom Gradle Home
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-custom-gradle-home-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					 | 
				
			||||||
  seed-build:
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - 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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
    - name: Build using Gradle wrapper
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --info
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache dependencies, by running build with --offline
 | 
					 | 
				
			||||||
  dependencies-cache:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - 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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --offline --info
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache and restore local build-cache
 | 
					 | 
				
			||||||
  build-cache:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - 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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build and verify tasks from cache
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test -DverifyCachedBuild=true --info
 | 
					 | 
				
			||||||
							
								
								
									
										124
									
								
								.github/workflows/integ-test-restore-gradle-home.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										124
									
								
								.github/workflows/integ-test-restore-gradle-home.yml
									
									
									
									
										vendored
									
									
								
							@ -1,124 +0,0 @@
 | 
				
			|||||||
name: Test restore Gradle Home
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-gradle-home-${{ inputs.cache-key-prefix }}
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_JOB: restore-gradle-home
 | 
					 | 
				
			||||||
  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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
    - name: Build using Gradle wrapper
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache dependencies, by running build with --offline
 | 
					 | 
				
			||||||
  dependencies-cache:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --offline
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache and restore local build-cache
 | 
					 | 
				
			||||||
  build-cache:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build and verify tasks from cache
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test -DverifyCachedBuild=true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Check that the build can run when Gradle User Home is not fully restored
 | 
					 | 
				
			||||||
  no-extracted-cache-entries-restored:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle with no extracted cache entries restored
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      env: 
 | 
					 | 
				
			||||||
        GRADLE_BUILD_ACTION_SKIP_RESTORE: "generated-gradle-jars|wrapper-zips|java-toolchains|instrumented-jars|dependencies|kotlin-dsl"
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Check executee Gradle build
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that a pre-existing gradle-user-home can be overwritten by the restored cache
 | 
					 | 
				
			||||||
  pre-existing-gradle-home:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Pre-create Gradle User Home
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      run: |
 | 
					 | 
				
			||||||
        mkdir -p ~/.gradle/caches
 | 
					 | 
				
			||||||
        touch ~/.gradle/gradle.properties
 | 
					 | 
				
			||||||
        touch ~/.gradle/caches/dummy.txt
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
        cache-overwrite-existing: true
 | 
					 | 
				
			||||||
    - name: Check that pre-existing content still exists
 | 
					 | 
				
			||||||
      shell: bash
 | 
					 | 
				
			||||||
      run: |
 | 
					 | 
				
			||||||
        if [ ! -e ~/.gradle/caches/dummy.txt ]; then
 | 
					 | 
				
			||||||
          echo "::error ::Should find dummy.txt after cache restore"
 | 
					 | 
				
			||||||
          exit 1
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
        if [ ! -e ~/.gradle/gradle.properties ]; then
 | 
					 | 
				
			||||||
          echo "::error ::Should find gradle.properties after cache restore"
 | 
					 | 
				
			||||||
          exit 1
 | 
					 | 
				
			||||||
        fi
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/groovy-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew test --offline
 | 
					 | 
				
			||||||
@ -1,49 +0,0 @@
 | 
				
			|||||||
name: Test restore java toolchains
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: restore-java-toolchain-${{ 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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
    - name: Build using Gradle wrapper
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/java-toolchain
 | 
					 | 
				
			||||||
      run: ./gradlew test --info
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Test that the gradle-user-home cache will cache the toolchain, by running build with --offline
 | 
					 | 
				
			||||||
  toolchain-cache:
 | 
					 | 
				
			||||||
    needs: seed-build
 | 
					 | 
				
			||||||
    strategy:
 | 
					 | 
				
			||||||
      matrix:
 | 
					 | 
				
			||||||
        os: ${{fromJSON(inputs.runner-os)}}
 | 
					 | 
				
			||||||
    runs-on: ${{ matrix.os }}
 | 
					 | 
				
			||||||
    steps:
 | 
					 | 
				
			||||||
    - name: Checkout sources
 | 
					 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					 | 
				
			||||||
    - name: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Execute Gradle build with --offline
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/java-toolchain
 | 
					 | 
				
			||||||
      run: ./gradlew test --info --offline
 | 
					 | 
				
			||||||
@ -1,48 +0,0 @@
 | 
				
			|||||||
name: Test sample Gradle Plugin project
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: sample-gradle-plugin-${{ 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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
    - name: Build gradle-plugin project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/gradle-plugin
 | 
					 | 
				
			||||||
      run: ./gradlew build
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Build gradle-plugin project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/gradle-plugin
 | 
					 | 
				
			||||||
      run: ./gradlew build --offline
 | 
					 | 
				
			||||||
@ -1,48 +0,0 @@
 | 
				
			|||||||
name: Test sample Kotlin DSL project
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
on:
 | 
					 | 
				
			||||||
  workflow_call:
 | 
					 | 
				
			||||||
    inputs:
 | 
					 | 
				
			||||||
      cache-key-prefix:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
      runner-os:
 | 
					 | 
				
			||||||
        type: string
 | 
					 | 
				
			||||||
        default: '["ubuntu-latest", "windows-latest", "macos-latest"]'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
env:
 | 
					 | 
				
			||||||
  GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: sample-kotlin-dsl-${{ 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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: false # For testing, allow writing cache entries on non-default branches
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew build
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  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: Setup Gradle
 | 
					 | 
				
			||||||
      uses: ./
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        cache-read-only: true
 | 
					 | 
				
			||||||
    - name: Build kotlin-dsl project
 | 
					 | 
				
			||||||
      working-directory: .github/workflow-samples/kotlin-dsl
 | 
					 | 
				
			||||||
      run: ./gradlew build --offline
 | 
					 | 
				
			||||||
							
								
								
									
										124
									
								
								.github/workflows/prod.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										124
									
								
								.github/workflows/prod.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,124 @@
 | 
				
			|||||||
 | 
					 # make sure the action works on a clean machine without building
 | 
				
			||||||
 | 
					name: prod
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  pull_request:
 | 
				
			||||||
 | 
					  push:
 | 
				
			||||||
 | 
					  workflow_dispatch:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  basic-build:
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Build using Gradle wrapper
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/basic
 | 
				
			||||||
 | 
					        arguments: test
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					  gradle-execution:
 | 
				
			||||||
 | 
					    needs: basic-build
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					        include:
 | 
				
			||||||
 | 
					          - os: windows-latest
 | 
				
			||||||
 | 
					            script-suffix: '.bat'
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Test use defined Gradle version
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        gradle-version: 6.9
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/no-wrapper
 | 
				
			||||||
 | 
					        arguments: help
 | 
				
			||||||
 | 
					    - name: Test use Gradle version alias
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        gradle-version: release-candidate
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/no-wrapper
 | 
				
			||||||
 | 
					        arguments: help
 | 
				
			||||||
 | 
					    - name: Test use defined Gradle executable
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        gradle-executable: __tests__/samples/basic/gradlew${{ matrix.script-suffix }}
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/no-wrapper
 | 
				
			||||||
 | 
					        arguments: help
 | 
				
			||||||
 | 
					    - name: Test custom wrapper location (deprecated)
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/no-wrapper
 | 
				
			||||||
 | 
					        wrapper-directory: __tests__/samples/basic
 | 
				
			||||||
 | 
					        arguments: help
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  dependencies-cache:
 | 
				
			||||||
 | 
					    needs: basic-build
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Test dependencies-cache-enabled
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/basic
 | 
				
			||||||
 | 
					        arguments: test --no-daemon
 | 
				
			||||||
 | 
					        dependencies-cache-enabled: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  configuration-cache:
 | 
				
			||||||
 | 
					    needs: basic-build
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Test configuration-cache-enabled
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/basic
 | 
				
			||||||
 | 
					        arguments: test --configuration-cache --no-daemon
 | 
				
			||||||
 | 
					        configuration-cache-enabled: true
 | 
				
			||||||
 | 
					        dependencies-cache-enabled: true 
 | 
				
			||||||
 | 
					        # Configuration cache requires dependencies cache, since it assumes dependencies are already downloaded.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  cache-read-only:
 | 
				
			||||||
 | 
					    needs: basic-build
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Test cache-read-only
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/basic
 | 
				
			||||||
 | 
					        arguments: test --no-daemon
 | 
				
			||||||
 | 
					        dependencies-cache-enabled: true
 | 
				
			||||||
 | 
					        configuration-cache-enabled: true
 | 
				
			||||||
 | 
					        cache-read-only: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  failures: # These build invocations are informational only, and are expected to fail
 | 
				
			||||||
 | 
					    needs: basic-build
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - name: Checkout sources
 | 
				
			||||||
 | 
					      uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - name: Test wrapper missing
 | 
				
			||||||
 | 
					      uses: ./
 | 
				
			||||||
 | 
					      continue-on-error: true
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        build-root-directory: __tests__/samples/no-wrapper
 | 
				
			||||||
 | 
					        arguments: help
 | 
				
			||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -102,3 +102,5 @@ __tests__/runner/*
 | 
				
			|||||||
.idea/
 | 
					.idea/
 | 
				
			||||||
*.iml
 | 
					*.iml
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ASDF tool configuration
 | 
				
			||||||
 | 
					.tool-versions
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.prettierignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.prettierignore
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					dist/
 | 
				
			||||||
 | 
					lib/
 | 
				
			||||||
 | 
					node_modules/
 | 
				
			||||||
							
								
								
									
										11
									
								
								.prettierrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.prettierrc.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "printWidth": 80,
 | 
				
			||||||
 | 
					    "tabWidth": 4,
 | 
				
			||||||
 | 
					    "useTabs": false,
 | 
				
			||||||
 | 
					    "semi": false,
 | 
				
			||||||
 | 
					    "singleQuote": true,
 | 
				
			||||||
 | 
					    "trailingComma": "none",
 | 
				
			||||||
 | 
					    "bracketSpacing": false,
 | 
				
			||||||
 | 
					    "arrowParens": "avoid",
 | 
				
			||||||
 | 
					    "parser": "typescript"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@ -1,7 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
The MIT License (MIT)
 | 
					The MIT License (MIT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Copyright (c) 2023 Gradle Inc.
 | 
					Copyright (c) 2018 GitHub, Inc. and contributors
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
					Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
				
			||||||
of this software and associated documentation files (the "Software"), to deal
 | 
					of this software and associated documentation files (the "Software"), to deal
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										263
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										263
									
								
								README.md
									
									
									
									
									
								
							@ -1,40 +1,241 @@
 | 
				
			|||||||
> [!IMPORTANT]
 | 
					# Execute Gradle builds in GitHub Actions workflows
 | 
				
			||||||
> As of `v3` this action has been superceded by `gradle/actions/setup-gradle`.
 | 
					 | 
				
			||||||
> Any workflow that uses `gradle/gradle-build-action@v3` will transparently delegate to `gradle/actions/setup-gradle@v3`.
 | 
					 | 
				
			||||||
>
 | 
					 | 
				
			||||||
> Users are encouraged to update their workflows, replacing:
 | 
					 | 
				
			||||||
> ```
 | 
					 | 
				
			||||||
> uses: gradle/gradle-build-action@v3
 | 
					 | 
				
			||||||
> ```
 | 
					 | 
				
			||||||
>
 | 
					 | 
				
			||||||
> with
 | 
					 | 
				
			||||||
> ```
 | 
					 | 
				
			||||||
> uses: gradle/actions/setup-gradle@v3
 | 
					 | 
				
			||||||
> ```
 | 
					 | 
				
			||||||
>
 | 
					 | 
				
			||||||
> See the [setup-gradle documentation](https://github.com/gradle/actions/tree/main/setup-gradle) for up-to-date documentation for `gradle/actions/setup-gradle`. 
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Setup Gradle for use in GitHub Actions workflows
 | 
					This GitHub Action can be used to execute a Gradle build on any platform supported by GitHub Actions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This GitHub Action can be used to configure Gradle on any platform supported by GitHub Actions.
 | 
					## Usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Example usage
 | 
					The following workflow will run `./gradlew build` using the wrapper from the repository on ubuntu, macos and windows. The only prerequisite is to have Java installed: you define the version of Java you need to run the build using the `actions/setup-java` action.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```yaml
 | 
					```yaml
 | 
				
			||||||
name: Build
 | 
					# .github/workflows/gradle-build-pr.yml
 | 
				
			||||||
 | 
					name: Run Gradle on PRs
 | 
				
			||||||
on: [ push ]
 | 
					on: pull_request
 | 
				
			||||||
 | 
					 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  build:
 | 
					  gradle:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
    - name: Checkout sources
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
      uses: actions/checkout@v4
 | 
					    - uses: actions/setup-java@v1
 | 
				
			||||||
    - name: Setup Gradle
 | 
					      with:
 | 
				
			||||||
      uses: gradle/actions/setup-gradle@v3
 | 
					        java-version: 11
 | 
				
			||||||
    - name: Build with Gradle
 | 
					    - uses: gradle/gradle-build-action@v1
 | 
				
			||||||
      run: ./gradlew build
 | 
					      with:
 | 
				
			||||||
 | 
					        arguments: build
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
See the [full setup-gradle documentation](https://github.com/gradle/actions/tree/main/setup-gradle) for more advanced usage scenarios. 
 | 
					## Gradle arguments
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The `arguments` input can used to pass arbitrary arguments to the `gradle` command line.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Here are some valid examples:
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					arguments: build
 | 
				
			||||||
 | 
					arguments: check --scan
 | 
				
			||||||
 | 
					arguments: some arbitrary tasks
 | 
				
			||||||
 | 
					arguments: build -PgradleProperty=foo
 | 
				
			||||||
 | 
					arguments: build -DsystemProperty=bar
 | 
				
			||||||
 | 
					....
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					See `gradle --help` for more information.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you need to pass environment variables, simply use the GitHub Actions workflow syntax:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					- uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					  env:
 | 
				
			||||||
 | 
					    CI: true
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Run a build from a different directory
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					- uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					  with:
 | 
				
			||||||
 | 
					    build-root-directory: some/subdirectory
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Use a specific `gradle` executable
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					 - uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					   with:
 | 
				
			||||||
 | 
					     gradle-executable: path/to/gradle
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Use a Gradle wrapper from a different directory
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					 - uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					   with:
 | 
				
			||||||
 | 
					     gradle-executable: path/to/gradlew
 | 
				
			||||||
 | 
					 ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 NOTE: The `wrapper-directory` input has been deprecated. Use `gradle-executable` instead.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Setup and use a declared Gradle version
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					 - uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					   with:
 | 
				
			||||||
 | 
					     gradle-version: 6.5
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`gradle-version` can be set to any valid Gradle version.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Moreover, you can use the following aliases:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					| Alias | Selects |
 | 
				
			||||||
 | 
					| --- |---|
 | 
				
			||||||
 | 
					| `wrapper`           | The Gradle wrapper's version (default, useful for matrix builds) |
 | 
				
			||||||
 | 
					| `current`           | The current [stable release](https://gradle.org/install/) |
 | 
				
			||||||
 | 
					| `release-candidate` | The current [release candidate](https://gradle.org/release-candidate/) if any, otherwise fallback to `current` |
 | 
				
			||||||
 | 
					| `nightly`           | The latest [nightly](https://gradle.org/nightly/), fails if none. |
 | 
				
			||||||
 | 
					| `release-nightly`   | The latest [release nightly](https://gradle.org/release-nightly/), fails if none.      |
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This can be handy to, for example, automatically test your build with the next Gradle version once a release candidate is out:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					# .github/workflows/test-gradle-rc.yml
 | 
				
			||||||
 | 
					name: Test latest Gradle RC
 | 
				
			||||||
 | 
					on:
 | 
				
			||||||
 | 
					  schedule:
 | 
				
			||||||
 | 
					    - cron: 0 0 * * * # daily
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  gradle-rc:
 | 
				
			||||||
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - uses: actions/setup-java@v1
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        java-version: 11
 | 
				
			||||||
 | 
					    - uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        gradle-version: release-candidate
 | 
				
			||||||
 | 
					        arguments: build --dry-run # just test build configuration
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Caching
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This action provides 3 levels of caching to help speed up your GitHub Actions:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `distributions` caches any downloaded Gradle zips, including any downloaded [wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) versions, saving time downloading Gradle distributions ;
 | 
				
			||||||
 | 
					- `dependencies` caches the [dependencies](https://docs.gradle.org/current/userguide/dependency_resolution.html#sub:cache_copy), saving time downloading dependencies ;
 | 
				
			||||||
 | 
					- `configuration` caches the [build configuration](https://docs.gradle.org/nightly/userguide/configuration_cache.html), saving time configuring the build.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Only the first one, caching downloaded distributions, is enabled by default.
 | 
				
			||||||
 | 
					Future versions of this action will enable all caching by default.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can control which level is enabled as follows:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					distributions-cache-enabled: true
 | 
				
			||||||
 | 
					dependencies-cache-enabled: true
 | 
				
			||||||
 | 
					configuration-cache-enabled: true
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					NOTE: The `wrapper-cache-enabled` flag has been deprecated, replaced by `distributions-cache-enabled` which enables caching for all downloaded distributions, including Gradle wrapper downloads.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The distributions cache is simple and can't be configured further.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The dependencies and configuration cache will compute a cache key in a best effort manner.
 | 
				
			||||||
 | 
					Keep reading to learn how to better control how they work.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Note that enabling configuration cache without the dependencies cache is not permitted, since a hit in the configuration cache assumes that dependencies are already present in the local dependencies cache.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Configuring the dependencies and configuration caches
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Both the dependencies and configuration caches use the same default configuration:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					They use the following inputs to calculate the cache key:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```text
 | 
				
			||||||
 | 
					**/*.gradle
 | 
				
			||||||
 | 
					**/*.gradle.kts
 | 
				
			||||||
 | 
					**/gradle.properties
 | 
				
			||||||
 | 
					gradle/**
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is a good enough approximation.
 | 
				
			||||||
 | 
					They restore cached state even if there isn't an exact match.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If the defaults don't suit your needs you can override them with the following inputs:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					dependencies-cache-key: |
 | 
				
			||||||
 | 
					  **/gradle.properties
 | 
				
			||||||
 | 
					  gradle/dependency-locks/**
 | 
				
			||||||
 | 
					dependencies-cache-exact: true
 | 
				
			||||||
 | 
					configuration-cache-key: |
 | 
				
			||||||
 | 
					  **/gradle.properties
 | 
				
			||||||
 | 
					  gradle/dependency-locks/**
 | 
				
			||||||
 | 
					configuration-cache-exact: true
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Coming up with a good cache key isn't trivial and depends on your build.
 | 
				
			||||||
 | 
					The above example isn't realistic.
 | 
				
			||||||
 | 
					Stick to the defaults unless you know what you are doing.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If you happen to use Gradle [dependency locking](https://docs.gradle.org/current/userguide/dependency_locking.html) you can make the dependencies cache more precise with the following configuration:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					dependencies-cache-enabled: true
 | 
				
			||||||
 | 
					dependencies-cache-key: gradle/dependency-locks/**
 | 
				
			||||||
 | 
					dependencies-cache-exact: true
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### Using the caches read-only
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Cache storage space is limited for GitHub actions, and writing new cache entries can trigger the deletion of exising entries.
 | 
				
			||||||
 | 
					In some circumstances, it makes sense for a Gradle invocation to use any existing cache entries but not to write and changes back.
 | 
				
			||||||
 | 
					For example, you may want to write cache entries for builds on your `main` branch, but not for any PR build invocations.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Use the following configuration to avoid writing cache entries for the action invocation:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					cache-read-only: true
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Build scans
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					If your build publishes a [build scan](https://gradle.com/build-scans/) the `gradle-build-action` action will emit the link to the published build scan as an output named `build-scan-url`.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can then use that link in subsequent actions of your workflow.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For example:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```yaml
 | 
				
			||||||
 | 
					# .github/workflows/gradle-build-pr.yml
 | 
				
			||||||
 | 
					name: Run Gradle on PRs
 | 
				
			||||||
 | 
					on: pull_request
 | 
				
			||||||
 | 
					jobs:
 | 
				
			||||||
 | 
					  gradle:
 | 
				
			||||||
 | 
					    strategy:
 | 
				
			||||||
 | 
					      matrix:
 | 
				
			||||||
 | 
					        os: [ubuntu-latest, macos-latest, windows-latest]
 | 
				
			||||||
 | 
					    runs-on: ${{ matrix.os }}
 | 
				
			||||||
 | 
					    steps:
 | 
				
			||||||
 | 
					    - uses: actions/checkout@v2
 | 
				
			||||||
 | 
					    - uses: actions/setup-java@v1
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        java-version: 11
 | 
				
			||||||
 | 
					    - uses: gradle/gradle-build-action@v1
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        arguments: build
 | 
				
			||||||
 | 
					      id: gradle
 | 
				
			||||||
 | 
					    - name: "Comment build scan url"
 | 
				
			||||||
 | 
					      uses: actions/github-script@v3
 | 
				
			||||||
 | 
					      if: github.event_name == 'pull_request' && failure()
 | 
				
			||||||
 | 
					      with:
 | 
				
			||||||
 | 
					        github-token: ${{secrets.GITHUB_TOKEN}}
 | 
				
			||||||
 | 
					        script: |
 | 
				
			||||||
 | 
					          github.issues.createComment({
 | 
				
			||||||
 | 
					            issue_number: context.issue.number,
 | 
				
			||||||
 | 
					            owner: context.repo.owner,
 | 
				
			||||||
 | 
					            repo: context.repo.repo,
 | 
				
			||||||
 | 
					            body: '❌ ${{ github.workflow }} failed: ${{ steps.gradle.outputs.build-scan-url }}'
 | 
				
			||||||
 | 
					          })
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										65
									
								
								__tests__/cache-utils.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								__tests__/cache-utils.test.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					import * as cacheUtils from '../src/cache-utils'
 | 
				
			||||||
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('cacheUtils-utils', () => {
 | 
				
			||||||
 | 
					    describe('can hash', () => {
 | 
				
			||||||
 | 
					        it('a directory', async () => {
 | 
				
			||||||
 | 
					            const hash = await cacheUtils.hashFiles(
 | 
				
			||||||
 | 
					                path.resolve('__tests__/data/crypto-utils-test/gradle')
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(hash).toBe(
 | 
				
			||||||
 | 
					                process.platform === 'win32'
 | 
				
			||||||
 | 
					                    ? '3364336e94e746ce65a31748a6371b7efd7d499e18ad605c74c91cde0edc0a44'
 | 
				
			||||||
 | 
					                    : '63b9f14f65d014e585099c9c274b9dcbddf5cfd1a8978e5a24efb89ff9304348'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        it('a directory with a glob', async () => {
 | 
				
			||||||
 | 
					            const hash = await cacheUtils.hashFiles(
 | 
				
			||||||
 | 
					                path.resolve('__tests__/data/crypto-utils-test/'),
 | 
				
			||||||
 | 
					                ['gradle/**']
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(hash).toBe(
 | 
				
			||||||
 | 
					                process.platform === 'win32'
 | 
				
			||||||
 | 
					                    ? '3364336e94e746ce65a31748a6371b7efd7d499e18ad605c74c91cde0edc0a44'
 | 
				
			||||||
 | 
					                    : '63b9f14f65d014e585099c9c274b9dcbddf5cfd1a8978e5a24efb89ff9304348'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        it('a directory with globs', async () => {
 | 
				
			||||||
 | 
					            const hash = await cacheUtils.hashFiles(
 | 
				
			||||||
 | 
					                path.resolve('__tests__/data/crypto-utils-test/'),
 | 
				
			||||||
 | 
					                ['**/*.gradle', 'gradle/**']
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(hash).toBe(
 | 
				
			||||||
 | 
					                process.platform === 'win32'
 | 
				
			||||||
 | 
					                    ? 'd9b66fded38f79f601ce745d64ed726a8df8c0b242b02bcd2c1d331f54742ad6'
 | 
				
			||||||
 | 
					                    : 'f42cd10636f09799f4e01cc84e7ae906cc1d9140f1446f8dcd054d19cbc44c2b'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    describe('can truncate args', () => {
 | 
				
			||||||
 | 
					        test('handles zero-length string', () => {
 | 
				
			||||||
 | 
					            expect(cacheUtils.truncateArgs('')).toBe('')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        test('leaves short string untouched', () => {
 | 
				
			||||||
 | 
					            expect(
 | 
				
			||||||
 | 
					                cacheUtils.truncateArgs('short string that-should-be-untouched')
 | 
				
			||||||
 | 
					            ).toBe('short string that-should-be-untouched')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        test('truncates long string', () => {
 | 
				
			||||||
 | 
					            const longString = 'a'.repeat(500)
 | 
				
			||||||
 | 
					            expect(cacheUtils.truncateArgs(longString)).toBe('a'.repeat(400))
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        test('trims leading and trailing whitespace', () => {
 | 
				
			||||||
 | 
					            expect(cacheUtils.truncateArgs('    this is an arg      ')).toBe(
 | 
				
			||||||
 | 
					                'this is an arg'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        test('removes repeated whitespace', () => {
 | 
				
			||||||
 | 
					            expect(
 | 
				
			||||||
 | 
					                cacheUtils.truncateArgs(
 | 
				
			||||||
 | 
					                    '   this     one     has long   \t\n\t\r  spaces    '
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            ).toBe('this one has long spaces')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
							
								
								
									
										33
									
								
								__tests__/cache-wrapper.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								__tests__/cache-wrapper.test.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					import * as cacheWrapper from '../src/cache-wrapper'
 | 
				
			||||||
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					describe('cache', () => {
 | 
				
			||||||
 | 
					    describe('can extract gradle wrapper slug', () => {
 | 
				
			||||||
 | 
					        it('from wrapper properties file', async () => {
 | 
				
			||||||
 | 
					            const version = cacheWrapper.extractGradleWrapperSlugFrom(
 | 
				
			||||||
 | 
					                path.resolve(
 | 
				
			||||||
 | 
					                    '__tests__/data/cache-wrapper-test/gradle-wrapper.properties'
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(version).toBe('6.6.1-bin')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        it('for -bin dist', async () => {
 | 
				
			||||||
 | 
					            const version = cacheWrapper.extractGradleWrapperSlugFromDistUri(
 | 
				
			||||||
 | 
					                'distributionUrl=https\\://services.gradle.org/distributions/gradle-6.6.1-bin.zip'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(version).toBe('6.6.1-bin')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        it('for -all dist', async () => {
 | 
				
			||||||
 | 
					            const version = cacheWrapper.extractGradleWrapperSlugFromDistUri(
 | 
				
			||||||
 | 
					                'distributionUrl=https\\://services.gradle.org/distributions/gradle-6.6.1-all.zip'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(version).toBe('6.6.1-all')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					        it('for milestone', async () => {
 | 
				
			||||||
 | 
					            const version = cacheWrapper.extractGradleWrapperSlugFromDistUri(
 | 
				
			||||||
 | 
					                'distributionUrl=https\\://services.gradle.org/distributions/gradle-6.6-milestone-1-all.zip'
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            expect(version).toBe('6.6-milestone-1-all')
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
@ -1,8 +1,5 @@
 | 
				
			|||||||
distributionBase=GRADLE_USER_HOME
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
 | 
					 | 
				
			||||||
networkTimeout=10000
 | 
					 | 
				
			||||||
validateDistributionUrl=true
 | 
					 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
							
								
								
									
										6
									
								
								__tests__/data/crypto-utils-test/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								__tests__/data/crypto-utils-test/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# https://help.github.com/articles/dealing-with-line-endings/
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# These are explicitly windows files and should use crlf
 | 
				
			||||||
 | 
					*.bat           text eol=crlf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								__tests__/data/crypto-utils-test/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								__tests__/data/crypto-utils-test/build.gradle
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					plugins {
 | 
				
			||||||
 | 
					    id 'java'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					repositories {
 | 
				
			||||||
 | 
					    mavenCentral()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    testImplementation('junit:junit:4.12')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								__tests__/data/crypto-utils-test/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								__tests__/data/crypto-utils-test/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1,8 +1,5 @@
 | 
				
			|||||||
distributionBase=GRADLE_USER_HOME
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
 | 
					 | 
				
			||||||
networkTimeout=10000
 | 
					 | 
				
			||||||
validateDistributionUrl=true
 | 
					 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
							
								
								
									
										185
									
								
								__tests__/data/crypto-utils-test/gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										185
									
								
								__tests__/data/crypto-utils-test/gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@ -0,0 +1,185 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright 2015 the original author or authors.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					# you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					# You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					# See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					##  Gradle start up script for UN*X
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Attempt to set APP_HOME
 | 
				
			||||||
 | 
					# Resolve links: $0 may be a link
 | 
				
			||||||
 | 
					PRG="$0"
 | 
				
			||||||
 | 
					# Need this for relative symlinks.
 | 
				
			||||||
 | 
					while [ -h "$PRG" ] ; do
 | 
				
			||||||
 | 
					    ls=`ls -ld "$PRG"`
 | 
				
			||||||
 | 
					    link=`expr "$ls" : '.*-> \(.*\)$'`
 | 
				
			||||||
 | 
					    if expr "$link" : '/.*' > /dev/null; then
 | 
				
			||||||
 | 
					        PRG="$link"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        PRG=`dirname "$PRG"`"/$link"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					SAVED="`pwd`"
 | 
				
			||||||
 | 
					cd "`dirname \"$PRG\"`/" >/dev/null
 | 
				
			||||||
 | 
					APP_HOME="`pwd -P`"
 | 
				
			||||||
 | 
					cd "$SAVED" >/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_NAME="Gradle"
 | 
				
			||||||
 | 
					APP_BASE_NAME=`basename "$0"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
 | 
					DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
				
			||||||
 | 
					MAX_FD="maximum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					warn () {
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die () {
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# OS specific support (must be 'true' or 'false').
 | 
				
			||||||
 | 
					cygwin=false
 | 
				
			||||||
 | 
					msys=false
 | 
				
			||||||
 | 
					darwin=false
 | 
				
			||||||
 | 
					nonstop=false
 | 
				
			||||||
 | 
					case "`uname`" in
 | 
				
			||||||
 | 
					  CYGWIN* )
 | 
				
			||||||
 | 
					    cygwin=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  Darwin* )
 | 
				
			||||||
 | 
					    darwin=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  MINGW* )
 | 
				
			||||||
 | 
					    msys=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  NONSTOP* )
 | 
				
			||||||
 | 
					    nonstop=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Determine the Java command to use to start the JVM.
 | 
				
			||||||
 | 
					if [ -n "$JAVA_HOME" ] ; then
 | 
				
			||||||
 | 
					    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
				
			||||||
 | 
					        # IBM's JDK on AIX uses strange locations for the executables
 | 
				
			||||||
 | 
					        JAVACMD="$JAVA_HOME/jre/sh/java"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        JAVACMD="$JAVA_HOME/bin/java"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ ! -x "$JAVACMD" ] ; then
 | 
				
			||||||
 | 
					        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    JAVACMD="java"
 | 
				
			||||||
 | 
					    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Increase the maximum file descriptors if we can.
 | 
				
			||||||
 | 
					if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
 | 
				
			||||||
 | 
					    MAX_FD_LIMIT=`ulimit -H -n`
 | 
				
			||||||
 | 
					    if [ $? -eq 0 ] ; then
 | 
				
			||||||
 | 
					        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
 | 
				
			||||||
 | 
					            MAX_FD="$MAX_FD_LIMIT"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        ulimit -n $MAX_FD
 | 
				
			||||||
 | 
					        if [ $? -ne 0 ] ; then
 | 
				
			||||||
 | 
					            warn "Could not set maximum file descriptor limit: $MAX_FD"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Darwin, add options to specify how the application appears in the dock
 | 
				
			||||||
 | 
					if $darwin; then
 | 
				
			||||||
 | 
					    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Cygwin or MSYS, switch paths to Windows format before running java
 | 
				
			||||||
 | 
					if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
 | 
				
			||||||
 | 
					    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
 | 
				
			||||||
 | 
					    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    JAVACMD=`cygpath --unix "$JAVACMD"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # We build the pattern for arguments to be converted via cygpath
 | 
				
			||||||
 | 
					    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
 | 
				
			||||||
 | 
					    SEP=""
 | 
				
			||||||
 | 
					    for dir in $ROOTDIRSRAW ; do
 | 
				
			||||||
 | 
					        ROOTDIRS="$ROOTDIRS$SEP$dir"
 | 
				
			||||||
 | 
					        SEP="|"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    OURCYGPATTERN="(^($ROOTDIRS))"
 | 
				
			||||||
 | 
					    # Add a user-defined pattern to the cygpath arguments
 | 
				
			||||||
 | 
					    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
 | 
				
			||||||
 | 
					        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
				
			||||||
 | 
					    i=0
 | 
				
			||||||
 | 
					    for arg in "$@" ; do
 | 
				
			||||||
 | 
					        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
 | 
				
			||||||
 | 
					        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
 | 
				
			||||||
 | 
					            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            eval `echo args$i`="\"$arg\""
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        i=`expr $i + 1`
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    case $i in
 | 
				
			||||||
 | 
					        0) set -- ;;
 | 
				
			||||||
 | 
					        1) set -- "$args0" ;;
 | 
				
			||||||
 | 
					        2) set -- "$args0" "$args1" ;;
 | 
				
			||||||
 | 
					        3) set -- "$args0" "$args1" "$args2" ;;
 | 
				
			||||||
 | 
					        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
 | 
				
			||||||
 | 
					        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
 | 
				
			||||||
 | 
					        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
 | 
				
			||||||
 | 
					        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
 | 
				
			||||||
 | 
					        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
 | 
				
			||||||
 | 
					        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Escape application args
 | 
				
			||||||
 | 
					save () {
 | 
				
			||||||
 | 
					    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
 | 
				
			||||||
 | 
					    echo " "
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					APP_ARGS=`save "$@"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Collect all arguments for the java command, following the shell quoting and substitution rules
 | 
				
			||||||
 | 
					eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec "$JAVACMD" "$@"
 | 
				
			||||||
@ -26,7 +26,6 @@ if "%OS%"=="Windows_NT" setlocal
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set DIRNAME=%~dp0
 | 
					set DIRNAME=%~dp0
 | 
				
			||||||
if "%DIRNAME%" == "" set DIRNAME=.
 | 
					if "%DIRNAME%" == "" set DIRNAME=.
 | 
				
			||||||
@rem This is normally unused
 | 
					 | 
				
			||||||
set APP_BASE_NAME=%~n0
 | 
					set APP_BASE_NAME=%~n0
 | 
				
			||||||
set APP_HOME=%DIRNAME%
 | 
					set APP_HOME=%DIRNAME%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -41,13 +40,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set JAVA_EXE=java.exe
 | 
					set JAVA_EXE=java.exe
 | 
				
			||||||
%JAVA_EXE% -version >NUL 2>&1
 | 
					%JAVA_EXE% -version >NUL 2>&1
 | 
				
			||||||
if %ERRORLEVEL% equ 0 goto execute
 | 
					if "%ERRORLEVEL%" == "0" goto init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
 | 
					echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
echo location of your Java installation. 1>&2
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto fail
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,16 +54,31 @@ goto fail
 | 
				
			|||||||
set JAVA_HOME=%JAVA_HOME:"=%
 | 
					set JAVA_HOME=%JAVA_HOME:"=%
 | 
				
			||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
					set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if exist "%JAVA_EXE%" goto execute
 | 
					if exist "%JAVA_EXE%" goto init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
 | 
					echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
echo location of your Java installation. 1>&2
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto fail
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:init
 | 
				
			||||||
 | 
					@rem Get command-line arguments, handling Windows variants
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if not "%OS%" == "Windows_NT" goto win9xME_args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:win9xME_args
 | 
				
			||||||
 | 
					@rem Slurp the command line arguments.
 | 
				
			||||||
 | 
					set CMD_LINE_ARGS=
 | 
				
			||||||
 | 
					set _SKIP=2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:win9xME_args_slurp
 | 
				
			||||||
 | 
					if "x%~1" == "x" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set CMD_LINE_ARGS=%*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:execute
 | 
					:execute
 | 
				
			||||||
@rem Setup the command line
 | 
					@rem Setup the command line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -72,19 +86,17 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Execute Gradle
 | 
					@rem Execute Gradle
 | 
				
			||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
					"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:end
 | 
					:end
 | 
				
			||||||
@rem End local scope for the variables with windows NT shell
 | 
					@rem End local scope for the variables with windows NT shell
 | 
				
			||||||
if %ERRORLEVEL% equ 0 goto mainEnd
 | 
					if "%ERRORLEVEL%"=="0" goto mainEnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:fail
 | 
					:fail
 | 
				
			||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
					rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
				
			||||||
rem the _cmd.exe /c_ return code!
 | 
					rem the _cmd.exe /c_ return code!
 | 
				
			||||||
set EXIT_CODE=%ERRORLEVEL%
 | 
					if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
 | 
				
			||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
 | 
					exit /b 1
 | 
				
			||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
 | 
					 | 
				
			||||||
exit /b %EXIT_CODE%
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
:mainEnd
 | 
					:mainEnd
 | 
				
			||||||
if "%OS%"=="Windows_NT" endlocal
 | 
					if "%OS%"=="Windows_NT" endlocal
 | 
				
			||||||
@ -4,9 +4,7 @@
 | 
				
			|||||||
 * The settings file is used to specify which projects to include in your build.
 | 
					 * 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
 | 
					 * 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
 | 
					 * in the user manual at https://docs.gradle.org/6.5/userguide/multi_project_builds.html
 | 
				
			||||||
 * This project uses @Incubating APIs which are subject to change.
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
rootProject.name = 'gradle-plugin'
 | 
					rootProject.name = 'basic'
 | 
				
			||||||
include('plugin')
 | 
					 | 
				
			||||||
							
								
								
									
										6
									
								
								__tests__/samples/basic/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								__tests__/samples/basic/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# https://help.github.com/articles/dealing-with-line-endings/
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# These are explicitly windows files and should use crlf
 | 
				
			||||||
 | 
					*.bat           text eol=crlf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								__tests__/samples/basic/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								__tests__/samples/basic/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					# Ignore Gradle project-specific cache directory
 | 
				
			||||||
 | 
					.gradle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ignore Gradle build output directory
 | 
				
			||||||
 | 
					build
 | 
				
			||||||
							
								
								
									
										11
									
								
								__tests__/samples/basic/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								__tests__/samples/basic/build.gradle
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					plugins {
 | 
				
			||||||
 | 
					    id 'java'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					repositories {
 | 
				
			||||||
 | 
					    mavenCentral()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
					    testImplementation('junit:junit:4.12')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								__tests__/samples/basic/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								__tests__/samples/basic/gradle/wrapper/gradle-wrapper.jar
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							@ -1,8 +1,5 @@
 | 
				
			|||||||
distributionBase=GRADLE_USER_HOME
 | 
					distributionBase=GRADLE_USER_HOME
 | 
				
			||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
 | 
					 | 
				
			||||||
networkTimeout=10000
 | 
					 | 
				
			||||||
validateDistributionUrl=true
 | 
					 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
							
								
								
									
										185
									
								
								__tests__/samples/basic/gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							
							
						
						
									
										185
									
								
								__tests__/samples/basic/gradlew
									
									
									
									
										vendored
									
									
										Executable file
									
								
							@ -0,0 +1,185 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Copyright 2015 the original author or authors.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					# you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					# You may obtain a copy of the License at
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					#      https://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					# distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					# See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					# limitations under the License.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					##  Gradle start up script for UN*X
 | 
				
			||||||
 | 
					##
 | 
				
			||||||
 | 
					##############################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Attempt to set APP_HOME
 | 
				
			||||||
 | 
					# Resolve links: $0 may be a link
 | 
				
			||||||
 | 
					PRG="$0"
 | 
				
			||||||
 | 
					# Need this for relative symlinks.
 | 
				
			||||||
 | 
					while [ -h "$PRG" ] ; do
 | 
				
			||||||
 | 
					    ls=`ls -ld "$PRG"`
 | 
				
			||||||
 | 
					    link=`expr "$ls" : '.*-> \(.*\)$'`
 | 
				
			||||||
 | 
					    if expr "$link" : '/.*' > /dev/null; then
 | 
				
			||||||
 | 
					        PRG="$link"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        PRG=`dirname "$PRG"`"/$link"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					SAVED="`pwd`"
 | 
				
			||||||
 | 
					cd "`dirname \"$PRG\"`/" >/dev/null
 | 
				
			||||||
 | 
					APP_HOME="`pwd -P`"
 | 
				
			||||||
 | 
					cd "$SAVED" >/dev/null
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APP_NAME="Gradle"
 | 
				
			||||||
 | 
					APP_BASE_NAME=`basename "$0"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
 | 
				
			||||||
 | 
					DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Use the maximum available, or set MAX_FD != -1 to use that value.
 | 
				
			||||||
 | 
					MAX_FD="maximum"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					warn () {
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die () {
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    echo "$*"
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					    exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# OS specific support (must be 'true' or 'false').
 | 
				
			||||||
 | 
					cygwin=false
 | 
				
			||||||
 | 
					msys=false
 | 
				
			||||||
 | 
					darwin=false
 | 
				
			||||||
 | 
					nonstop=false
 | 
				
			||||||
 | 
					case "`uname`" in
 | 
				
			||||||
 | 
					  CYGWIN* )
 | 
				
			||||||
 | 
					    cygwin=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  Darwin* )
 | 
				
			||||||
 | 
					    darwin=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  MINGW* )
 | 
				
			||||||
 | 
					    msys=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  NONSTOP* )
 | 
				
			||||||
 | 
					    nonstop=true
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Determine the Java command to use to start the JVM.
 | 
				
			||||||
 | 
					if [ -n "$JAVA_HOME" ] ; then
 | 
				
			||||||
 | 
					    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
 | 
				
			||||||
 | 
					        # IBM's JDK on AIX uses strange locations for the executables
 | 
				
			||||||
 | 
					        JAVACMD="$JAVA_HOME/jre/sh/java"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        JAVACMD="$JAVA_HOME/bin/java"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    if [ ! -x "$JAVACMD" ] ; then
 | 
				
			||||||
 | 
					        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					    JAVACMD="java"
 | 
				
			||||||
 | 
					    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
 | 
					location of your Java installation."
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Increase the maximum file descriptors if we can.
 | 
				
			||||||
 | 
					if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
 | 
				
			||||||
 | 
					    MAX_FD_LIMIT=`ulimit -H -n`
 | 
				
			||||||
 | 
					    if [ $? -eq 0 ] ; then
 | 
				
			||||||
 | 
					        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
 | 
				
			||||||
 | 
					            MAX_FD="$MAX_FD_LIMIT"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        ulimit -n $MAX_FD
 | 
				
			||||||
 | 
					        if [ $? -ne 0 ] ; then
 | 
				
			||||||
 | 
					            warn "Could not set maximum file descriptor limit: $MAX_FD"
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Darwin, add options to specify how the application appears in the dock
 | 
				
			||||||
 | 
					if $darwin; then
 | 
				
			||||||
 | 
					    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# For Cygwin or MSYS, switch paths to Windows format before running java
 | 
				
			||||||
 | 
					if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
 | 
				
			||||||
 | 
					    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
 | 
				
			||||||
 | 
					    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    JAVACMD=`cygpath --unix "$JAVACMD"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # We build the pattern for arguments to be converted via cygpath
 | 
				
			||||||
 | 
					    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
 | 
				
			||||||
 | 
					    SEP=""
 | 
				
			||||||
 | 
					    for dir in $ROOTDIRSRAW ; do
 | 
				
			||||||
 | 
					        ROOTDIRS="$ROOTDIRS$SEP$dir"
 | 
				
			||||||
 | 
					        SEP="|"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    OURCYGPATTERN="(^($ROOTDIRS))"
 | 
				
			||||||
 | 
					    # Add a user-defined pattern to the cygpath arguments
 | 
				
			||||||
 | 
					    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
 | 
				
			||||||
 | 
					        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    # Now convert the arguments - kludge to limit ourselves to /bin/sh
 | 
				
			||||||
 | 
					    i=0
 | 
				
			||||||
 | 
					    for arg in "$@" ; do
 | 
				
			||||||
 | 
					        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
 | 
				
			||||||
 | 
					        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
 | 
				
			||||||
 | 
					            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					            eval `echo args$i`="\"$arg\""
 | 
				
			||||||
 | 
					        fi
 | 
				
			||||||
 | 
					        i=`expr $i + 1`
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    case $i in
 | 
				
			||||||
 | 
					        0) set -- ;;
 | 
				
			||||||
 | 
					        1) set -- "$args0" ;;
 | 
				
			||||||
 | 
					        2) set -- "$args0" "$args1" ;;
 | 
				
			||||||
 | 
					        3) set -- "$args0" "$args1" "$args2" ;;
 | 
				
			||||||
 | 
					        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
 | 
				
			||||||
 | 
					        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
 | 
				
			||||||
 | 
					        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
 | 
				
			||||||
 | 
					        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
 | 
				
			||||||
 | 
					        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
 | 
				
			||||||
 | 
					        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
 | 
				
			||||||
 | 
					    esac
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Escape application args
 | 
				
			||||||
 | 
					save () {
 | 
				
			||||||
 | 
					    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
 | 
				
			||||||
 | 
					    echo " "
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					APP_ARGS=`save "$@"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Collect all arguments for the java command, following the shell quoting and substitution rules
 | 
				
			||||||
 | 
					eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					exec "$JAVACMD" "$@"
 | 
				
			||||||
@ -26,7 +26,6 @@ if "%OS%"=="Windows_NT" setlocal
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set DIRNAME=%~dp0
 | 
					set DIRNAME=%~dp0
 | 
				
			||||||
if "%DIRNAME%" == "" set DIRNAME=.
 | 
					if "%DIRNAME%" == "" set DIRNAME=.
 | 
				
			||||||
@rem This is normally unused
 | 
					 | 
				
			||||||
set APP_BASE_NAME=%~n0
 | 
					set APP_BASE_NAME=%~n0
 | 
				
			||||||
set APP_HOME=%DIRNAME%
 | 
					set APP_HOME=%DIRNAME%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -41,13 +40,13 @@ if defined JAVA_HOME goto findJavaFromJavaHome
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
set JAVA_EXE=java.exe
 | 
					set JAVA_EXE=java.exe
 | 
				
			||||||
%JAVA_EXE% -version >NUL 2>&1
 | 
					%JAVA_EXE% -version >NUL 2>&1
 | 
				
			||||||
if %ERRORLEVEL% equ 0 goto execute
 | 
					if "%ERRORLEVEL%" == "0" goto init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
 | 
					echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
echo location of your Java installation. 1>&2
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto fail
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -55,16 +54,31 @@ goto fail
 | 
				
			|||||||
set JAVA_HOME=%JAVA_HOME:"=%
 | 
					set JAVA_HOME=%JAVA_HOME:"=%
 | 
				
			||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
					set JAVA_EXE=%JAVA_HOME%/bin/java.exe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if exist "%JAVA_EXE%" goto execute
 | 
					if exist "%JAVA_EXE%" goto init
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
 | 
					echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
 | 
				
			||||||
echo. 1>&2
 | 
					echo.
 | 
				
			||||||
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
 | 
					echo Please set the JAVA_HOME variable in your environment to match the
 | 
				
			||||||
echo location of your Java installation. 1>&2
 | 
					echo location of your Java installation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
goto fail
 | 
					goto fail
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:init
 | 
				
			||||||
 | 
					@rem Get command-line arguments, handling Windows variants
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if not "%OS%" == "Windows_NT" goto win9xME_args
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:win9xME_args
 | 
				
			||||||
 | 
					@rem Slurp the command line arguments.
 | 
				
			||||||
 | 
					set CMD_LINE_ARGS=
 | 
				
			||||||
 | 
					set _SKIP=2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					:win9xME_args_slurp
 | 
				
			||||||
 | 
					if "x%~1" == "x" goto execute
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set CMD_LINE_ARGS=%*
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:execute
 | 
					:execute
 | 
				
			||||||
@rem Setup the command line
 | 
					@rem Setup the command line
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -72,19 +86,17 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@rem Execute Gradle
 | 
					@rem Execute Gradle
 | 
				
			||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
 | 
					"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:end
 | 
					:end
 | 
				
			||||||
@rem End local scope for the variables with windows NT shell
 | 
					@rem End local scope for the variables with windows NT shell
 | 
				
			||||||
if %ERRORLEVEL% equ 0 goto mainEnd
 | 
					if "%ERRORLEVEL%"=="0" goto mainEnd
 | 
				
			||||||
 | 
					
 | 
				
			||||||
:fail
 | 
					:fail
 | 
				
			||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
					rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
 | 
				
			||||||
rem the _cmd.exe /c_ return code!
 | 
					rem the _cmd.exe /c_ return code!
 | 
				
			||||||
set EXIT_CODE=%ERRORLEVEL%
 | 
					if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
 | 
				
			||||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
 | 
					exit /b 1
 | 
				
			||||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
 | 
					 | 
				
			||||||
exit /b %EXIT_CODE%
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
:mainEnd
 | 
					:mainEnd
 | 
				
			||||||
if "%OS%"=="Windows_NT" endlocal
 | 
					if "%OS%"=="Windows_NT" endlocal
 | 
				
			||||||
							
								
								
									
										1
									
								
								__tests__/samples/basic/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								__tests__/samples/basic/settings.gradle
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					rootProject.name = 'basic'
 | 
				
			||||||
							
								
								
									
										6
									
								
								__tests__/samples/no-wrapper/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								__tests__/samples/no-wrapper/.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#
 | 
				
			||||||
 | 
					# https://help.github.com/articles/dealing-with-line-endings/
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# These are explicitly windows files and should use crlf
 | 
				
			||||||
 | 
					*.bat           text eol=crlf
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										5
									
								
								__tests__/samples/no-wrapper/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								__tests__/samples/no-wrapper/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					# Ignore Gradle project-specific cache directory
 | 
				
			||||||
 | 
					.gradle
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Ignore Gradle build output directory
 | 
				
			||||||
 | 
					build
 | 
				
			||||||
							
								
								
									
										3
									
								
								__tests__/samples/no-wrapper/settings.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								__tests__/samples/no-wrapper/settings.gradle
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					rootProject.name = 'no-wrapper'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					println "Using Gradle version: ${gradle.gradleVersion}"
 | 
				
			||||||
							
								
								
									
										302
									
								
								action.yml
									
									
									
									
									
								
							
							
						
						
									
										302
									
								
								action.yml
									
									
									
									
									
								
							@ -1,268 +1,70 @@
 | 
				
			|||||||
name: setup-gradle
 | 
					name: "Gradle Build Action"
 | 
				
			||||||
description: 'Configures Gradle for GitHub actions, caching state and generating a dependency graph via Dependency Submission.'
 | 
					description: 'Executes a Gradle build, caching useful state in the GitHub actions cache'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# https://help.github.com/en/articles/metadata-syntax-for-github-actions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
inputs:
 | 
					inputs:
 | 
				
			||||||
 | 
					  wrapper-directory:
 | 
				
			||||||
 | 
					    description: Path to the Gradle Wrapper directory
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    deprecationMessage: Use 'gradle-executable' to point to a gradlew[.bat] file in a non-default location
 | 
				
			||||||
 | 
					  gradle-executable:
 | 
				
			||||||
 | 
					    description: Path to the Gradle executable
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
  gradle-version:
 | 
					  gradle-version:
 | 
				
			||||||
    description: |
 | 
					    description: Gradle version to use
 | 
				
			||||||
      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
 | 
					    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 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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  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
 | 
					 | 
				
			||||||
    default: 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 if a GitHub dependency snapshot should be generated for each Gradle build, and if so, how.
 | 
					 | 
				
			||||||
      Valid values are 'disabled' (default), 'generate', 'generate-and-submit', 'generate-and-upload', 'download-and-submit' and 'clear'.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
    default: 'disabled'
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  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: true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  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'.
 | 
					 | 
				
			||||||
    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'.
 | 
					 | 
				
			||||||
    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".
 | 
					 | 
				
			||||||
    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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-injection-enabled:
 | 
					 | 
				
			||||||
    description: Enables Develocity injection.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-url:
 | 
					 | 
				
			||||||
    description: The URL for the Develocity server.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-allow-untrusted-server:
 | 
					 | 
				
			||||||
    description: Allow communication with an untrusted server; set to _true_ if your Develocity instance is using a self-signed.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-capture-file-fingerprints:
 | 
					 | 
				
			||||||
    description: Enables capturing the paths and content hashes of each individual input file.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-enforce-url:
 | 
					 | 
				
			||||||
    description: Enforce the configured Develocity URL over a URL configured in the project's build; set to _true_ to enforce publication of build scans to the configured Develocity URL.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-plugin-version:
 | 
					 | 
				
			||||||
    description: The version of the Develocity Gradle plugin to apply.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  develocity-ccud-plugin-version:
 | 
					 | 
				
			||||||
    description: The version of the Common Custom User Data Gradle plugin to apply, if any.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gradle-plugin-repository-url:
 | 
					 | 
				
			||||||
    description: The URL of the repository to use when resolving the Develocity and CCUD plugins; the Gradle Plugin Portal is used by default.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gradle-plugin-repository-username:
 | 
					 | 
				
			||||||
    description: The username for the repository URL to use when resolving the Develocity and CCUD.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  gradle-plugin-repository-password:
 | 
					 | 
				
			||||||
    description: The password for the repository URL to use when resolving the Develocity and CCUD plugins; Consider using secrets to pass the value to this variable.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # Wrapper validation configuration
 | 
					 | 
				
			||||||
  validate-wrappers:
 | 
					 | 
				
			||||||
    description: |
 | 
					 | 
				
			||||||
      When 'true', the action will perform the 'wrapper-validation' action automatically.
 | 
					 | 
				
			||||||
      If the wrapper checksums are not valid, the action will fail.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
    default: false
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  # DEPRECATED ACTION INPUTS
 | 
					 | 
				
			||||||
  build-scan-terms-of-service-url:
 | 
					 | 
				
			||||||
    description: The URL to the Build Scan® terms of use. This input must be set to 'https://gradle.com/terms-of-service'.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
    deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-url' instead.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  build-scan-terms-of-service-agree:
 | 
					 | 
				
			||||||
    description: Indicate that you agree to the Build Scan® terms of use. This input value must be "yes".
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
    deprecation-message: The input has been renamed to align with the Develocity API. Use 'build-scan-terms-of-use-agree' instead.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  generate-job-summary:
 | 
					 | 
				
			||||||
    description: When 'false', no Job Summary will be generated for the Job.
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
    default: true
 | 
					 | 
				
			||||||
    deprecation-message: Superceded by the new 'add-job-summary' and 'add-job-summary-as-pr-comment' parameters.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  arguments:
 | 
					 | 
				
			||||||
    description: Gradle command line arguments (supports multi-line input)
 | 
					 | 
				
			||||||
    required: false
 | 
					 | 
				
			||||||
    deprecation-message: Using the action to execute Gradle directly is deprecated in favor of using the action to setup Gradle, and executing Gradle in a subsequent Step.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  build-root-directory:
 | 
					  build-root-directory:
 | 
				
			||||||
    description: Path to the root directory of the build. Default is the root of the GitHub workspace.
 | 
					    description: Path to the root directory of the build
 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
    deprecation-message: Using the action to execute Gradle directly is deprecated in favor of using the action to setup Gradle, and executing Gradle in a subsequent Step.
 | 
					  arguments:
 | 
				
			||||||
 | 
					    description: Gradle command line arguments, see gradle --help
 | 
				
			||||||
  # EXPERIMENTAL ACTION INPUTS
 | 
					    required: false
 | 
				
			||||||
  # The following action properties allow fine-grained tweaking of the action caching behaviour.
 | 
					  distributions-cache-enabled:
 | 
				
			||||||
  # These properties are experimental and not (yet) designed for production use, and may change without notice in a subsequent release of `setup-gradle`.
 | 
					    description: Whether caching downloaded Gradle distributions is enabled or not, default to 'true'
 | 
				
			||||||
  # Use at your own risk!
 | 
					    required: false
 | 
				
			||||||
  gradle-home-cache-strict-match:
 | 
					    default: true
 | 
				
			||||||
    description: When 'true', the action will not attempt to restore the Gradle User Home entries from other Jobs.
 | 
					  wrapper-cache-enabled:
 | 
				
			||||||
 | 
					    description: Whether caching wrapper installation is enabled or not, default to 'true'
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: true
 | 
				
			||||||
 | 
					    deprecationMessage: Replaced by 'distributions-cache-enabled' which enables caching for all downloaded Gradle distributions
 | 
				
			||||||
 | 
					  dependencies-cache-enabled:
 | 
				
			||||||
 | 
					    description: Whether caching dependencies is enabled or not, default to 'false'
 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
    default: false
 | 
					    default: false
 | 
				
			||||||
 | 
					  dependencies-cache-key:
 | 
				
			||||||
  # INTERNAL ACTION INPUTS
 | 
					    description: Globs of files to hash in the build root directory, separated by new lines, use best-effort if unset
 | 
				
			||||||
  # 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
 | 
					    required: false
 | 
				
			||||||
    default: ${{ toJSON(matrix) }}
 | 
					  dependencies-cache-exact:
 | 
				
			||||||
 | 
					    description: Whether to restore only if exact match, default to 'false'
 | 
				
			||||||
  github-token:
 | 
					 | 
				
			||||||
    description: The GitHub token used to authenticate when submitting via the Dependency Submission API.
 | 
					 | 
				
			||||||
    default: ${{ github.token }}
 | 
					 | 
				
			||||||
    required: false
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: false
 | 
				
			||||||
 | 
					  configuration-cache-enabled:
 | 
				
			||||||
 | 
					    description: Whether caching build configuration is enabled or not, default to 'false'
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: false
 | 
				
			||||||
 | 
					  configuration-cache-key:
 | 
				
			||||||
 | 
					    description: Globs of files to hash in the build root directory, separated by new lines, use best-effort if unset
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					  configuration-cache-exact:
 | 
				
			||||||
 | 
					    description: Whether to restore only if exact match, default to 'false'
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: false
 | 
				
			||||||
 | 
					  cache-read-only:
 | 
				
			||||||
 | 
					    description: When 'true', existing entries will be read from the cache but no entries will be written
 | 
				
			||||||
 | 
					    required: false
 | 
				
			||||||
 | 
					    default: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
outputs:
 | 
					outputs:
 | 
				
			||||||
  build-scan-url:
 | 
					  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.
 | 
					    description: Link to the build scan if any
 | 
				
			||||||
    value: ${{ steps.setup-gradle.outputs.build-scan-url }}
 | 
					 | 
				
			||||||
  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.
 | 
					 | 
				
			||||||
    value: ${{ steps.setup-gradle.outputs.dependency-graph-file }}
 | 
					 | 
				
			||||||
  gradle-version:
 | 
					 | 
				
			||||||
    description: Version of Gradle that was setup by the action
 | 
					 | 
				
			||||||
    value: ${{ steps.setup-gradle.outputs.gradle-version }}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
runs:
 | 
					runs:
 | 
				
			||||||
  using: "composite"
 | 
					  using: 'node12'
 | 
				
			||||||
  steps:
 | 
					  main: 'dist/main/index.js'
 | 
				
			||||||
    - name: Setup Gradle
 | 
					  post: 'dist/post/index.js'
 | 
				
			||||||
      id: setup-gradle
 | 
					  post-if: success()
 | 
				
			||||||
      uses: gradle/actions/setup-gradle@v3.5.0
 | 
					 | 
				
			||||||
      with:
 | 
					 | 
				
			||||||
        gradle-version: ${{ inputs.gradle-version }}
 | 
					 | 
				
			||||||
        cache-disabled: ${{ inputs.cache-disabled }}
 | 
					 | 
				
			||||||
        cache-read-only: ${{ inputs.cache-read-only }}
 | 
					 | 
				
			||||||
        cache-write-only: ${{ inputs.cache-write-only }}
 | 
					 | 
				
			||||||
        cache-overwrite-existing: ${{ inputs.cache-overwrite-existing }}
 | 
					 | 
				
			||||||
        cache-encryption-key: ${{ inputs.cache-encryption-key }}
 | 
					 | 
				
			||||||
        gradle-home-cache-includes: ${{ inputs.gradle-home-cache-includes }}
 | 
					 | 
				
			||||||
        gradle-home-cache-excludes: ${{ inputs.gradle-home-cache-excludes }}
 | 
					 | 
				
			||||||
        gradle-home-cache-cleanup: ${{ inputs.gradle-home-cache-cleanup }}
 | 
					 | 
				
			||||||
        add-job-summary: ${{ inputs.add-job-summary }}
 | 
					 | 
				
			||||||
        add-job-summary-as-pr-comment: ${{ inputs.add-job-summary-as-pr-comment }}
 | 
					 | 
				
			||||||
        dependency-graph: ${{ inputs.dependency-graph }}
 | 
					 | 
				
			||||||
        dependency-graph-continue-on-failure: ${{ inputs.dependency-graph-continue-on-failure }}
 | 
					 | 
				
			||||||
        artifact-retention-days: ${{ inputs.artifact-retention-days }}
 | 
					 | 
				
			||||||
        build-scan-publish: ${{ inputs.build-scan-publish }}
 | 
					 | 
				
			||||||
        build-scan-terms-of-use-url: ${{ inputs.build-scan-terms-of-use-url }}
 | 
					 | 
				
			||||||
        build-scan-terms-of-use-agree: ${{ inputs.build-scan-terms-of-use-agree }}
 | 
					 | 
				
			||||||
        validate-wrappers: ${{ inputs.validate-wrappers }}
 | 
					 | 
				
			||||||
        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 }}
 | 
					 | 
				
			||||||
        generate-job-summary: ${{ inputs.generate-job-summary }}
 | 
					 | 
				
			||||||
        arguments: ${{ inputs.arguments }}
 | 
					 | 
				
			||||||
        build-root-directory: ${{ inputs.build-root-directory }}
 | 
					 | 
				
			||||||
        gradle-home-cache-strict-match: ${{ inputs.gradle-home-cache-strict-match }}
 | 
					 | 
				
			||||||
        workflow-job-context: ${{ inputs.workflow-job-context }}
 | 
					 | 
				
			||||||
        github-token: ${{ inputs.github-token }}
 | 
					 | 
				
			||||||
        develocity-access-key: ${{ inputs.develocity-access-key }}
 | 
					 | 
				
			||||||
        develocity-token-expiry: ${{ inputs.develocity-token-expiry }}
 | 
					 | 
				
			||||||
        develocity-injection-enabled: ${{ inputs.develocity-injection-enabled }}
 | 
					 | 
				
			||||||
        develocity-url: ${{ inputs.develocity-url }}
 | 
					 | 
				
			||||||
        develocity-allow-untrusted-server: ${{ inputs.develocity-allow-untrusted-server }}
 | 
					 | 
				
			||||||
        develocity-capture-file-fingerprints: ${{ inputs.develocity-capture-file-fingerprints }}
 | 
					 | 
				
			||||||
        develocity-enforce-url: ${{ inputs.develocity-enforce-url }}
 | 
					 | 
				
			||||||
        develocity-plugin-version: ${{ inputs.develocity-plugin-version }}
 | 
					 | 
				
			||||||
        develocity-ccud-plugin-version: ${{ inputs.develocity-ccud-plugin-version }}
 | 
					 | 
				
			||||||
        gradle-plugin-repository-url: ${{ inputs.gradle-plugin-repository-url }}
 | 
					 | 
				
			||||||
        gradle-plugin-repository-username: ${{ inputs.gradle-plugin-repository-username }}
 | 
					 | 
				
			||||||
        gradle-plugin-repository-password: ${{ inputs.gradle-plugin-repository-password }}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      env:
 | 
					 | 
				
			||||||
        GRADLE_ACTION_ID: gradle/gradle-build-action
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
branding:
 | 
					branding:
 | 
				
			||||||
  icon: 'box'
 | 
					  icon: 'box'
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										1
									
								
								dist/main/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/main/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								dist/post/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dist/post/index.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										12
									
								
								jest.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								jest.config.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					module.exports = {
 | 
				
			||||||
 | 
					  clearMocks: true,
 | 
				
			||||||
 | 
					  moduleFileExtensions: ['js', 'ts', 'json'],
 | 
				
			||||||
 | 
					  testEnvironment: 'node',
 | 
				
			||||||
 | 
					  testMatch: ['**/*.test.ts'],
 | 
				
			||||||
 | 
					  testRunner: 'jest-circus/runner',
 | 
				
			||||||
 | 
					  transform: {
 | 
				
			||||||
 | 
					    '^.+\\.ts$': 'ts-jest'
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  verbose: true,
 | 
				
			||||||
 | 
					  setupFilesAfterEnv: ['./jest.setup.js']
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								jest.setup.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								jest.setup.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					jest.setTimeout(10000) // in milliseconds
 | 
				
			||||||
							
								
								
									
										6921
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										6921
									
								
								package-lock.json
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										51
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								package.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,51 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "name": "gradle-build-action",
 | 
				
			||||||
 | 
					  "version": "1.0.0",
 | 
				
			||||||
 | 
					  "private": true,
 | 
				
			||||||
 | 
					  "description": "Execute Gradle Build",
 | 
				
			||||||
 | 
					  "scripts": {
 | 
				
			||||||
 | 
					    "format": "prettier --write **/*.ts",
 | 
				
			||||||
 | 
					    "format-check": "prettier --check **/*.ts",
 | 
				
			||||||
 | 
					    "lint": "eslint src/**/*.ts",
 | 
				
			||||||
 | 
					    "build": "ncc build src/main.ts --out dist/main --minify && ncc build src/post.ts --out dist/post --minify",
 | 
				
			||||||
 | 
					    "test": "jest",
 | 
				
			||||||
 | 
					    "all": "npm run format && npm run lint && npm run build && npm test"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "repository": {
 | 
				
			||||||
 | 
					    "type": "git",
 | 
				
			||||||
 | 
					    "url": "git+https://github.com/gradle/gradle-build-action.git"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "keywords": [
 | 
				
			||||||
 | 
					    "github",
 | 
				
			||||||
 | 
					    "actions",
 | 
				
			||||||
 | 
					    "github-actions",
 | 
				
			||||||
 | 
					    "gradle"
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  "author": "Paul Merlin <paul@nosphere.org>",
 | 
				
			||||||
 | 
					  "license": "MIT",
 | 
				
			||||||
 | 
					  "dependencies": {
 | 
				
			||||||
 | 
					    "@actions/cache": "1.0.7",
 | 
				
			||||||
 | 
					    "@actions/core": "1.4.0",
 | 
				
			||||||
 | 
					    "@actions/exec": "1.1.0",
 | 
				
			||||||
 | 
					    "@actions/glob": "0.2.0",
 | 
				
			||||||
 | 
					    "@actions/http-client": "1.0.11",
 | 
				
			||||||
 | 
					    "@actions/tool-cache": "1.7.1",
 | 
				
			||||||
 | 
					    "string-argv": "0.3.1"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "devDependencies": {
 | 
				
			||||||
 | 
					    "@types/jest": "26.0.23",
 | 
				
			||||||
 | 
					    "@types/node": "14.17.3",
 | 
				
			||||||
 | 
					    "@types/unzipper": "0.10.4",
 | 
				
			||||||
 | 
					    "@typescript-eslint/parser": "4.28.2",
 | 
				
			||||||
 | 
					    "@zeit/ncc": "0.22.3",
 | 
				
			||||||
 | 
					    "eslint": "7.30.0",
 | 
				
			||||||
 | 
					    "eslint-plugin-github": "4.1.3",
 | 
				
			||||||
 | 
					    "eslint-plugin-jest": "24.3.6",
 | 
				
			||||||
 | 
					    "jest": "26.6.3",
 | 
				
			||||||
 | 
					    "jest-circus": "26.6.3",
 | 
				
			||||||
 | 
					    "js-yaml": "3.14.1",
 | 
				
			||||||
 | 
					    "prettier": "2.3.2",
 | 
				
			||||||
 | 
					    "ts-jest": "26.5.6",
 | 
				
			||||||
 | 
					    "typescript": "4.3.5"
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										113
									
								
								src/cache-configuration.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								src/cache-configuration.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,113 @@
 | 
				
			|||||||
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					import * as fs from 'fs'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as core from '@actions/core'
 | 
				
			||||||
 | 
					import * as cache from '@actions/cache'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as cacheUtils from './cache-utils'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {
 | 
				
			||||||
 | 
					    inputCacheKeyGlobs,
 | 
				
			||||||
 | 
					    tryDeleteFiles,
 | 
				
			||||||
 | 
					    isDependenciesCacheDisabled
 | 
				
			||||||
 | 
					} from './cache-dependencies'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const CONFIGURATION_CACHE_PATH = 'CONFIGURATION_CACHE_PATH'
 | 
				
			||||||
 | 
					const CONFIGURATION_CACHE_KEY = 'CONFIGURATION_CACHE_KEY'
 | 
				
			||||||
 | 
					const CONFIGURATION_CACHE_RESULT = 'CONFIGURATION_CACHE_RESULT'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function restoreCachedConfiguration(
 | 
				
			||||||
 | 
					    rootDir: string
 | 
				
			||||||
 | 
					): Promise<void> {
 | 
				
			||||||
 | 
					    if (isConfigurationCacheDisabled()) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (isDependenciesCacheDisabled()) {
 | 
				
			||||||
 | 
					        throw new Error(
 | 
				
			||||||
 | 
					            `Must enable dependencies-cache when configuration-cache is enabled`
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cachePath = path.resolve(rootDir, '.gradle/configuration-cache')
 | 
				
			||||||
 | 
					    if (fs.existsSync(cachePath)) return
 | 
				
			||||||
 | 
					    core.saveState(CONFIGURATION_CACHE_PATH, cachePath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const inputCacheExact = core.getBooleanInput('configuration-cache-exact')
 | 
				
			||||||
 | 
					    const cacheKeyPrefix = 'configuration|'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const args = core.getInput('arguments')
 | 
				
			||||||
 | 
					    const argsKey = cacheUtils.truncateArgs(args)
 | 
				
			||||||
 | 
					    const cacheKeyWithArgs = `${cacheKeyPrefix}${argsKey}|`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cacheKeyGlobs = inputCacheKeyGlobs('configuration-cache-key')
 | 
				
			||||||
 | 
					    const hash = await cacheUtils.hashFiles(rootDir, cacheKeyGlobs)
 | 
				
			||||||
 | 
					    const cacheKey = `${cacheKeyWithArgs}${hash}`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.saveState(CONFIGURATION_CACHE_KEY, cacheKey)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cacheResult = await cache.restoreCache(
 | 
				
			||||||
 | 
					        [cachePath],
 | 
				
			||||||
 | 
					        cacheKey,
 | 
				
			||||||
 | 
					        inputCacheExact ? [] : [cacheKeyWithArgs, cacheKeyPrefix]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!cacheResult) {
 | 
				
			||||||
 | 
					        core.info(
 | 
				
			||||||
 | 
					            'Configuration cache not found, expect task graph calculation.'
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.saveState(CONFIGURATION_CACHE_RESULT, cacheResult)
 | 
				
			||||||
 | 
					    core.info(`Configuration restored from cache key: ${cacheResult}`)
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function cacheConfiguration(): Promise<void> {
 | 
				
			||||||
 | 
					    if (isConfigurationCacheDisabled()) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cachePath = core.getState(CONFIGURATION_CACHE_PATH)
 | 
				
			||||||
 | 
					    const cacheKey = core.getState(CONFIGURATION_CACHE_KEY)
 | 
				
			||||||
 | 
					    const cacheResult = core.getState(CONFIGURATION_CACHE_RESULT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!cachePath || !fs.existsSync(cachePath)) {
 | 
				
			||||||
 | 
					        core.debug('No configuration to cache.')
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (cacheResult && cacheKey === cacheResult) {
 | 
				
			||||||
 | 
					        core.info(
 | 
				
			||||||
 | 
					            `Configuration cache hit occurred on the cache key ${cacheKey}, not saving cache.`
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const locksDeleted = tryDeleteFiles([
 | 
				
			||||||
 | 
					        path.resolve(cachePath, 'configuration-cache.lock')
 | 
				
			||||||
 | 
					    ])
 | 
				
			||||||
 | 
					    if (!locksDeleted) {
 | 
				
			||||||
 | 
					        core.warning(
 | 
				
			||||||
 | 
					            'Unable to delete configuration lock files, try using --no-daemon or stopping the daemon last if you have several Gradle steps, not saving cache.'
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.info(`Will cache configuration with key ${cacheKey}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        await cache.saveCache([cachePath], cacheKey)
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        if (error.name === cache.ValidationError.name) {
 | 
				
			||||||
 | 
					            throw error
 | 
				
			||||||
 | 
					        } else if (error.name === cache.ReserveCacheError.name) {
 | 
				
			||||||
 | 
					            core.info(error.message)
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            core.info(`[warning] ${error.message}`)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function isConfigurationCacheDisabled(): boolean {
 | 
				
			||||||
 | 
					    return !core.getBooleanInput('configuration-cache-enabled')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										126
									
								
								src/cache-dependencies.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								src/cache-dependencies.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,126 @@
 | 
				
			|||||||
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					import * as fs from 'fs'
 | 
				
			||||||
 | 
					import * as os from 'os'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as core from '@actions/core'
 | 
				
			||||||
 | 
					import * as cache from '@actions/cache'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as cacheUtils from './cache-utils'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const DEPENDENCIES_CACHE_PATH = 'DEPENDENCIES_CACHE_PATH'
 | 
				
			||||||
 | 
					const DEPENDENCIES_CACHE_KEY = 'DEPENDENCIES_CACHE_KEY'
 | 
				
			||||||
 | 
					const DEPENDENCIES_CACHE_RESULT = 'DEPENDENCIES_CACHE_RESULT'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function restoreCachedDependencies(
 | 
				
			||||||
 | 
					    rootDir: string
 | 
				
			||||||
 | 
					): Promise<void> {
 | 
				
			||||||
 | 
					    if (isDependenciesCacheDisabled()) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cachePath = path.resolve(os.homedir(), '.gradle/caches/modules-2')
 | 
				
			||||||
 | 
					    if (fs.existsSync(cachePath)) return
 | 
				
			||||||
 | 
					    core.saveState(DEPENDENCIES_CACHE_PATH, cachePath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const inputCacheExact = core.getBooleanInput('dependencies-cache-exact')
 | 
				
			||||||
 | 
					    const cacheKeyPrefix = 'dependencies|'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const args = core.getInput('arguments')
 | 
				
			||||||
 | 
					    const argsKey = cacheUtils.truncateArgs(args)
 | 
				
			||||||
 | 
					    const cacheKeyWithArgs = `${cacheKeyPrefix}${argsKey}|`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cacheKeyGlobs = inputCacheKeyGlobs('dependencies-cache-key')
 | 
				
			||||||
 | 
					    const hash = await cacheUtils.hashFiles(rootDir, cacheKeyGlobs)
 | 
				
			||||||
 | 
					    const cacheKey = `${cacheKeyWithArgs}${hash}`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.saveState(DEPENDENCIES_CACHE_KEY, cacheKey)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cacheResult = await cache.restoreCache(
 | 
				
			||||||
 | 
					        [cachePath],
 | 
				
			||||||
 | 
					        cacheKey,
 | 
				
			||||||
 | 
					        inputCacheExact ? [] : [cacheKeyWithArgs, cacheKeyPrefix]
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!cacheResult) {
 | 
				
			||||||
 | 
					        core.info('Dependencies cache not found, expect dependencies download.')
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.saveState(DEPENDENCIES_CACHE_RESULT, cacheResult)
 | 
				
			||||||
 | 
					    core.info(`Dependencies restored from cache key: ${cacheResult}`)
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function cacheDependencies(): Promise<void> {
 | 
				
			||||||
 | 
					    if (isDependenciesCacheDisabled()) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const cachePath = core.getState(DEPENDENCIES_CACHE_PATH)
 | 
				
			||||||
 | 
					    const cacheKey = core.getState(DEPENDENCIES_CACHE_KEY)
 | 
				
			||||||
 | 
					    const cacheResult = core.getState(DEPENDENCIES_CACHE_RESULT)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!cachePath || !fs.existsSync(cachePath)) {
 | 
				
			||||||
 | 
					        core.debug('No dependencies to cache.')
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (cacheResult && cacheKey === cacheResult) {
 | 
				
			||||||
 | 
					        core.info(
 | 
				
			||||||
 | 
					            `Dependencies cache hit occurred on the cache key ${cacheKey}, not saving cache.`
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const locksDeleted = tryDeleteFiles([
 | 
				
			||||||
 | 
					        path.resolve(cachePath, 'modules-2.lock')
 | 
				
			||||||
 | 
					    ])
 | 
				
			||||||
 | 
					    if (!locksDeleted) {
 | 
				
			||||||
 | 
					        core.warning(
 | 
				
			||||||
 | 
					            'Unable to delete dependencies lock files, try using --no-daemon or stopping the daemon last if you have several Gradle steps, not saving cache.'
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.info(`Will cache dependencies with key ${cacheKey}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        await cache.saveCache([cachePath], cacheKey)
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        if (error.name === cache.ValidationError.name) {
 | 
				
			||||||
 | 
					            throw error
 | 
				
			||||||
 | 
					        } else if (error.name === cache.ReserveCacheError.name) {
 | 
				
			||||||
 | 
					            core.info(error.message)
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            core.info(`[warning] ${error.message}`)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function tryDeleteFiles(filePaths: string[]): boolean {
 | 
				
			||||||
 | 
					    let failure = false
 | 
				
			||||||
 | 
					    for (const filePath of filePaths) {
 | 
				
			||||||
 | 
					        if (fs.existsSync(filePath)) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                fs.unlinkSync(filePath)
 | 
				
			||||||
 | 
					            } catch (error) {
 | 
				
			||||||
 | 
					                failure = true
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return !failure
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function isDependenciesCacheDisabled(): boolean {
 | 
				
			||||||
 | 
					    return !core.getBooleanInput('dependencies-cache-enabled')
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function inputCacheKeyGlobs(input: string): string[] {
 | 
				
			||||||
 | 
					    const inputValue = core.getMultilineInput(input)
 | 
				
			||||||
 | 
					    return inputValue.length > 0
 | 
				
			||||||
 | 
					        ? inputValue
 | 
				
			||||||
 | 
					        : [
 | 
				
			||||||
 | 
					              '**/*.gradle',
 | 
				
			||||||
 | 
					              '**/*.gradle.kts',
 | 
				
			||||||
 | 
					              '**/gradle.properties',
 | 
				
			||||||
 | 
					              'gradle/**'
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										17
									
								
								src/cache-utils.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								src/cache-utils.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					import * as glob from '@actions/glob'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function hashFiles(
 | 
				
			||||||
 | 
					    baseDir: string,
 | 
				
			||||||
 | 
					    patterns: string[] = ['**'],
 | 
				
			||||||
 | 
					    followSymbolicLinks = false
 | 
				
			||||||
 | 
					): Promise<string | null> {
 | 
				
			||||||
 | 
					    const combinedPatterns = patterns
 | 
				
			||||||
 | 
					        .map(pattern => `${baseDir}${path.sep}${pattern}`)
 | 
				
			||||||
 | 
					        .join('\n')
 | 
				
			||||||
 | 
					    return glob.hashFiles(combinedPatterns, {followSymbolicLinks})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function truncateArgs(args: string): string {
 | 
				
			||||||
 | 
					    return args.trim().replace(/\s+/g, ' ').substr(0, 400)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										132
									
								
								src/cache-wrapper.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										132
									
								
								src/cache-wrapper.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,132 @@
 | 
				
			|||||||
 | 
					import * as path from 'path'
 | 
				
			||||||
 | 
					import * as fs from 'fs'
 | 
				
			||||||
 | 
					import * as os from 'os'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import * as core from '@actions/core'
 | 
				
			||||||
 | 
					import * as cache from '@actions/cache'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const WRAPPER_SLUG = 'WRAPPER_SLUG'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function restoreCachedWrapperDist(
 | 
				
			||||||
 | 
					    gradlewDirectory: string | null
 | 
				
			||||||
 | 
					): Promise<void> {
 | 
				
			||||||
 | 
					    if (isWrapperCacheDisabled()) return
 | 
				
			||||||
 | 
					    if (gradlewDirectory == null) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const wrapperProperties = path.join(
 | 
				
			||||||
 | 
					        path.resolve(gradlewDirectory),
 | 
				
			||||||
 | 
					        'gradle/wrapper/gradle-wrapper.properties'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    const wrapperSlug = extractGradleWrapperSlugFrom(wrapperProperties)
 | 
				
			||||||
 | 
					    if (!wrapperSlug) {
 | 
				
			||||||
 | 
					        core.warning(
 | 
				
			||||||
 | 
					            `Could not calculate wrapper version from ${wrapperProperties}`
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const wrapperDir = getWrapperDir(wrapperSlug)
 | 
				
			||||||
 | 
					    const cacheKey = getCacheKey(wrapperSlug)
 | 
				
			||||||
 | 
					    const cachePath = getCachePath(wrapperSlug)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Check if the wrapper has already been downloaded to Gradle User Home
 | 
				
			||||||
 | 
					    if (fs.existsSync(wrapperDir)) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        const restoredKey = await cache.restoreCache([cachePath], cacheKey)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (restoredKey) {
 | 
				
			||||||
 | 
					            core.info(
 | 
				
			||||||
 | 
					                `Wrapper installation restored from cache key: ${restoredKey}`
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            core.info(
 | 
				
			||||||
 | 
					                `Wrapper installation cache not found. Will download and cache with key: ${cacheKey}.`
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					            // Save the slug to trigger caching of the downloaded wrapper
 | 
				
			||||||
 | 
					            core.saveState(WRAPPER_SLUG, wrapperSlug)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        core.info(
 | 
				
			||||||
 | 
					            `Wrapper installation cache restore failed for key: ${cacheKey}.\n  ${error}`
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export async function cacheWrapperDist(): Promise<void> {
 | 
				
			||||||
 | 
					    if (isWrapperCacheDisabled()) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const wrapperSlug = core.getState(WRAPPER_SLUG)
 | 
				
			||||||
 | 
					    if (!wrapperSlug) return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const wrapperDir = getWrapperDir(wrapperSlug)
 | 
				
			||||||
 | 
					    const cacheKey = getCacheKey(wrapperSlug)
 | 
				
			||||||
 | 
					    const cachePath = getCachePath(wrapperSlug)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!fs.existsSync(wrapperDir)) {
 | 
				
			||||||
 | 
					        core.warning(`No wrapper installation to cache at ${wrapperDir}`)
 | 
				
			||||||
 | 
					        return
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    core.info(`Will cache wrapper zip ${cachePath} with key ${cacheKey}`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    try {
 | 
				
			||||||
 | 
					        await cache.saveCache([cachePath], cacheKey)
 | 
				
			||||||
 | 
					    } catch (error) {
 | 
				
			||||||
 | 
					        if (error.name === cache.ValidationError.name) {
 | 
				
			||||||
 | 
					            throw error
 | 
				
			||||||
 | 
					        } else if (error.name === cache.ReserveCacheError.name) {
 | 
				
			||||||
 | 
					            core.info(error.message)
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            core.info(`[warning] ${error.message}`)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function extractGradleWrapperSlugFrom(
 | 
				
			||||||
 | 
					    wrapperProperties: string
 | 
				
			||||||
 | 
					): string | null {
 | 
				
			||||||
 | 
					    const props = fs.readFileSync(wrapperProperties, {encoding: 'utf8'})
 | 
				
			||||||
 | 
					    const distUrlLine = props
 | 
				
			||||||
 | 
					        .split('\n')
 | 
				
			||||||
 | 
					        .find(line => line.startsWith('distributionUrl'))
 | 
				
			||||||
 | 
					    if (!distUrlLine) return null
 | 
				
			||||||
 | 
					    return extractGradleWrapperSlugFromDistUri(distUrlLine.substr(16).trim())
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function extractGradleWrapperSlugFromDistUri(
 | 
				
			||||||
 | 
					    distUri: string
 | 
				
			||||||
 | 
					): string | null {
 | 
				
			||||||
 | 
					    const regex = /.*gradle-(.*-(bin|all))\.zip/
 | 
				
			||||||
 | 
					    const match = distUri.match(regex)
 | 
				
			||||||
 | 
					    return match ? match[1] : null
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function isWrapperCacheDisabled(): boolean {
 | 
				
			||||||
 | 
					    // Check if either 'distributions' or 'wrapper' cache has been disabled
 | 
				
			||||||
 | 
					    const wrapperCacheEnabled = core.getBooleanInput('wrapper-cache-enabled')
 | 
				
			||||||
 | 
					    const distributionsCacheEnabled = core.getBooleanInput(
 | 
				
			||||||
 | 
					        'distributions-cache-enabled'
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					    return !wrapperCacheEnabled || !distributionsCacheEnabled
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getCacheKey(wrapperSlug: string): string {
 | 
				
			||||||
 | 
					    return `wrapper-v1-${wrapperSlug}`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getWrapperDir(wrapperSlug: string): string {
 | 
				
			||||||
 | 
					    return path.resolve(
 | 
				
			||||||
 | 
					        os.homedir(),
 | 
				
			||||||
 | 
					        `.gradle/wrapper/dists/gradle-${wrapperSlug}`
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function getCachePath(wrapperSlug: string): string {
 | 
				
			||||||
 | 
					    return path.resolve(
 | 
				
			||||||
 | 
					        os.homedir(),
 | 
				
			||||||
 | 
					        `.gradle/wrapper/dists/gradle-${wrapperSlug}/*/gradle-${wrapperSlug}.zip`
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
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