web-dev-qa-db-fra.com

comment utiliser angular cli sur un serveur Windows dans une commande par lots de génération Jenkins

avant d'installer Jenkins, j'ai exécuté ceci: npm install -g @ angular/cli

mais j'ai également ceci dans devDependencies dans le package.json pour le projet:

"@ angular/cli": "1.0.0-beta.32.3",


lors de l'exécution d'une génération Jenkins, je reçois ce message dans le journal:

'ng' n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier de commandes.

=======================================

Voici la commande batch de Windows dans Jenkins:

cmd/c appelle npm install

définir Path =% WORKSPACE%\node_modules\@angular\cli\bin;% PATH%

echo% PATH%

ng build -prod

========================================

voici un peu plus de sortie de journal de Jenkins:

C:\Program Files (x86)\Jenkins\workspace\UiUnitTests> ng build -prod

'ng' n'est pas reconnu comme une commande interne ou externe, un programme exploitable ou un fichier de commandes.

C:\Program Files (x86)\Jenkins\workspace\UiUnitTests> exit 9009 Étape de build 'Exécuter la commande batch Windows' marquée build comme échec


mais quand je l'exécute uniquement à partir de la ligne de commande (pas dans un travail Jenkins), cela fonctionne bien:

C:\Program Files (x86)\Jenkins\workspace\UiUnitTests> ng build -prod

Votre version globale Angular CLI version (1.0.0-rc.1) est supérieure à votre version locale

version (1.0.0-beta.32.3). La version locale Angular CLI est utilisée.

Pour désactiver cet avertissement, utilisez "ng set --global warnings.versionMismatch = false". Hachage: 7853ecb5a81a25eadbeb Temps: 61317ms bloc {0} polyfills.7aaf5284cd5921eea40b.bundle.js (polyfills) 278 kB {4} [initial] [rendu] bloc {1} principal.3380f71d3e71966aea27.bundle.js (principal) 371 [initial] [rendu] morceau {2} styles.9db1bafdfc989b37db97.bundle.css (styles) 69 octets {4} [initial] [rendu] morceau {3} vendeur.24574fc8320129058fac.bundle.js (fournisseur) 2,18 Mo [initial] [rendu] morceau {4} inline.d1f5b52100bed2568d44.bundle.js (en ligne) 0 octet [entrée] [rendu]

C:\Program Files (x86)\Jenkins\workspace\UiUnitTests>

=================================================

dernier point mais non le moindre, voici la sortie du journal Jenkins de echo% PATH%

C:\Program Files (x86)\Jenkins\workspace\UiUnitTests> echo C:\Program Files (x86)\Jenkins\workspace\UiUnitTests\node_modules\@angular\cli\bin; C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0 \; C:\Program Files\Amazon\cfn-bootstrap \; C:\Ruby23-x64\bin; C:\Program Files\nodejs \; C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps C:\Program Files (x86)\Jenkins\workspace\UiUnitTests\node_modules\@angular\cli\bin; C:\Windows\system32; C:\Windows; C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0 \; C:\Program Files\Amazon\cfn-bootstrap \; C:\Ruby23 -x64\bin; C:\Program Files\nodejs \; C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps

14
user372225

N'installez pas la CLI globalement.

Exécutez le npm install pour le dépôt et chaque fois que vous devez exécuter une commande ng, utilisez ceci:

node_modules/.bin/ng [command goes here]

Cela économisera du temps d'installation et garantira qu'il n'y a aucune différence entre vos versions locales et globales.

Commentaire supplémentaire: mettez à jour votre application vers la dernière version de l'interface CLI

27
Brocco

Essayez npm run ng build. Le seul problème avec cela est qu'il omet tout autre paramètre comme --prod ou --test après la construction.

Voici les commandes que j'utilise pour exécuter ma angular avec succès à partir de Jenkins. La dernière commande est exécutée de manière sale en configurant les variables de chemin. Je ne sais pas s'il existe un nettoyeur Cela permet d'exécuter les commandes correctement sans rien omettre.

@echo on
cmd /c npm install -g @angular/cli@latest

echo yarn Install
cmd /c yarn

echo Build
set PATH=%PATH%;C:\Users\Administrator\AppData\Roaming\npm;C:\Users\Administrator\AppData\Roaming\npm\node_modules\@angular\cli\bin;
ng build --prod --aot=true
3
Sri7