【问题标题】:NVM not found in AWS CI-CD Pipeline在 AWS CI-CD 管道中找不到 NVM
【发布时间】:2021-09-04 16:20:12
【问题描述】:

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

问题是我收到了 nvm not found 错误。

如果我的 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/**/*

谢谢。

【问题讨论】:

  • 您确定设置了 $HOME 变量吗?您可以尝试回显它并查看它是否设置为正确的值
  • @ArunK 嗨,$HOME 返回“/root”。这是正确的吗?
  • 是的,因为 docker 以 root 身份运行。我没有机会尝试这个。你能帮我试试这两个想法吗? 1. 更改该行以包含一个 echo '[ -s "$NVM_DIR/nvm.sh" ] && echo "nvm folder exists" && \. "$NVM_DIR/nvm.sh"' 。查看它是否在日志中打印“nvm 文件夹存在”。 2. 我要你先试试第一个。那么您可以将行更改为 '[ -s "$NVM_DIR/nvm.sh" ] && source "$NVM_DIR/nvm.sh"' 。看看能不能解决问题
  • 我应用了第一个想法,它返回“nvm 文件夹存在”,然后我更改了行,现在我的行​​如下所示:` - echo $HOME \n - export NVM_DIR="$HOME/. nvm" \n - '[ -s "$NVM_DIR/nvm.sh" ] && 。 "$NVM_DIR/nvm.sh"' \n - '[ -s "$NVM_DIR/nvm.sh" ] && 。 "$NVM_DIR/nvm.sh"' \n - '[ -s "$NVM_DIR/bash_completion" ] && 。 "$NVM_DIR/bash_completion"'` 我把源改成了'。'因为它给出了找不到错误源。它进入预构建阶段,但未找到相同的 nvm 错误:/codebuild/output/tmp/script.sh: 4: /codebuild/output/tmp/script.sh: nvm: not found
  • 你用于代码构建的图像是什么

标签: amazon-web-services aws-codepipeline


【解决方案1】:

您实际上不需要使用 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 相同的版本。

【讨论】:

    【解决方案2】:

    工作解决方案

    由于某种原因,它无法识别下一行中的 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的方法。

    【讨论】:

    • 非常感谢 :)
    猜你喜欢
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 2020-04-11
    • 2023-02-16
    • 2022-07-04
    • 1970-01-01
    相关资源
    最近更新 更多