1
votes

Does anyone have an example of customising kudu to run npm, bower and typescript compile gulp/grunt scripts as part of the CI process, for an asp.Net app?

I have a webslot which has a deployment source configured of a branch of my repo. On pushing to the repo the webslot syncs. I tried customising a deploy.cmd to run but i got errors based on the version of npm/node i had installed.

Is there another way to force the version of npm/node being run in a web slot for an asp.net site? I've tried Specifying these app settings,

WEBSITE_NODE_DEFAULT_VERSION = 4.4.3
WEBSITE_NPM_DEFAULT_VERSION = 3.8.9

but running npm -v gives me 1.1.37

and running node -v gives me v0.10.28 and the following error

Window title cannot be longer than 1023 characters.
At line:1 char:1
+ node -v
+ ~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [], RuntimeException
    + FullyQualifiedErrorId : Argument

running npm install in the d:\home\site\wwwroot also fails

PS D:\home\site\wwwroot> npm install
npm WARN package.json [email protected] No README.md file found!
npm http GET https://registry.npmjs.org/typings
npm http GET https://registry.npmjs.org/gulp-tslint
npm http GET https://registry.npmjs.org/gulp-bower
npm http GET https://registry.npmjs.org/gulp-debug
npm http GET https://registry.npmjs.org/gulp-sourcemaps
npm http GET https://registry.npmjs.org/gulp-rimraf
npm http GET https://registry.npmjs.org/gulp-inject
npm http GET https://registry.npmjs.org/gulp
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/gulp-typescript
npm http GET https://registry.npmjs.org/gulp-debug
npm http GET https://registry.npmjs.org/gulp-rimraf
npm http GET https://registry.npmjs.org/gulp-bower
npm http GET https://registry.npmjs.org/gulp
npm http GET https://registry.npmjs.org/gulp-inject
npm http GET https://registry.npmjs.org/gulp-sourcemaps
npm http GET https://registry.npmjs.org/gulp-tslint
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/typings
npm http GET https://registry.npmjs.org/gulp-typescript
npm http GET https://registry.npmjs.org/gulp-rimraf
npm http GET https://registry.npmjs.org/gulp-debug
npm ERR! Error: SSL Error: CERT_UNTRUSTED
npm ERR!     at ClientRequest.<anonymous> (D:\Program Files (x86)\nodejs\node_modules\npm\node_modules\request\main.js:440:26)
npm ERR!     at ClientRequest.g (events.js:156:14)
npm ERR!     at ClientRequest.emit (events.js:67:17)
npm ERR!     at HTTPParser.parserOnIncomingClient (http.js:1256:7)
npm ERR!     at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:91:29)
npm ERR!     at CleartextStream.socketOnData (http.js:1288:20)
npm ERR!     at CleartextStream._push (tls.js:375:27)
npm ERR!     at SecurePair.cycle (tls.js:734:20)
npm ERR!     at EncryptedStream.write (tls.js:130:13)
npm ERR!     at Socket.ondata (stream.js:38:26)
npm ERR!  [Error: SSL Error: CERT_UNTRUSTED]
npm ERR! You may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <[email protected]>

npm ERR! System Windows_NT 6.2.9200
npm ERR! command "D:\\Program Files (x86)\\nodejs\\\\node.exe" "D:\\Program Files (x86)\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install"
npm ERR! cwd D:\home\site\wwwroot
npm ERR! node -v v0.6.20
npm ERR! npm -v 1.1.37
npm ERR! message SSL Error: CERT_UNTRUSTED
npm http GET https://registry.npmjs.org/gulp-bower
npm http GET https://registry.npmjs.org/gulp
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/gulp-sourcemaps
npm http GET https://registry.npmjs.org/gulp-inject
npm http GET https://registry.npmjs.org/gulp-tslint
npm http GET https://registry.npmjs.org/typings
npm http GET https://registry.npmjs.org/gulp-typescript

Should i be running all manipulation commands/scripts within the repositry folder? and then copying all to the wwwroot folder?

3
Hi @Tim, have you solved your problem?Gary Liu

3 Answers

1
votes

For the 'CERT_UNTRUSTED' error, you can bypass https using following cmd:

npm config set strict-ssl false

or execute this:

process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0';
1
votes

It seems that Azure Web Apps runtime do not have the nodejs version 4.4.3, you login the Kudu console site of your application, at the URL of https://<your_web_app_name>.scm.azurewebsites.net/DebugConsole, and change directory to D:\Program Files (x86)\nodejs>, you can find all the available nodejs version list.

Here is the folder list:

Mode                LastWriteTime     Length Name                              
----                -------------     ------ ----                              
d----         4/17/2016   4:06 AM            0.10.18                           
d----         4/17/2016   4:06 AM            0.10.21                           
d----         4/17/2016   4:06 AM            0.10.24                           
d----         4/17/2016   4:05 AM            0.10.26                           
d----         4/17/2016   4:05 AM            0.10.28                           
d----         4/17/2016   4:05 AM            0.10.29                           
d----         4/17/2016   4:05 AM            0.10.31                           
d----         4/17/2016   4:05 AM            0.10.32                           
d----         4/17/2016   4:04 AM            0.10.40                           
d----         4/17/2016   3:49 AM            0.10.5                            
d----         4/17/2016   4:04 AM            0.12.0                            
d----         4/17/2016   4:04 AM            0.12.2                            
d----         4/17/2016   4:04 AM            0.12.3                            
d----         4/17/2016   4:04 AM            0.12.6                            
d----         4/17/2016   4:07 AM            0.6.20                            
d----         4/17/2016   4:08 AM            0.8.19                            
d----         4/17/2016   4:07 AM            0.8.2                             
d----         4/17/2016   4:06 AM            0.8.26                            
d----         4/17/2016   4:06 AM            0.8.27                            
d----         4/17/2016   4:06 AM            0.8.28                            
d----         4/17/2016   4:04 AM            4.0.0                             
d----         4/17/2016   4:04 AM            4.1.0                             
d----         4/17/2016   4:04 AM            4.1.2                             
d----         4/17/2016   4:04 AM            4.2.1                             
d----         4/17/2016   4:04 AM            4.2.2                             
d----         4/17/2016   4:04 AM            4.2.3                             
d----         4/17/2016   4:04 AM            4.2.4                             
d----         4/17/2016   4:04 AM            4.3.0                             
d----         4/17/2016   4:04 AM            4.3.2                             
d----         4/17/2016   4:04 AM            4.4.0                             
d----         4/17/2016   4:04 AM            4.4.1                             
d----         4/17/2016   4:03 AM            5.0.0                             
d----         4/17/2016   4:03 AM            5.1.1                             
d----         4/17/2016   4:03 AM            5.3.0                             
d----         4/17/2016   4:03 AM            5.4.0                             
d----         4/17/2016   4:03 AM            5.5.0                             
d----         4/17/2016   4:03 AM            5.6.0                             
d----         4/17/2016   4:03 AM            5.7.0                             
d----         4/17/2016   4:03 AM            5.7.1                             
d----         4/17/2016   4:03 AM            5.8.0                             
d----         4/17/2016   4:02 AM            5.9.1                             
d----         4/29/2016   7:46 PM            6.0.0

Please try to modify the App Setting WEBSITE_NODE_DEFAULT_VERSION to an available version above.

Any further concern, please free feel to let me know.

0
votes

You can create a custom deployment script to download any tools you need and invoke them to deploy your site exactly how you want.