2013-07-29 10 views
7

Sto provando a creare e impacchettare il mio progetto utilizzando la distribuzione di Git di Azure.Grunt non riesce a essere eseguito sul sito Web di Azure

Ho creato i seguenti file

  • .deployment
  • deploy.cmd
  • Gruntfile.js
  • package.json

Il mio file .deployment chiama deploy.cmd. deploy.cmd imposta l'ambiente impostando il percorso per includere una copia archiviata di Node.js e npm. Posso chiamare npm install bene. Quando chiamo grunt, sembra eseguire fino al primo messaggio standard, quindi restituisce e viene impostato il codice di errore. Non ho altri messaggi oltre a quello. Altri comandi sembrano funzionare bene.

Ho provato a stendere lo STDERR, senza fortuna. Ho provato a correre sotto la console di Remote Execution, senza fortuna. Il mio Gruntfile.js funziona localmente bene.

C'è qualche salsa magica che mi manca?

+0

Quando si dice "Remote Execution console", a cosa si riferisce? Prova ad avviare Diagnostic Console dalla root del servizio scm (stesso nome host di git url). Fallisce lì? Puoi incollare l'output esatto? Inoltre, se esiste un repository minimo che è possibile condividere, sarebbe utile indagare. È possibile che qualcosa venga bloccato dalla sandbox. –

+0

@DavidEbbo Sì, mi riferisco alla console diagnostica. Non ci riesce. Ho appena ricevuto il C-prompt. Sto copiando dei file, cancellandone alcuni dopo averli copiati (non necessari, ma parte di un sottomodulo Git), eseguendo alcuni template e analizzando le variabili d'ambiente. Quindi roba piuttosto standard. Quale classificazione delle cose è bloccata dalla sandbox? –

+0

Esattamente ciò che i blocchi sandbox possono essere sottili. Si consiglia inoltre di esaminare il dump diagnostico (https://github.com/projectkudu/kudu/wiki/Investigating-issues#getting-the-diagnostic-dump), che potrebbe contenere più informazioni. Se esiste un modo per condividere un repository minimo che ci consenta di vedere esattamente ciò che stai vedendo, dovremmo essere in grado di identificare cosa sta succedendo. –

risposta

15

Questo è un po 'vecchio, ma lo risponderò comunque nel caso qualcuno si imbattesse in questa domanda.


In primo luogo, è utile per eseguire grugnito con i colori disabili, sia come console diagnostica ei registri di implementazione lottano con i codici ANSI. Per fare ciò, eseguire grunt --no-color. Questo dovrebbe riportare le informazioni STDOUT nella Console e nel log di distribuzione.

In secondo luogo, non è consigliabile utilizzare versioni verificate di Node o NPM. Windows Azure ha già queste build nell'ambiente e già è configurato per i percorsi temporanei speciali e i percorsi della cache necessari per eseguire entrambi al meglio.

Project Kudu è il motore di distribuzione che alimenta le distribuzioni di Azure, ma lo sapete già, poiché avete un file .deployment. Tuttavia, gli strumenti di riga di comando di Azure [npm install azure-cli --global] consentono di impacchettare alcuni script di distribuzione migliori che utilizzeranno l'installazione Node e NPM preinstallata di Azure.

azure site deploymentscript –-node 

otterrà quello script di nodo di base.

Da lì, sono necessarie alcune modifiche a deploy.sh per ottenere l'esecuzione di Grunt, in modo affidabile. Entro deploy.sh è una sezione #Deployment. Sostituire il contenuto con il seguente:

# Deployment 
# ---------- 

echo Handling node.js grunt deployment. 

# 1. Select node version 
selectNodeVersion 

# 2. Install npm packages 
if [ -e "$DEPLOYMENT_SOURCE/package.json" ]; then 
    eval $NPM_CMD install 
    exitWithMessageOnError "npm failed" 
fi 

# 3. Install bower packages 
if [ -e "$DEPLOYMENT_SOURCE/bower.json" ]; then 
    eval $NPM_CMD install bower 
    exitWithMessageOnError "installing bower failed" 
    ./node_modules/.bin/bower install 
    exitWithMessageOnError "bower failed" 
fi 

# 4. Run grunt 
if [ -e "$DEPLOYMENT_SOURCE/Gruntfile.js" ]; then 
    eval $NPM_CMD install grunt-cli 
    exitWithMessageOnError "installing grunt failed" 
    ./node_modules/.bin/grunt --no-color clean common dist 
    exitWithMessageOnError "grunt failed" 
fi 

# 5. KuduSync to Target 
"$KUDU_SYNC_CMD" -v 500 -f "$DEPLOYMENT_SOURCE/dist" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.hg;.deployment;deploy.sh" 
exitWithMessageOnError "Kudu Sync to Target failed" 

Questo farà eseguire npm install, seguito da bower install (se esiste bower.json), seguita da grunt clean common dist (se Gruntfile.js esiste), e, infine, un KuduSync nella vostra /wwwroot. (Nota: sostituisci "clean common dist" con qualsiasi attività Grunt che devi eseguire.)

Ci sono alcuni altri problemi a cui puoi partecipare. Scrivo questo in uno post on my personal blog, che include alcuni dei problemi che potresti incontrare.

+0

Jay, questo metodo può essere utilizzato per fare in modo che i siti Web di Azure eseguano i miei test con Karma, subito dopo la distribuzione con Git, invece di dover eseguirli da solo (simile a Travis-CI)? – pilau

+0

Grazie per aver fornito l'esempio. Ho anche controllato il post del blog associato, ma non ho trovato nulla relativo al mio problema. Ho copiato i passaggi bower e grunt nel mio file deploy.sh. Quando eseguo la distribuzione, viene visualizzato questo messaggio di errore nel log di installazione 'grunt-cli: l'interfaccia della riga di comando di grunt. (v0.1.13) Si è verificato un errore durante l'implementazione del sito Web. grunt failed 'Qualche idea? – moke

+0

azure site deploymentscript --node genera un file deploy.cmd nel mio caso. Significa che questo post è ormai obsoleto ?! – Vaibhav

Problemi correlati