The GradleBuild native step performs a Gradle build on files in a Git repository. Optionally, it can also publish build information to Artifactory.
This step utilizes the JFrog CLI to run a Gradle build for your project. The CLI config file can be created during execution, or you can generate it ahead of time with the settings you require and commit it to your repository. For information about gradle-config, see CLI for JFrog Artifactory documentation.
Important
The GradleBuild
native step uses Java runtime image by default. If runtime image of any other type is configured at pipeline-level for this native step, it will be ignored.
YAML Schema
The YAML schema for GradleBuild native step is as follows:
GradleBuild
pipelines: - name: <string> steps: - name: <string> type: GradleBuild configuration: #inherits all the tags from bash gradleCommand: <string> #required sourceLocation: <string> #optional configFileLocation: <string> #optional configFileName: <string> #optional resolverRepo: <string> #optional deployerRepo: <string> #optional usesPlugin: <string> #optional useWrapper: <string> #optional forceXrayScan: <boolean> #optional failOnScan: <boolean> #optional; default true autoPublishBuildInfo: <boolean> #optional inputResources: - name: myGitRepo - name: artifactoryFileSpec outputResources: - name: myBuildInfo integrations: - name: myArtifactory execution: onStart: - echo "Preparing for work..." onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: #always - echo "Cleaning up some stuff"
Tags
name
An alphanumeric string (underscores are permitted) that identifies the step.
type
Must be GradleBuild
for this step type.
configuration
Specifies all configuration selections for the step's execution environment. This step inherits the Bash/ PowerShell step configuration tags, including these pertinent tags:
Tag | Description of usage | Required/Optional |
---|---|---|
| Must specify an Artifactory Integration. | Required |
| Must specify a GitRepo resource. The Gradle command will perform the build on files in the Git repository at May also optionally specify a FileSpec resource that specifies what files to copy to | Required |
| Must specify a BuildInfo resource if If | May be required |
In addition, these tags can be defined to support the step's native operation:
Tags derived from Bash
All native steps derive from the Bash step. This means that all steps share the same base set of tags from Bash, while native steps have their own additional tags as well that support the step's particular function. So it's important to be familiar with the Bash step definition, since it's the core of the definition of all other steps.
Tag | Description of usage | Required/Optional |
---|---|---|
| Specifies a command line string of options to use with the Gradle build tool. | Required |
| Location of the source files to build relative to the root of the GitRepo repository. If no path is specified, the root of the repository will be used. | Optional |
| Artifactory repository to be used to resolve dependencies. May not be used with | Optional |
| Artifactory repository to which to deploy. May not be used with | Optional |
| Set to Do not use with | Optional |
| If set to Do not use with | Optional |
| When set to Default is | Optional |
| When set to Default is | Optional |
| When set to Default is | Optional |
| Gradle configuration file. If specified, the The NoteUse this option only if you have committed this configuration file to your source. | Optional |
| Gradle configuration file location. A | Optional |
execution
Declares collections of shell command sequences to perform for pre- and post-execution phases:
Tag | Description of usage | Required/Optional |
---|---|---|
| Commands to execute in advance of the native operation | Optional |
| Commands to execute on successful completion | Optional |
| Commands to execute on failed completion | Optional |
| Commands to execute on any completion | Optional |
The actions performed for the onExecute
phase are inherent to this step type and may not be overridden.
Examples
The following examples show a few ways in which a GradleBuild step can be configured.
Using Default Values
The most basic form of GradleBuild. Uses all default values. This step will navigate to the root of the repo specified in the inputResources array, and run the specified Gradle command.
GradleBuild
pipelines: - name: gradleBuildPipeline steps: - name: gradleBuildStep type: GradleBuild configuration: gradleCommand: "build" inputResources: - name: gitRepoResource integrations: - name: artifactory_integration
Source Location is a Sub-directory of Git Repo
A more complicated GradleBuild step, in this one the source location is a subdirectory of the GitRepo (gradle-example-minimal) and the project uses the Gradle Artifactory Plugin. Resolver and deployer repositories have also been configured, resolving from jcenter and deploying to gradle-local.
GradleBuild
pipelines: - name: gradleBuildPipeline steps: - name: gradleBuildStep type: GradleBuild configuration: gradleCommand: "artifactoryPublish clean -b build.gradle" sourceLocation: gradle-example-minimal deployerRepo: gradle-local resolverRepo: jcenter usesPlugin: true inputResources: - name: gitRepoResource integrations: - name: artifactory_integration
Using Config File
This GradleBuild step is similar to the previous example, but has aconfig file committed to the repository as gradle-example-minimal/gradle-art-config. The config file contains the repository and plugin settings.
GradleBuild
pipelines: - name: gradleBuildPipeline steps: - name: gradleBuildStep type: GradleBuild configuration: gradleCommand: "artifactoryPublish clean -b build.gradle" sourceLocation: gradle-example-minimal configFileLocation: . configFileName: gradle-art-config inputResources: - name: gitRepoResource integrations: - name: artifactory_integration
Publish Build Info and Trigger Xray Scan
In this example, build info is published as part of the GradleBuild step and an Xray scan is triggered.
GradleBuild
pipelines: - name: gradleBuildPipeline steps: - name: gradleBuildStep type: GradleBuild configuration: gradleCommand: "build" autoPublishBuildInfo: true forceXrayScan: true inputResources: - name: gitRepoResource integrations: - name: artifactory_integration outputResources: - name: myBuildInfo
How it Works
When you use the GradleBuild native step in a pipeline, it performs the following functions in the background:
jfrog rt config (configure JFrog CLI with the integration listed in the yaml)
jfrog rt gradle-config (if configFileName and configFileLocation are not set in yaml)
jfrog rt gradle $gradleCommand (the main gradle build command)
add_run_variables (save information in run state for future steps to reference)
jfrog rt build-collect-env (collect the build environment, preparing for build publish)
jfrog rt build-publish (publish the build, only if autoPublishBuildInfo is true)
write_output (update the BuildInfo output resource with the published name/number)
jfrog rt build-scan (if forceXrayScan is true)
add_run_files (adds build info to run state)