Is there any guide to manage to deploy.sh script in Azure Web App on Linux for nodejs app? I am consistently getting deployment errors on running the command on the continuous deployment. The error starts with the 1st deployment script when I first setup the continuous deployment. The error mostly happened at "bower install" command where bower command is not found with bash command line.
To overcome this issue, I performed the following:
Login to Kudu tool, Bash (ssh is not working on the 1st time)
Run "npm install --production", but this will not complete the installation
Run "bower install", getting error bower not install - tried with npm install -g bower - it's still not solving the problem.
somehow, I tried several times to open/close Kudu tool, until SSH starts to load(miracle)
with SSH terminal, I am able to perform "npm install -g bower" and "bower install", which concluded the installation and I'm able to load my website
However, the status of the deployment will still stay failed and subsequence deployment does not seem to have been improved at all as it failed at the deployment script.
The following is the error generated from subsequence deployment:
Command: "/home/site/deployments/tools/deploy.sh"
/opt/Kudu/bin/Scripts/starter.sh: /home/site/deployments/tools/deploy.sh: /bin/bash^M: bad interpreter: No such file or directory
/opt/Kudu/bin/Scripts/starter.sh: line 2: /home/site/deployments/tools/deploy.sh: Success
/opt/Kudu/bin/Scripts/starter.sh: /home/site/deployments/tools/deploy.sh: /bin/bash^M: bad interpreter: No such file or directory\n/opt/Kudu/bin/Scripts/starter.sh: line 2: /home/site/deployments/tools/deploy.sh: Success\n/opt/Kudu/bin/Scripts/starter.sh "/home/site/deployments/tools/deploy.sh"
Hope experts from MS can help me on this matter. Thank you.
Best regards,
Szelee
On Linux, it's important that any bash deployment scripts that get run have Unix line endings (LF) and not Windows line endings (CRLF). Kuduscript will generate scripts with platform-appropriate line endings, but if those scripts are modified, or if you provide your own custom deployment scripts, it's important to make sure that your editor doesn't change the line endings.
If something seems off with your deployment script, you can always use the Kudu console to delete the contents of /home/site/deployments/tools. This is the directory where Kudu caches kuduscript-generated deployment scripts. On the next deployment, the script will be regenerated.
Related
I have been following this guide on how to use Node.js to script git hooks. However, the guide is using a Unix based system whilst I am running on a Windows machine.
I have also found this guide on running git hooks on a Windows machine, but it is not using Node.js
I am running a pre-install script in my package.json file to set a custom git hooks location.
I am using VSCode as my editor and would like the git hooks to run when I use the UI for commits etc. However I am using command line initially to try and get the hooks to fire.
package.json excerpt
"scripts": {
"preinstall": "git config core.hooksPath ./git.hooks"
},
In my git.hooks folder I have a pre-commit.js file.
I have updated the first line to reflect the fact I'd like to execute the script running Node.js
pre-commit.js
#!C:/Program\ Files/nodejs/node.exe
console.log('Hello world!');
process.exit(1);
If I run this script directly I get a Microsoft JScript compilation error - Invalid character on line 1 char 1.
If I do a commit, I get no errors but nothing happens.
Can anyone guide me through the process of creating a Node.js hook in Windows. I would rather create one myself than use a package.
Name the hook exactly pre-commit, without .js.
Change the first line to #!/usr/bin/env node. But make sure that C:/Program\ Files/nodejs/node.exe has been added to the environment variable PATH.
Place it in <repo>/.git/hooks.
Make it executable. In git-bash, run chmod a+x <repo>/.git/hooks/pre-commit.
Now it should work as expected.
I've installed nodejs as described here.
Everything works fine when I ssh to the server myself. But I've created a script that deploys my application and call it via bitbucket pipelines. Everything else works fine (composer install, php artisan migrate etc.), except npm install. The error message is
./deploy: line 26: npm: command not found
In bitbucket-pipelines.yml I call my script like this:
- step:
script:
- ssh user#ip_address ./deploy
When I call the script by myself everything works. The problem is only with bitbucket pipelines. I have no clue why this happens :(.
Running which composer revealed that at least composer command is not getting picked up from your assumed location i.e., ~/composer dir. Instead, it was found in /opt/cpanel/composer/bin/composer.
which npm returned the following:
no npm in (/usr/local/cpanel/3rdparty/lib/path-bin:/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin:/opt/cpanel/composer/bin:/home/handmast/.local/bin:/home/handmast/bin)
Now since you are able to manually run the command npm, you just need to figure about the path from where npm is running and ensure that the path is explicitly added to the user's ~/.bashrc file and things should work fine. You need to do this because as per your observation, ssh is not able to find it.
export PATH=$PATH:/path/to/npm/binary
Note: To avoid any confusion, just remember that while adding the path to your binary, you just have to add the path to the directory where npm resides. Don't add npm at the end. For example, following is incorrect way:
export PATH=$PATH:/home/handmast/bin/npm
Correct way is this:
export PATH=$PATH:/home/handmast/bin
Am trying to deploy my node express app to heroku from my windows 10 os and am using the git bash terminal, but anytime i try to run the heroku command it returns this error
'/c/Users/user/AppData/Roaming/npm/node_modules/heroku-cli/bin/run:
line 19: /c/Program Files/nodejs/node: cannot execute binary file:
Exec format error'
Please does anyone know how i could solve this challenge?
PS: i ran the command as administrator on git bash
From heroku-cli GitHub repository I can see the following 19th line of the run file:
node "$DIR/run.js" "$#"
Looks like it tries to run run.js file but fails because can't recognise node as an executable binary file.
It's possible that you have a NodeJS version with wrong architecture or installation was not successful. Anyway seems like node is not installed correctly.
So I would uninstall it properly and install it again regarding architecture of the OS
I created a new gocd pipeline and have three shell script files to run on different stages.
The problem is the go agent doesn't know npm.
Note: I have npm installed on the machine with go agent and I manually run the shell script from the pipeline.
Here is my shell script to install the packages.
#!/bin/sh
npm install
The error:
01:34:43.674 [go] Start to execute task: <exec command="./install.sh" />.
01:34:43.680 ./install.sh: line 3: npm: command not found
01:34:43.814 [go] Current job status: failed.
Problem
Assuming you have npm/nodejs installed on the agent, the problem probably lies in the fact the user doesn't have its PATH environment variable configured to look into the folder npm was installed in.
Solution
1) You can specify the whole path (/usr/bin/npm) when creating a task.
2) You can edit the .bashrc/.bash_profile of the user running the gocd agent server. In which case you'll be able to call '/usr/bin/npm' without the path prepended.
Example Working Configuration
Consider modification of the agent init script. Changing .bashrc/.bash_profile of the user running the gocd agent does not work because the go agent insulates itself from the calling environment. So on our systems we add these PATH items to the go agent startup scripts. (I use puppet to create agents. The default agent init scripts are not that good - you need to own them.)
Does anyone know how you would run the following command within TeamCity? (the command is normally ran in a Node.js command window)..."Karma start karma.conf.js". I have successfully installed Nodejs on the TeamCity server. I have then successfully installed Karma on the same server (using npm install -g karma).
In TeamCity, my build step has "Runner type = Command Line", and the Custom Script is set to "FULLPATHOFKARMAEXE\karma.cmd start FULLPATHOFKARMACONFIGFILE/kara.conf.js"
When i run TeamCity, it comes back with the error "node is not recognized as an internal or external command"
Anyone know the step-by step process of running Karma within TeamCity?
In your case, the Karma installation seems to be OK, but your TeamCity agent process is unable to resolve the path to Node.exe (it's installation folder is missing from the %PATH% variable).
First verify the NodeJS installation by opening a Commandline window on the agent machine, type node and press enter:
c:> node
>
If the result in your Command window is a >-prompt, you might solve your problems by restarting the build agent.
If the result in your Command window is some error message saying "node is not recognized as an internal or external command", you need to add the NodeJS installation folder to the %PATH% variable, and restart the build agent.
You can, of course, just change the %PATH% for your build agent service by running a initialization script included in the NodeJS installtion folder in your build step. Depending on where your NodeJS installastion is, your custom script might look like this:
"C:\Program Files (x86)\nodejs\nodevars.bat"
"FULLPATHOFKARMAEXE\karma.cmd start FULLPATHOFKARMACONFIGFILE/kara.conf.js"