web-dev-qa-db-fra.com

Comment utiliser une variable Jenkins dans mon script Powershell

J'ai écrit un script simple via PowerShell pour rassembler des fichiers et les compresser dans un dossier, appelons-le Script.ps1. Je veux que le script s'exécute à chaque fois que Jenkins effectue une nouvelle construction, mais j'aimerais également que le nom du fichier Zip soit le BUILD_NUMBER

Comment créer une variable dans PowerShell qui correspond au numéro de build actuel de Jenkins? À partir du moment où j'appelle le Script.ps1 dans la section de configuration du shell d'exécution. 

23
Foster

Vous pouvez ajouter des arguments à votre Script.ps1. Utilisez simplement Param en haut du script:

Param( $BuildNumber ) #must be first statement in script
# your current script goes here

alors vous pouvez appeler le script en passant BUILD_NUMBER en argument de Jenkins. Reportez-vous à cette question pour appeler un script Powershell avec un argument.

5
tkokasih

Je ne connais pas Jenkins, mais je crois que BUILD_NUMBER est une variable d'environnement.

Pour y accéder dans PowerShell, utilisez $env:BUILD_NUMBER

Par exemple. Si vous utilisez 7-Zip

7z.exe a "$env:BUILD_NUMBER.Zip" C:\Build\Path 
54
Rynant

Vous pouvez également utiliser le plugin Powershell, voir ici .

Ensuite, vous pouvez utiliser les variables d’environnement disponibles (voir la documentation du plugin). Notez que l'accès est assez crypté (en ce qui me concerne):

(Get-Content ./Sources/SlmMachineControl/GUI/Project1.rc).replace("`"FileVersion`", `"1.0.0.0`"" ,"`"FileVersion`" `"2.3.$($env:BUILD_NUMBER).0`"") | Set-Content ./Sources/SlmMachineControl/GUI/Project1.rc

Notez également l'échappement des guillemets. M'a pris un bon moment :)

0
anhoppe