There are always a million ways to do things in Jenkins, but often using the appropriate plugins for common tools pays off a lot. Here is an example of using multiple maven commands to execute a build, the result of which (a zip file) is then uploaded to Artifactory.
Sample Pipeline
Honestly, there will almost definitely be an artifactory plugin as well; but in this case, I used these 2 plugins:
- Pipeline Maven Integration Plugin – Allows you to target various maven installations set up in your Jenkins “Global Tool Configuration”.
- Credentials Binding Plugin – Allows you to pull user names and passwords from credentials into environment variables to use in commands easily.
This was enough to let me run the maven commands I needed and to let me then call the Artifactory REST API safely to upload my one artifact, which is a zip in this case.
I hope this example helps you! 🙂
pipeline { agent any parameters { string(name: 'SOURCE_BRANCH', defaultValue: 'master', description: '...') string(name: 'RELEASE_TAG', defaultValue: '', description: '...') } stages { stage('Build and deploy presto zip to artifactory.') { steps { sh 'echo "Building to version = $RELEASE_TAG"' withMaven(maven: 'maven-3') { sh "mvn versions:set -DnewVersion=$RELEASE_TAG" sh "mvn clean install -DskipTests" } withCredentials([usernamePassword(credentialsId: 'artifactory-token', usernameVariable: 'AUSR', passwordVariable: 'APWD')]) { sh '''curl -X PUT -u $AUSR:$APWD -T presto-server/target/presto-server-$RELEASE_TAG.tar.gz "https://company.com/artifactory/repo/io/presto/$RELEASE_TAG/presto-server-$RELEASE_TAG.tar.gz" ''' } sh 'echo "Done building and tagging to name = $RELEASE_TAG"' } } } }