Ajouter un temps d'attente entre deux lots des lignes de commande dans Jenkins
C'est le code que j'ai envie de 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 je reçois 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 ce post , le délai d'attente ne fonctionne pas non scripts interactifs.
Comment puis-je ajouter une pause dans ma situation ?
Modifier pour will Ryan :
J'ai essayer ceci :
La compilation a fonctionné, mais la durée de l'essai n'est que de 0,5 secondes, la pause ne fait rien
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
- Ne
choice /T 60
travail? - Non,
incorrect syntax : /T cannot be specified without /D
- Ok, donc ça fonctionne avec
/D
? Vous pouvez simplement ignorer la sortie de la choix de, de droite? - J'essaie
choice /C YN /T 60 /D Y
, mais cela ne fonctionne toujours pas avec Jenkins - Yay, Windows. Je suppose que vous pourriez écrire un nœud de script qui dort pour vous, et de l'exécuter? par exemple,
require('sleep').sleep(60)
- Pourquoi avez-vous commencer à
node
avecappium.js
dans une nouvelle et distincte de commande de processus avec le maintien de cette commande de processus aprèsnode
fini si vous avez besoin d'attendre avecnunit-console.exe
l'exécution jusqu'à cenode
fini? - Parce que quand je lance le serveur avec Windows Cmd, je ne peux pas utiliser le CMD de plus pour quelque chose d'autre. Dans Jenkins,ce résultat comme une boucle infinie. Même cas quand je lance l'émulateur, j'ai besoin d'attendre de lui pour le lancement de ~années 60 avant de faire quelque chose d'autre
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pouvez utiliser la commande suivante à Exécuter Windows batch de commande (va attendre les 100 secondes):
Elle retournera une erreur qui pourrait briser votre build. Pour éviter cela, il faut rediriger la sortie d'erreur:
waitfor SomethingThatIsNeverHappening /t 10 2>NUL || type nul>nul
🙂Vous pouvez utiliser ceci:
Cette envoyer un ping tentative et attend 30 secondes pour répondre. Ne savez pas pourquoi vous obtenez le message "ERREUR: la redirection d'Entrée n'est pas prise en charge, de quitter immédiatement le processus." message mais j'ai activement l'utilisation de la commande ci-dessus régulièrement.
PING 1.1.1.1 -n 1 -w 30000 >NUL
seulement attendre 1 sec car elle envoie juste une demande, j'ai réussi à attendre 60seconds avecPING 1.1.1.1 -n 60 > nul
PING 127.0.0.1
ne fonctionne pas, maisPING 1.1.1.1
travail, vraiment étrange mais merci pour l'astuceDans le cas où vous voulez vous débarrasser de ce message d'erreur à partir de Yauheni Basalai réponse, essayer d'envoyer le stderr vers stdout en ajoutant >nul 2>,&1
de crédit va à http://brisray.com/computers/batch-delay.htm
J'ai rencontré un problème similaire avec les VST "ligne de commande" utilité " (v, 2.*) qui utilise le cmd shell, et j'ai utilisé la commande suivante (à partir élevée session PowerShell):
sleep 30
dormir pendant 30 secondes