AWS CodeBuild 错误:运行时“nodejs”不支持别名“14.x”的主要版本

Oll*_*lie 24 aws-codebuild

我对 AWS CodeBuild 有一个令人困惑的问题。我收到以下错误:

Major version of alias '14.x' is not supported in runtime 'nodejs'
Run Code Online (Sandbox Code Playgroud)

当我将构建规范更新为“14”时,我得到了有关错误的更多信息:

Message: Unknown runtime version named '14' of nodejs. This build image has the following versions: 10, 12
Run Code Online (Sandbox Code Playgroud)

我们已经使用这个 CodeBuild 项目很长时间了,使用的是 12.x,现在需要更新到 14.x。我们更新了构建规范如下:

version: 0.2

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

  build:
    commands:
      - "npm i"
      - "npm run build"
      - "npm run db:migrate"

artifacts:
  files:
    - "all"
    - "of"
    - "our"
    - "files"

Run Code Online (Sandbox Code Playgroud)

此外,我们的 CodeBuild 已采用最新版本的 CodeBuild 映像。我什至重新构建了 CodeBuild 项目,以确保它是最新的并且仍然存在相同的问题:

aws/codebuild/amazonlinux2-x86_64-standard:3.0

预先感谢您的任何建议。

Oll*_*lie 40

值得庆幸的是我们现在已经解决了这个问题!

问题出在 CodeBuild 映像上:

aws/codebuild/amazonlinux2-x86_64-standard:3.0

根据可用的运行时文档,事实证明我们根本无法使用 Amazon Linux 2,我们必须更改为“Ubuntu Standard 5”。

我希望这对将来的人有帮助。

  • 6 个月后,亚马逊 linux codebuild 映像上的最新版本的节点仍然是 12 - 该版本现在完全不再支持 (2认同)

小智 18

如果您确实需要使用 Amazon Linux 2 而不是 Ubuntu,则可以使用 CodeBuild 中预安装的n软件包安装 Node 14:

version: 0.2

phases:
  install:
    commands:
      - n 14.18.3

  build:
    commands:
      - npm i #etc
Run Code Online (Sandbox Code Playgroud)

在我们的例子中,我们需要构建依赖项以在 Lambda 中运行。由于 Lambda 运行 Amazon Linux 2 版本,因此在 Ubuntu 中构建这些依赖项不起作用(由于复杂的子依赖项原因)。

尝试过但没有成功:

然后我们意识到n 已经预先安装在 CodeBuild 中并管理节点版本。

最后,不需要复杂的命令。