Atlasian Elastic Bamboo build error: Too many open files error for Angular CLI build

Atlasian Elastic Bamboo build error: Too many open files error for Angular CLI build

当我在 Bamboo 上构建我的 Angular-CLI 项目时,出现以下错误:

Error: EMFILE: too many open files, open '<file...>'
EMFILE: too many open files, open '<file...>'

我是 AWS EC2 linux 实例上的 运行 elastic Bamboo。我查看了 Atlassian's support forum,但他们只给出了解决问题的一般指导方针,而不是如何实际将修复程序添加到使用 AWS EC2 实例的现有 bamboo 设置中。

在您的 Angular CLI 项目中,在 .angular-cli.json (cli v1.x.x) 或 angular.json (cli v6.x.x+) 下 assets 您可能添加了一个包含大量文件的文件夹。当 angular cli 构建项目时,文件被复制到构建文件夹,这是错误的主要原因,因为该过程达到了可以在系统级别打开和复制的文件数量的限制。

要解决此问题,您只需在 bamboo 管理菜单中更新您的 AWS EC2 映像配置,以包含支持论坛中描述的修复。

  1. 以 root/admin 用户身份登录您的 bamboo 网站
  2. 下一步单击右上角菜单中的齿轮(设置)图标
  3. 点击Overview
  4. ELASTIC BAMBOO 下的左侧菜单,单击 Image configurations
  5. 在配置列表中,找到用于为该特定构建创建 bamboo worker 实例的配置,您可能需要联系您的系统管理员/基础架构人员来解决这个问题,但通常只有它已启用/未变灰。单击该特定配置行的 edit
  6. 向下滚动到 Instance startup script 文本字段
  7. 将以下行添加到脚本列表的底部

    #increase open file limit
    sudo echo "*           soft    nofile          40000" >> /etc/security/limits.conf
    sudo echo "*           hard    nofile          40000" >> /etc/security/limits.conf
    

    请注意 * 表示任何用户,但为了更具体,您可以将其替换为 Bamboo_USER

  8. 点击Save

  9. ELASTIC BAMBOO 下的左侧菜单,单击 Instances
  10. 右上角区域,单击Terminate all instances删除任何使用旧脚本的实例,请确保您在终止时没有构建任何东西,因为构建将被中断并失败。
  11. 现在您应该可以再次开始构建,问题应该已解决,您可能需要重新启动 bamboo 实例一次才能使脚本生效。