# Using Sealights from a Jenkins Pipeline job

## Using a Sealights Token defined in Jenkins Credentials <a href="#using-a-sealights-token-defined-in-jenkins-credentials" id="using-a-sealights-token-defined-in-jenkins-credentials"></a>

You can define an entry in your Jenkins Credentials to store your Agent token and use it in your pipeline script.

<figure><img src="https://4057366433-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAjqTCMRYvHhDgsdPLUnc%2Fuploads%2F8Oesv3cmPRFoXkFEzfMj%2Fimage-20200401-171939.png?alt=media&#x26;token=afb5f644-a255-46dc-8363-81fc410b2f22" alt=""><figcaption></figcaption></figure>

You can refer to it from your script as follow

{% code overflow="wrap" lineNumbers="true" %}

```groovy
withCredentials([string(credentialsId: 'sl.agent.token.dev.cs', variable: 'SL_TOKEN')]) {
  sh '''
  echo -n "$SL_TOKEN" > sltoken.txt
  '''
}
```

{% endcode %}

## Sample script for Maven integration (Java Agent) <a href="#sample-script-for-maven-integration-java-agent" id="sample-script-for-maven-integration-java-agent"></a>

{% code overflow="wrap" lineNumbers="true" %}

```groovy
pipeline {
    agent any

    tools {
      jdk '1.8'
    }
    
   stages {
       
        stage('Git') {
            steps {
                // Wipe out workspace
                cleanWs()

                // Get some code from a GitHub repository
                git 'https://github.com/marcsealights/java-gps-calorie-calculator.git'
            }
        }       
       
       stage ("Adding Sealights") {
            steps {
                withCredentials([string(credentialsId: 'sl.token.dev.cs', variable: 'SL_TOKEN')]) {
                  sh '''
                  echo -n "$SL_TOKEN" > sltoken.txt

                  echo "Downloading Sealights Agent..."
                  wget -nv  https://agents.sealights.co/sealights-java/sealights-java-latest.zip
                  unzip -oq sealights-java-latest.zip
                  echo "Local agent version is now:" `cat sealights-java-version.txt` "\n"
                  '''
                }
                
                writeFile file: 'slmaven.json', text: '''\
                |{
                |  "executionType": "full",
                |  "tokenFile": "sltoken.txt",
                |  "createBuildSessionId": true,
                |  "appName": "${env.JOB_NAME}",  
                |  "branchName": "${env.BRANCH_NAME}",
                |  "buildName": "${env.BUILD_NUMBER}", 
                |  "packagesIncluded": "*info.puzz.*",  //Specific to your app
                |  "packagesExcluded": "",
                |  "includeResources": true,
                |  "testStage": "Unit Tests",
                |  "sealightsJvmParams": {},
                |  "proxy": null,
                |  "logEnabled": false,
                |  "logDestination": "console",
                |  "logLevel": "off"
                |}
                '''.stripMargin().stripIndent()

				script {
					if (true) {
						// Define SCM details
						env.scmOnPremProvider = "github"
						env.scmOnPremBaseUrl = "https://github.com/marcsealights/java-gps-calorie-calculator/blob/"
						env.scmOnPremVersion = '2.19.0' // Adjust as necessary

					    // Dynamically set SCM version if needed
						// env.scmOnPremVersion = sh(script: 'curl -sI https://github.mycompany.com/api/v3 | grep Version | awk \'{print $2}\' | tr -d \'\\r\'', returnStdout: true).trim() //github
						// env.scmOnPremVersion = sh(script: 'curl -s https://mybitbucket.mycompany.com/rest/api/1.0/application-properties | jq -r .version', returnStdout: true).trim() //bitbucket
						// env.scmOnPremVersion = sh(script: 'curl https://mygitlab.mycompany.com/api/v4/version | jq -r .version', returnStdout: true).trim() //gitlab

						// Prepare the JSON modifier based on SCM details
						env.OnPremJvmParam = "\"sealightsJvmParams\": { \"sl.scm.provider\": \"${env.scmOnPremProvider}\", \"sl.scm.baseUrl\": \"${env.scmOnPremBaseUrl}\", \"sl.scm.version\": \"${env.scmOnPremVersion}\" },"

						// Update slmaven.json by replacing the empty sealightsJvmParams object with OnPremJvmParam content
						sh """
						sed -i '/"sealightsJvmParams": {},/c\\
						${env.OnPremJvmParam}
						' slmaven.json
						"""
					}
				}
				
				script {
					// Attempt to update POM with Sealights configuration
					sh 'java -jar sl-build-scanner.jar -pom -configfile slmaven.json -workspacepath .'
				}
            }
        }
       
      stage('Build') {
            steps {
                // Run Maven with regular command
                sh "mvn clean package"
         }
      }
   }
}
```

{% endcode %}
