web-dev-qa-db-fra.com

Exécuter le fichier de chauve-souris WIndows dans Jenkins

J'utilise Jenkins 2.46.1 J'ai un plugin de pipeline de construction installé et je veux y exécuter un fichier batch Windows. Le fichier de commandes doit s'exécuter dans une nouvelle fenêtre de commande et non sur la sortie de la console jenkins. Je donne le script groovy du pipeline Jenkins ci-dessous:

node {  
    stage 'Init'
    bat '''
        call C:\\myprj\\mybat.bat stop
        EXIT /B 0
    '''
    stage 'Deploy'
    bat '''call C:\\myprj\\mybat.bat'''
}

À l'étape init, je veux tuer le processus s'il est déjà ouvert et à l'étape deploy, il devrait ouvrir une nouvelle fenêtre de commande et exécuter mon fichier de commandes. Le problème est que ce qui précède ne fonctionne pas. La construction est réussie mais aucune fenêtre de commande ne s'ouvre. Pls suggèrent

5
user5917011

Techniquement, pour faire ce que vous demandez, vous devriez pouvoir exécuter

bat 'start cmd.exe /c C:\\myprj\\mybat.bat'

Cela lancera une nouvelle fenêtre de commande (cmd.exe) et exécutera le fichier batch donné. Selon la façon dont votre esclave Jenkins fonctionne, vous ne verrez peut-être rien. (par exemple, s'il fonctionne en tant que service Windows ou utilisateur différent, vous ne verrez rien)

5
Kendall Trego

Solution alternative si l'agent s'exécute dans un service et que vous souhaitez obtenir une sortie:

bat(readFile("mybat.bat"))

Remarque: Le fichier bat devra être dans votre espace de travail.

Remarque supplémentaire: vous n'exécutez plus le fichier bat à partir de son emplacement d'origine. Au lieu de cela, il est exécuté à partir d'un emplacement temporaire créé par le système de tâches durable sous-jacent. Cela signifie des choses comme %~dp0 dans votre script ne retournera pas les chemins que vous pourriez attendre.

1
Anthony DiPirro