Запустите JMeter через PSExec с параметрами из Jenkins - PullRequest
0 голосов
/ 26 октября 2018

У меня следующая структура:

  1. Машина 1: подчиненный Jenkins (Windows)
  2. Машина 2: машина JMeter (Windows)

ЧтоЯ хочу получить? Машина 1 получает некоторые параметры от Дженкинса (используется для тестов 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.

Почему «Система не может найти указанный путь»?

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

Спасибо, что уделили время.

1 Ответ

0 голосов
/ 26 октября 2018

Вы можете создать один сценарий 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 с параметрами, как вы делаете это с пакетным файлом (это просто снимет бремя создания пакетного файла)

...