Using a Sealights Token
...
defined in Jenkins Credentials
You can define an entry in your Jenkins Credentials to store your Agent token and use it in your pipeline script.
...
You can refer to it from your script as follow
Code Block |
---|
|
withCredentials([string(credentialsId: 'sl.agent.token.dev.cs', variable: 'SL_TOKEN')]) {
sh '''
echo -n "$SL_TOKEN" > sltoken.txt
'''
} |
Code Block |
---|
|
pipeline {
agent any
environment {
SAMPLE_SL_TOKEN = "eyJhbGci...IgETt24"
}
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 {
script {
withCredentials([string(credentialsId: 'sl.token.dev.cs', variable: 'SL_TOKEN')]) {
sh '''
echo set +x
-n "$SL_TOKEN" > sltoken.txt
echo "Downloading Sealights Latest Agent..."
wget -nv https://agents.sealights.co/sealights-java/sealights-java-latest.zip
unzip -ooq sealights-java-latest.zip
echo "Local agent version is now:" `cat sealights-java-version.txt` "\n"
'''
echo '{ }
"token": "${env.SAMPLE_SL_TOKEN}",
writeFile "createBuildSessionId"file: true'slmaven.json', text: '''\
|{
"appName | "executionType": "${env.JOB_NAME}full",
| "branchNametokenFile": "mastersltoken.txt",
| "buildNamecreateBuildSessionId": "${env.BUILD_NUMBER}"true,
| "packagesIncludedappName": "*info.puzz.*${env.JOB_NAME}",
| "packagesExcludedbranchName": "${env.BRANCH_NAME}",
| "filesIncludedbuildName": "*.class${env.BUILD_NUMBER}",
| "filesExcludedpackagesIncluded": "*test-classesinfo.puzz.*", //Specific to your app
| "recursivepackagesExcluded": true"",
| "includeResources": true,
| "testStage": "Unit Tests",
| "labIdsealightsJvmParams": null{},
| "executionTypeproxy": "full"null,
| "logEnabled": truefalse,
| "logDestination": "console",
| "logLevel": "erroroff",
|}
"logFolder": "/tmp", '''.stripMargin().stripIndent()
script {
"sealightsJvmParams": {},
"enabled": true
}' > slmaven.json
echo "Updating POM with Sealights..."
java -jar sl-build-scanner.jar -pom -configfile slmaven.json -workspacepath .
'''
}
}
} 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"
}
}
}
} |