GitlabCI - 包注册表 - NPM 包无法发布
GitlabCI - Package Registry - NPM Package can't publish
我的目标是在 Gitlab Registry 上发布一个 npm 包(如果可能的话是私有的)。
这是我的文件:
Package.json :
{
"name": "@sushislasher/sushislasher-package",
"version": "0.0.1",
"description": "Package for game",
"main": "index.ts",
"repository": "https://gitlab.com/sushislasher/sushislasher-package",
"author": "Gildraen",
"license": "MIT",
"private": false
}
Gitlab-CI.yml :
stages:
- deploy
image: $CI_REGISTRY_IMAGE/docker-in-docker
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
COMPOSE_FILE: "docker-compose.yml:docker-compose.gitlab-ci.yml"
.template-load-gitlab-image: &internal-image
before_script:
- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
- docker-compose pull js || true
deploy:
<<: *internal-image
stage: deploy
script:
- |
{
echo "@${CI_PROJECT_ROOT_NAMESPACE}:registry=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/"
echo "${CI_API_V4_URL#https?}/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}"
} | tee -a app/.npmrc
- make install
- make npm-publish
make install 构建容器,启动它们并执行 yarn 安装。
让 npm publish 基本上做一个 npm publish。
都装在容器里。
我正在使用 node:15.7-alpine
但是现在,尽管我进行了所有尝试和研究,但无法完成这项工作,我遇到了这个错误:
npm ERR! need auth This command requires you to be logged in.
npm ERR! need auth You need to authorize this machine using `npm adduser`
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-02-03T11_51_48_233Z-debug.log
1
我尝试遵循 gitlab 文档..但我现在有点卡住了..我做错了什么?
我做到了。经过多次尝试,这里是关键点。
- 包名。密切关注它非常重要。文档没有说明的是“package.json”需要与注册表同名。
如果您的注册表是@foo,则您的注册表需要@foo/something 作为项目名称。使用我在脚本中提供的代码,它采用根项目,这就是注册表。
对我来说是https://gitlab.com/gildraen/sushislasher-package
所以我的package.json名字是@gildraen/sushislasher-package(虽然名字似乎并不重要)
所以我从头开始重新做了一遍,更加注意这一点,而且它奏效了。
我真的认为这是我真正的错误:注册表名称。
我的目标是在 Gitlab Registry 上发布一个 npm 包(如果可能的话是私有的)。
这是我的文件:
Package.json :
{
"name": "@sushislasher/sushislasher-package",
"version": "0.0.1",
"description": "Package for game",
"main": "index.ts",
"repository": "https://gitlab.com/sushislasher/sushislasher-package",
"author": "Gildraen",
"license": "MIT",
"private": false
}
Gitlab-CI.yml :
stages:
- deploy
image: $CI_REGISTRY_IMAGE/docker-in-docker
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
COMPOSE_FILE: "docker-compose.yml:docker-compose.gitlab-ci.yml"
.template-load-gitlab-image: &internal-image
before_script:
- docker login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY
- docker-compose pull js || true
deploy:
<<: *internal-image
stage: deploy
script:
- |
{
echo "@${CI_PROJECT_ROOT_NAMESPACE}:registry=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/npm/"
echo "${CI_API_V4_URL#https?}/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}"
} | tee -a app/.npmrc
- make install
- make npm-publish
make install 构建容器,启动它们并执行 yarn 安装。 让 npm publish 基本上做一个 npm publish。 都装在容器里。 我正在使用 node:15.7-alpine
但是现在,尽管我进行了所有尝试和研究,但无法完成这项工作,我遇到了这个错误:
npm ERR! need auth This command requires you to be logged in.
npm ERR! need auth You need to authorize this machine using `npm adduser`
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-02-03T11_51_48_233Z-debug.log
1
我尝试遵循 gitlab 文档..但我现在有点卡住了..我做错了什么?
我做到了。经过多次尝试,这里是关键点。
- 包名。密切关注它非常重要。文档没有说明的是“package.json”需要与注册表同名。 如果您的注册表是@foo,则您的注册表需要@foo/something 作为项目名称。使用我在脚本中提供的代码,它采用根项目,这就是注册表。
对我来说是https://gitlab.com/gildraen/sushislasher-package 所以我的package.json名字是@gildraen/sushislasher-package(虽然名字似乎并不重要)
所以我从头开始重新做了一遍,更加注意这一点,而且它奏效了。 我真的认为这是我真正的错误:注册表名称。