diff --git a/Jenkinsfile b/Jenkinsfile index e056596e9..5fe06f707 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,54 +1,73 @@ pipeline { - agent any - tools { - maven 'maven-3' + agent any + tools { + maven 'maven-3' + } + environment { + JFROG_CLI_BUILD_NAME = "spring-petclinic" + JFROG_CLI_BUILD_NUMBER = "${BUILD_ID}" + ARTIFACTORY_URL = "https://trialt0zppb.jfrog.io/" + JF = "${WORKSPACE}/jf" + } + stages { + stage('Download JFrog CLI') { + steps { + sh ''' + curl -fL https://releases.jfrog.io/artifactory/jfrog-cli/v2-jf/2.74.1/jfrog-cli-linux-arm64/jf -o "$JF" + chmod +x "$JF" + ''' + } } - environment { - JFROG_URL = "https://trialt0zppb.jfrog.io/artifactory" - JFROG_REPO_RELEASES = "petclinic-maven-dev-local" - JFROG_REPO_SNAPSHOTS = "petclinic-maven-dev-virtual" - JFROG_CREDENTIALS_ID = 'jfrog-saas' - JFROG_CLI_BUILD_NAME = "spring-petclinic" - JFROG_CLI_BUILD_NUMBER = "${BUILD_ID}" - } - stages { - stage('Build Maven') { - steps { - script { - def server = Artifactory.server(env.JFROG_CREDENTIALS_ID) - - // Run Maven Build - sh 'mvn clean install -DskipTests -Dcheckstyle.skip=true' - - // Upload artifacts to Artifactory - server.upload spec: """{ - "files": [ - { - "pattern": "target/*.jar", - "target": "${JFROG_REPO_RELEASES}/" - } - ] - }""" - } - } - } - stage('Publish Build Info') { - steps { - script { - def server = Artifactory.server(env.JFROG_CREDENTIALS_ID) - - def buildInfo = Artifactory.newBuildInfo() - buildInfo.name = env.JFROG_CLI_BUILD_NAME - buildInfo.number = env.JFROG_CLI_BUILD_NUMBER - - server.publishBuildInfo(buildInfo) - } - } + stage('Configure JFrog CLI') { + steps { + withCredentials([usernamePassword(credentialsId: 'jfrog-saas', usernameVariable: 'ARTIFACTORY_USER', passwordVariable: 'ARTIFACTORY_PASSWORD')]) { + sh ''' + "$JF" c add petclinic \ + --url="${ARTIFACTORY_URL}" \ + --user="$ARTIFACTORY_USER" \ + --password="$ARTIFACTORY_PASSWORD" \ + --interactive=false \ + --enc-password=false + ''' } + } } - post { - always { - echo "Build complete: ${env.JFROG_CLI_BUILD_NAME} #${env.BUILD_NUMBER}" - } + stage('Validate Connection') { + steps { + sh '"$JF" c use petclinic' + sh '"$JF" rt ping' + sh '"$JF" c show petclinic' + } } -} + stage('Build Maven') { + steps { + sh 'chmod +x mvnw' + sh ''' + "$JF" mvnc --global \ + --repo-resolve-releases=petclinic-maven-dev-virtual \ + --repo-resolve-snapshots=petclinic-maven-dev-virtual \ + --repo-deploy-releases=petclinic-maven-dev-local \ + --repo-deploy-snapshots=petclinic-maven-dev-local + ''' + sh ''' + "$JF" mvn clean deploy \ + -DskipTests -Dcheckstyle.skip=true \ + --build-name="$JFROG_CLI_BUILD_NAME" \ + --build-number="$JFROG_CLI_BUILD_NUMBER" + ''' + } + } + stage('Publish Build Info') { + steps { + sh '"$JF" rt build-collect-env' + sh '"$JF" rt build-add-git' + sh '"$JF" rt build-publish' + } + } + } + post { + always { + echo "Build complete: ${env.JFROG_CLI_BUILD_NAME} #${env.BUILD_NUMBER}" + } + } +} \ No newline at end of file