从GitLab安装NPM包不会仅下载配置项上的所有repo文件 [英] Installing NPM package from gitlab doesn't download all repo files only on CI

查看:18
本文介绍了从GitLab安装NPM包不会仅下载配置项上的所有repo文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用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密钥,按照这些说明https://docs.gitlab.com/ee/ssh/#deploy-keys将公钥添加到部署密钥部分下的my-packageGitLab存储库。

消费项目中的.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

当然,因为没有下载我的软件包,所以使用该软件包的测试无法运行。

在过去的两天里,我在这两个项目上尝试了一百万种不同的调整。而且我做的任何事情都不能在CI平台上工作(但它始终在本地工作,🧐)。我真的很想知道我忽略了什么,因为既然这在我的计算机上工作,那么就必须有一种方法让它在CI平台上工作。

有什么想法吗?

推荐答案

我知道了,

解决方案,添加此说明

- npm config set unsafe-perm true

在您之前

- npm install

不安全烫发

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

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

此操作未起作用npm install --unsafe-perm

这篇关于从GitLab安装NPM包不会仅下载配置项上的所有repo文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆