Estoy tratando de instalar nodejs usando un archivo de script de shell llamado install-nodejs.sh en el trabajo de gitlab ci en proceso. La instalación es exitosa y el nodo muestra la versión dentro del archivo install-nodejs.sh pero cuando digo node -v en el archivo gitlab-ci.yml no reconoce el comando del nodo, ¿qué estoy haciendo mal?
Creé un script de shell para instalar nodejs y configurar la ruta de exportación, pero aún no se reconoce el nodo
código de archivo install-nodejs.sh
#!/usr/bin/env bash set -e command -v node > /dev/null | NOT_INSTALLED=1 if [[ "$NOT_INSTALLED" != "1" ]] then mkdir /usr/local/nvm NVM_DIR="/usr/local/nvm" NODE_VERSION="10.12.0" NVM_INSTALL_PATH="$NVM_DIR/versions/node/v$NODE_VERSION" rm /bin/sh && ln -s /bin/bash /bin/sh curl --silent -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash source ~/.nvm/nvm.sh nvm install $NODE_VERSION nvm alias default $NODE_VERSION nvm use default export NODE_PATH="$NVM_INSTALL_PATH/lib/node_modules" export PATH="$NVM_INSTALL_PATH/bin:$PATH" fiy código de archivo gitlab.yml donde estoy llamando a este archivo
test_install_nodejs: <<: *default_job_template stage: build script: - ./scripts/install-nodejs.sh - node -v - npm -v - npm install -g newmannode -v en el archivo gitlab.yml no reconoce el nodo, pero puedo ver que la instalación del nodo es exitosa desde el archivo de shell anterior.
El nodo no se encuentra en el archivo gitlab.yml porque las variables que ha definido en su script de instalación no están disponibles allí. Puede verlo usted mismo llamando a echo $PATH justo después ./scripts/install-nodejs.sh . Verá que PATH no contiene $NVM_INSTALL_PATH/bin .
La razón es que la export exporta las variables al proceso secundario, no al principal. Consulte Bash: la exportación no pasa las variables correctamente al padre .
Puede hacer que estén disponibles en el archivo gitlab.yml usando source :
test_install_nodejs: <<: *default_job_template stage: build script: - source ./scripts/install-nodejs.sh - node -v - npm -v - npm install -g newman Tenga en cuenta que asumo que install-nodejs.sh es exactamente el que ha mostrado y no termina con exit (de lo contrario, el script yml terminará justo después de la fuente).