# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sealights.io/knowledgebase/setup-and-configuration/integrations/sample-integrations/using-sealights-from-a-jenkins-pipeline-job.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
