Scanning Builds using the SeaLights Gradle plugin

SeaLights build scanner (sl-build-scanner.jar) can be used to update build.gradle script with the changes needed to run your Gradle build using SeaLights Gradle plugin, similarly as for Maven pom integration.

Automatic integration of Sealights settings into your build.gradle script is currently supported only for Groovy language.
If your script is written in Kotlin, please use the method described in the following article: https://sealights.atlassian.net/wiki/spaces/SUP/pages/3014663

Configuration file

Create a JSON configuration file with the following parameters to provide the necessary configuration fields to the SeaLights Gradle plugin:

  1. token or tokenFile - set with a token or a file containing the token obtained from the SeaLights dashboard

  2. Managing the session ID

    1. If you create a Build Session ID externally, provide the following fields:

      1. buildSessionId or buildSessionIdFile - Set with a build session id or a file containing the build session id created by the config step

      2. createBuildSessionId - Set to false

    2. If you want to create a Build Session ID using the SeaLights Gradle plugin, provide the following fields:

      1. createBuildSessionId - Set to true

      2. appName - Name of the application as you want to see it on the SeaLights dashboard

      3. branchName - Name of the branch as you want to see it on the SeaLights dashboard

      4. buildName - Name of the build as you want to see it on the SeaLights dashboard

      5. packagesIncluded - Comma-separated list of packages to include in the scan operation. Note: This is defining a subset, so it must include the star to include all sub-packages/classes

    3. If you want to create a Pull Request Build Session ID using the SeaLights Maven plugin, provide the following fields:

      1. createPRBuildSessionId - Set to true

      2. appName - Name of the application as you want to see it on the SeaLights dashboard

      3. targetBranch - The branch to which this PR will be merged (already reported to SeaLights)

      4. pullRequestNumber - The number assigned to the Pull Request from the source control

      5. latestCommit - The full SHA of the last commit made to the Pull Request

      6. repositoryUrl - The pull request URL for the PR to be scanned up until the section before the pullRequestNumber value

      7. packagesIncluded - Comma-separated list of packages to include in the scan. Note: This is defining a subset, so it must include the asterisk to include all sub-packages/classes

      8. packagesExcluded - (Optional) Comma-separated list of packages to include in the scan.  Note: This is defining a subset, so it must include the asterisk to include all sub-packages/classes

  3. executionType - Provide which executions need to be handled by the Gradle plugin

    1. full - Execute both the build scanner and the test listener

    2. scanonly - Execute only the build scanner

  4. testTasksAndStages - (Optional) Mapping of test tasks’ names to test stage names as they will be displayed on the SeaLights dashboard. It should be of the format {"testTask1":"testStage1", "testTask2":"testStage2"}

  5. proxy - (Optional) Address of proxy to run connection through

For additional parameters values and information, see 'Java Command Reference - Installing test listener as Java Agent' for more parameter values and information

{ "executionType": "scanonly", "tokenFile": "./sltoken.txt", "createBuildSessionId": true, "appName": "${System.getenv('JOB_NAME')}", "branchName": "master", "buildName": "${System.getenv('BUILD_NUMBER')}", "packagesIncluded": "*com.example.*", "packagesExcluded": "", "filesIncluded": "*.class", "filesExcluded": "*test-classes*", "recursive": true, "includeResources": true, "labId": null, "logEnabled": false, "logDestination": "console", "logLevel": "off", "logFolder": "/tmp", "gradleProjectConfig": { "excludedProjects": ["subProject1", "subProject2"], "repoConfig": "mavenLocal()" } }

The values provided for fields can contain interpolated Groovy code, just like for the field appName in the above example: "${System.getenv('JOB_NAME')}" .
It will get resolved during the Gradle build.

Integrating into the Build.gradle script

Before running your Gradle build, you run the build scanner with -gradle flag to integrate the SeaLights Gradle plugin into the build.gradle file. This will create a sealights.gradle script with all the configuration taken from the JSON config file and append a reference to it in build.gradle.

The standard parameters the build scanner receives are:

  • configfile - The path to the JSON configuration you created with the parameters to be provided to the SeaLights Gradle plugin

  • workspacepath - The base path to the location of the build.gradle file to update

java -jar sl-build-scanner.jar -gradle -configfile sl-config.json -workspacepath .

The next step is to run your regular Gradle build command, e.g. ‘gradle clean build’.

Restoring the build.gradle file to its previous state

If the project is to be restored to its previous state before the SeaLights plugin was applied, use the build scanner with the -restoreGradle flag on the workspace where the gradle.build file is located:

java -jar sl-build-scanner.jar -restoreGradle -workspacepath .

This command will (1) restore gradle.build from its backup, (2) delete the backup file, and (3) delete the sealights.gradle file. 
Failure at any of these steps won’t prevent the next ones so that the project is restored as much as possible.

Configuring SCM to enable links from the dashboard

SeaLights, by default, provides all links to the SCM for Github. You can configure SeaLights to prepare the links for Bitbucket and Gitlab as well with the following parameters placed under the sealightsJvmParams section:

  • sl.scm.provider - set to github, Bitbucket or gitlab

  • sl.scm.baseUrl - When working with an on-premise installation of your SCM and access from the build machine is different than the one accessed by the users, then you can provide the base URL to use

  • sl.scm.version - set to the version of the on-premise version you use

Pre-downloading the agents

The Gradle plugin downloads the recommended agent at the beginning of the run. If you want to pre-download them and provide them to the plugin, you can do so with the flags scannerJarlistenerJar.

Using a local repo

The Gradle plugin, by default, is downloaded from Maven Central. If you want to update the repo it downloads from, you can do so using the gradleProjectConfig->repoConfig option

Samples

Shell script 

Next step is to run your regular Gradle build command, e.g. gradle clean build.

Gitlab YML

The rest of your pipeline is unchanged.