Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

NPM is not found in script

Amit Sharma October 12, 2023

Background:

In the pipeline step, I have added multiple scripts something like 

image: drupal:9.5.11-php8.1-fpm
pipelines:
  branches:
    test:
      - step:
          script:

            - scripts/pipelines/setup.sh
            - scripts/pipelines/validate.sh
            - scripts/pipelines/build_artifact.sh
            - scripts/pipelines/deploy_artifact.sh
          services:
            - docker
            - mysql
          caches:
            - docker
            - node
            - composer

I used an image where node and npm are unavailable, so I need to install the node using nvm in setup.sh. I am able to install node and npm and the commands successfully are running properly in the setup script.

I am using Acquia BLT in this pipeline. BLT command is running post code command hook where I am running one script (frontend_build.sh) to run npm install and npm run build.

Problem:

Inside frontend_build.sh, it is giving an error "npm command not found".

Solution Tried:

  • I tried to update the PATH variable and source ~/.bashrc. This shows showing updated path.
  • Tried to export the npm path in the custom variable but nothing works.

 

Suggestions are welcome.

Thanks very much for all the help.

2 answers

0 votes
Mark C
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
October 15, 2023

Hi @Amit Sharma,

Thank you for reaching out to the community.

May we know how you're installing NPM in your build?
This is because when I tried using the base Docker image (drupal:9.5.11-php8.1-fpm), I got the same error message when running the NPM command because NPM is not available from the base Docker image.

+ npm --version
bash: npm: command not found

Regards,
Mark C

Amit Sharma October 15, 2023

Yes @Mark C  I am installing the npm in my script 

scripts/pipelines/setup.sh

in the above script I am installing and setting up the path of node and npm.

Also, I have checked the version. I installed the node using nvm. 

Mark C
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
October 18, 2023

Hi @Amit Sharma

Thanks for that.
Could we check if the NPM is still installed after running setup.sh script?

          script:
            - scripts/pipelines/setup.sh
            - npm --version
            - scripts/pipelines/validate.sh
            - scripts/pipelines/build_artifact.sh
            - scripts/pipelines/deploy_artifact.sh

You can also try installing NPM as part of the step script instead.

Let me know how it goes.

Regards,
Mark C

0 votes
Saxea _Flowie_
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
October 12, 2023

Hi @Amit Sharma

Is frontend_build.sh running in a different step? If so, node cache only caches node_modules not the actual node install.

Amit Sharma October 12, 2023

@Saxea _Flowie_  it is running inside the same step. I have added multiple scripts in the same step for reusability in other steps.

Amit Sharma October 15, 2023

@Saxea _Flowie_  I am running the Acquia BLT command in the build.sh, which runs a post-code hook. Inside this hook, I am running the frontend-build.sh

BLT picks the path of npm installed in the current container. I have used this on the local but it is not working in Pipeline.

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
TAGS
AUG Leaders

Atlassian Community Events