Jenkinsfile

pipeline {
    agent any

environment {
        LEAPWORK_PERFORMANCE_BASE_URL = 'https://your-environment.example.com'
        LEAPWORK_PERFORMANCE_TIMELINE_ID = ''
        LEAPWORK_PERFORMANCE_TIMELINE_NAME = 'Smoke baseline'
        LEAPWORK_PERFORMANCE_PROJECT_ID = ''
        LEAPWORK_PERFORMANCE_DATA_ITEM_ASSET_ID = ''
        LEAPWORK_PERFORMANCE_DATA_ITEM_NAME = 'Checkout workload'
        LEAPWORK_PERFORMANCE_ROLE = 'loadUser'
        LEAPWORK_PERFORMANCE_USER_COUNT = '50'
    }

stages {
        stage('Start Leapwork Performance run') {
            steps {
                withCredentials([string(credentialsId: 'leapwork-performance-api-key', variable: 'LEAPWORK_PERFORMANCE_API_KEY')]) {
                    powershell '''
                        .\\run-integration.ps1 `
                        -BaseUrl "$env:LEAPWORK_PERFORMANCE_BASE_URL" `
                        -ApiKey "$env:LEAPWORK_PERFORMANCE_API_KEY" `
                        -TimelineId "$env:LEAPWORK_PERFORMANCE_TIMELINE_ID" `
                        -TimelineName "$env:LEAPWORK_PERFORMANCE_TIMELINE_NAME" `
                        -ProjectId "$env:LEAPWORK_PERFORMANCE_PROJECT_ID" `
                        -DataItemAssetId "$env:LEAPWORK_PERFORMANCE_DATA_ITEM_ASSET_ID" `
                        -DataItemName "$env:LEAPWORK_PERFORMANCE_DATA_ITEM_NAME" `
                        -Role "$env:LEAPWORK_PERFORMANCE_ROLE" `
                        -UserCount "$env:LEAPWORK_PERFORMANCE_USER_COUNT"
                    '''
                }
            }
        }

stage('Wait for result') {
            steps {
                withCredentials([string(credentialsId: 'leapwork-performance-api-key', variable: 'LEAPWORK_PERFORMANCE_API_KEY')]) {
                    powershell '''
                        $runOutput = Get-Content .\\run-output.json | ConvertFrom-Json
                        .\\poll-integration-status.ps1 `
                        -BaseUrl "$env:LEAPWORK_PERFORMANCE_BASE_URL" `
                        -ApiKey "$env:LEAPWORK_PERFORMANCE_API_KEY" `
                        -RunId "$($runOutput.RunId)" `
                        -TrackItemIds "$($runOutput.TrackItemIds)" `
                        -TrackItemNames "$($runOutput.TrackItemNames)" `
                        -PollResultUrl "$($runOutput.PollResultUrl)" `
                        -ExpectedRunTime "$($runOutput.ExpectedRunTime)"
                    '''
                }
            }
        }
    }

post {
        always {
            archiveArtifacts artifacts: 'reports/**/*', fingerprint: true, allowEmptyArchive: true
        }
    }
}