SBT, Artifactory Credentials & Jenkins Pipeline

14 Mar
2021

In case you need to marry SBT + Artifactory with Jenkins Pipelines – and like me, you don’t want to post the Artifactory Credentials in a public accessible place on the Jenkins Agent, here comes your solution!

First, create a secret containing the username + token/password of the user that should be used by jenkins. In my case, this secret is called acme-jenkins-artifactory-access-token

Then, during your pipeline, get the secret in an environment variable and during the build, post it in a credentials.sbt in the current working directory. This way, sbt will pick up your credentials and uses them to authenticate against your Artifactory to resolve artifacts.

pipeline {
environment {
ARTIFACTORY_ACCESS_TOKEN = credentials('acme-jenkins-artifactory-access-token')
}
stages {
stage('Compile & test & stage') {
steps {
script {
sh "echo 'credentials += Credentials(\"Artifactory Realm\", \"artifactory.power.inet\", \"${ARTIFACTORY_ACCESS_TOKEN_USR}\", \"${ARTIFACTORY_ACCESS_TOKEN_PSW}\")' > credentials.sbt"
}
script {
sh "sbt ';compile;test:compile;docker:stage;'"
}
….
view raw Jenkinsfile hosted with ❤ by GitHub

Alternatively you could also create a “secret file” which already has the contents I’m here creating during the build and then just copy that to the current working dir. As I don’t want to create yet another secret containing the same credentials, I’ve chosen this approach.

Comment Form

top