【问题标题】:Installing NPM package from gitlab doesn't download all repo files only on CI从 gitlab 安装 NPM 包不会仅在 CI 上下载所有 repo 文件
【发布时间】:2019-10-12 00:37:08
【问题描述】:

我使用 GitLab 作为我的 npm 包存储库。使用此包的项目正在使用 ssh url 并以特定标签为目标。消费项目 package.json 中的条目如下所示:"my-package": "git+ssh://git@gitlab.com:company/repo.git#tag"

现在澄清一下,这在我的开发机器上运行良好。我可以擦除我的 node_modulespackage-lock.json 文件,清除我的 npm 缓存,然后成功构建和安装 npm imy-package

my-package 项目的package.json 有一个prepare 脚本,用于在安装时构建包。它看起来像这样:

"scripts": {
    "prepare": "npm run build",
    "clean": "npx rimraf lib",
    "build": "npm run clean && tsc && npx gulp"
  },

my-package 在私有仓库中,因此为了解决初始权限问题,我必须创建 ssh 密钥,我将公钥添加到部署密钥部分下的 my-package GitLab 仓库中,按照这些说明https://docs.gitlab.com/ee/ssh/#deploy-keys

消费项目中的.gitlab-ci.yml 文件将私钥包含在 ssh-agent 中,如下所示:

before_script:
  - apk update
  - 'which ssh-agent || ( apk update -y && apk add openssh-client -y )'
  - mkdir -p ~/.ssh
  - eval $(ssh-agent -s)
  - echo "$SSH_PRIVATE_KEY" | ssh-add -
  - ssh-keyscan -H gitlab.com >> ~/.ssh/known_hosts

而且我没有权限问题。消费项目 CI 的测试阶段如下所示:

test:
  stage: test
  script:
    - apk update
    - apk --no-cache add --update nodejs nodejs-npm git
    - npm install
    - ls node_modules/my-package/
    - npm run lint
    - npm run test

奇怪的是,npm install 没有在这里下载和构建my-package(就像在我的电脑上一样),它只安装 package.json 和自述文件。上面 ci 平台上ls node_modeuls/my-package 的结果是这样的:

$ ls node_modules/my-package/
package.json
readme.md

当然,由于我的包没有被下载,因此使用该包的测试无法运行。

在过去的 2 天里,我在这两个项目上尝试了上百万种不同的调整排列。我所做的一切都不能在 CI 平台上工作(但它始终在本地工作????)。我真的很想知道我忽略了什么,因为这可以在我的计算机上运行,​​那么必须有一种方法可以在 CI 平台上运行。

有什么想法吗?

【问题讨论】:

  • 所以,我通过不排除 my-package 中的构建目录来临时工作。在本地构建,从 .gitignore 中删除 /lib 并向上推构建目录会导致构建目录被拉入 CI。这可行,但并不理想,因为人们很容易忘记在推送之前构建项目,因为这应该发生在包的消耗中。
  • 同样的问题,我不想将dist 文件夹上传到我的仓库。 "prepare" 看起来是正确的选择,但似乎没有被触发。有更新吗?

标签: node.js git npm gitlab gitlab-ci


【解决方案1】:

我明白了,

解决办法,添加这条指令

- npm config set unsafe-perm true

在你之前

- npm install

不安全的烫发

默认值:如果以 root 身份运行则为 false,否则为 true

类型:布尔值 设置为 true 以在运行包脚本时抑制 UID/GID 切换。如果显式设置为 false,则以非 root 用户身份安装将失败。

这确实工作npm install --unsafe-perm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多