Запустите jmeter через psexec с параметрами из jenkins

У меня такая структура:

  1. Машина 1: ведомое устройство Jenkins (Windows)
  2. Машина 2: машина JMeter (Windows)

Что я хочу получить? Машина 1 получает некоторые параметры от Jenkins (используется для тестов JMeter).

path/Performance.bat %param1% %param2% %param3%

Итак, Performance.bat выглядит примерно так:

IF %param1%==param1_value(
IF %param2%==param2_value(
@echo
path_to_psexec\PsExec.exe \\machine1_address -u user -p password cmd /c (

 MKDIR %param3%\Automation_Results_Build_%BUILD_NUMBER%_ID
 cd %JMeterPath%/
 jmeter -n -t [...])
 
exit /b 0
))

Итак, в основном он создает папку результатов, затем переходит к местоположению JMeter и пытается запустить тесты производительности с заданными значениями.

Проблема. Похоже, что PSExec не выполняет команды должным образом. Через CMD отправляются 3 команды: создать папку для результатов, перейти по пути JMeter, запустить тесты. Что не так с моим подходом? Как я могу запустить несколько команд CMD в одном вызове PSexec?

Выход:

ECHO is on.

PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Connecting to machine_address...
   
Starting PSEXESVC service on machine_address...
    
Connecting with PsExec service on machine_address...
    
Starting cmd on machine_address...
    
cmd exited on machine_address with error code 0.
The system cannot find the path specified.
'jmeter' is not recognized as an internal or external command,
operable program or batch file.

Почему именно The system cannot find the path specified.?

Я не хочу создавать файл .bat на машине 2, потому что хочу видеть результаты тестов в Jenkins.

1
0
304
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете создать один сценарий PowerShell, в котором вы сможете выполнять все свои команды.

Ниже приведены команды, которые необходимо включить в ваш сценарий PowerShell, который будет подключаться к вашему удаленному компьютеру и выполнять команды на удаленном компьютере.

$machine_addr = "your_ip_address"

$user = your_username

$Password = your_password

$pass = ConvertTo-SecureString -AsPlainText $Password -Force

$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $user ,$pass

Invoke-Command -ComputerName $machine_addr -ScriptBlock {C:\path_to_your_jmeter_with_parameters} -Credential $Cred

Вы можете добавить другие команды по своему усмотрению, например, вы хотите создать папку

New-Item -Path "folder name with path" -ItemType directory 

После создания сценария PowerShell просто позвоните из командного файла.

C:\Users\%username%\Desktop\path_to_your_powershell_file\filename.ps1

Предположение: Вы также можете создать отдельный сценарий PowerShell с параметрами, как вы делаете с пакетным файлом (это просто снимет бремя создания пакетного файла).

Другие вопросы по теме