【发布时间】:2019-11-22 07:42:18
【问题描述】:
在开发用于在 ci/cd 环境中发布 npm 包的 monorepo 工具 (yamrt) 时,prepublishOnly 脚本未在某些运行器中运行。
所有测试都在 circleci image circleci/node:12 中通过
官方节点中相同的测试失败:12 图像
为什么?
【问题讨论】:
标签: node.js docker npm continuous-integration monorepo
在开发用于在 ci/cd 环境中发布 npm 包的 monorepo 工具 (yamrt) 时,prepublishOnly 脚本未在某些运行器中运行。
所有测试都在 circleci image circleci/node:12 中通过
官方节点中相同的测试失败:12 图像
为什么?
【问题讨论】:
标签: node.js docker npm continuous-integration monorepo
事实证明,circleci/node:12 映像添加了一个用户来运行构建,而 node:12 没有用户,因此那里的进程以 root 身份运行。 npm 拒绝以 root 身份运行 prepublishOnly 脚本,并带有这条相当神秘的消息:
npm WARN lifecycle yamrt-node12-test@0.0.1~prepublishOnly: cannot run in wd yamrt-node12-test@0.0.1 echo PREPUBLISHING NM (wd=.)
一个明显的解决方法是将用户添加到 ci builder 映像中,这在任何情况下都当然是好的。
RUN groupadd ciuser && useradd -ms /bin/bash ciuser -g ciuser
USER ciuser
【讨论】: