在 AWS CI-CD 管道中找不到 NVM

NVM not found in AWS CI-CD Pipeline

我刚开始在 aws 中创建管道。我想为我的 nuxt 项目创建一个 ci-cd 管道。 我创建了一个 yml 文件,我想在其中安装 nvm,然后安装节点版本 12.18.3

问题是我遇到了找不到 nvm 的错误。

如果我的 yml 文件中有任何错误,请检查并告诉我:

version: 0.2
phases:
  install:
   commands:
     - echo Installing nvm...
     - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
     - export NVM_DIR="$HOME/.nvm"
     - '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"'
     - '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"'
  pre_build:
    commands:
      #install dependencies
      - echo Installing node...
      - nvm install 12.18.3
      - echo Installing npm...
      - npm install
  build:
    commands:
      #build
      - echo building...
      - npm run generate
artifacts:
  files:
    - '**/*'
 base-directory: dist
cache:
  paths:
    - node_modules/**/*

谢谢。

工作解决方案

出于某种原因,它无法识别下一行中的 nvm。我没有机会进一步调查它。以下配置有效。这个想法是在同一行中设置 nvm 配置和安装节点。

version: 0.2
phases:
  install:
    commands:
      - echo Installing nvm...
      - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
      - export NVM_DIR="$HOME/.nvm"
      - '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"'
      - '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"'
  pre_build:
    commands:
      #install dependencies
      - . "$NVM_DIR/nvm.sh" && nvm install 12.18.3 && echo "node installed by arun"
      - echo Installing node...
      #- nvm install 12.18.3
      - echo Installing npm...
      - npm install
  build:
    commands:
      #build
      - echo building...
      - npm run generate
cache:
  paths:
    - node_modules/**/*

在本地环境中进行故障排除。

为了解决 buildspec.yaml 问题,您可以 运行 在本地构建。这是 run the buildspec locally.

的方法

您实际上不需要使用 nvm 在 AWS CodeBuild 上安装特定 node.js 版本。

您可以使用 runtime-versions 选项来安装某些版本,但您对此没有太多控制权。

phases:
  install:
    runtime-versions:
      nodejs: 12.x

但是 AWS 标准 5 图像预装了 n(没有检查 4,但它也应该在那里),所以你可以像这样使用它:

phases:
  install:
    commands:
      - n 12.18.3

它会安装与 nvm 相同的版本。