web-dev-qa-db-fra.com

Ajouter un délai d'expiration entre deux lignes de commande batch dans Jenkins

Voici le code que je veux lancer avec Jenkins:

start cmd.exe /k "node "C:\Program Files\Appium\node_modules\appium\bin\appium.js" -a 127.0.0.1 -p 4723"
ping 127.0.0.1 -n 30 > nul
C:\path\NUnit-2.6.4\NUnit-2.6.4\bin\nunit-console.exe C:\path\NUnit-2.6.4\NUnit-2.6.4\bin\apk\UnitTestProject1.dll

C'est l'erreur que j'obtiens chaque fois que j'essaie de mettre une pause:

"ERROR: Input redirection is not supported, exiting the process immediately."

Même erreur avec timeout /T 60 et sleep 60

Selon cet article , le délai d'attente ne fonctionne pas dans les scripts non interactifs.

Comment puis-je ajouter une pause dans ma situation?

Edit pour Will Ryan:

J'essaye ceci:

 enter image description here

La compilation a fonctionné, mais la durée du test n’est que de 0,5 seconde, la pause ne fait rien. 

 enter image description here

La sortie de la console est:

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>echo "--" 
"--"

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>PING 1.1.1.1 -n 1 -w 30000  1>NUL 

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>echo "++" 
"++"

C:\Program Files\Jenkins\jobs\ZFAIL\workspace>exit 0 
Finished: SUCCESS
15
CE_

Je pense que vous pouvez utiliser la commande suivante dans la commande d'exécution par lots de Windows (attendra 100 secondes):

waitfor SomethingThatIsNeverHappening /t 100 

Cela retournera une erreur qui pourrait casser votre construction. Pour éviter cela, redirigez la sortie d'erreur:

waitfor SomethingThatIsNeverHappening /t 100 2>NUL
27
Yauheni Basalai

Vous pouvez utiliser ceci:

PING 1.1.1.1 -n 1 -w 30000 >NUL

Cela envoie une tentative de ping et attend 30 secondes pour une réponse. Vous ne savez pas pourquoi vous obtenez le message "ERREUR: la redirection d'entrée n'est pas prise en charge, si vous quittez le processus immédiatement" message mais j'utilise activement la commande ci-dessus régulièrement.

8
Will Ryan

Si vous souhaitez supprimer le message d'erreur de la réponse de Yauheni Basalai, essayez d'envoyer le message stderr à la sortie standard en ajoutant> nul 2> & 1

waitfor SomethingThatIsNeverHappening /t 100 >nul 2>&1

le crédit va à http://brisray.com/computers/batch-delay.htm

1
bwang

J'ai rencontré un problème similaire avec l'utilitaire "ligne de commande" de VSTS (v 2. *) qui utilise le shell cmd, et j'ai utilisé les éléments suivants (à partir d'une session PowerShell surélevée):

Add-Content c:\windows\sleep.cmd "call powershell -NoProfile -ExecutionPolicy ByPass -command sleep %1"
0
Jules Clements