我正在尝试使用npm和.gitlab-ci.yml将一个包放到Gitlab注册表中。
.gitlab-ci.yml
npm-package:
stage: build
image: node:buster
before_script:
- git config --global user.name "${GITLAB_USER_NAME}"
- git config --global user.email "${GITLAB_USER_EMAIL}"
script:
- npm config set @${CI_PROJECT_ROOT_NAMESPACE}:registry=https://${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/
- npm config set //${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}
- NPM_PACKAGE_NAME=$(node -p "require('.package.json').name")
- NPM_PACKAGE_VERSION=$(node -p "require('./package.json').version")
- echo $(npm view "${NPM_PACKAGE_NAME}" versions)
- echo ${NPM_PACKAGE_NAME}
- echo ${NPM_PACKAGE_VERSION}
- |
if [[ $(npm view "${NPM_PACKAGE_NAME}" versions) != *"'${NPM_PACKAGE_VERSION}'"* ]]; then
npm config set //${CI_SERVER_HOST}/api/v4/projects/${CI_PROJECT_ID}/packages/npm/:_authToken=${CI_JOB_TOKEN}
npm publish
echo "Successfully published version ${NPM_PACKAGE_VERSION} of ${NPM_PACKAGE_NAME} to GitLab's NPM registry: ${CI_PROJECT_URL}/-/packages"
else
echo "Version ${NPM_PACKAGE_VERSION} of ${NPM_PACKAGE_NAME} has already been published, so no new version has been published."
fi我第一次尝试,包成功地保存在回购。现在,我试图在以下条件下运行它:如果版本的包已经更改,那么运行npm发布。但是变量$(npm view "${NPM_PACKAGE_NAME}" versions)似乎是空的,当我试图回显它时,我得到了错误:
npm错误!代码E401 npm!401未经授权-获取https://gitlab.example.com/api/v4/projects/1/packages/npm/@my_scope/my_package
有什么帮助吗?
发布于 2022-07-05 19:41:54
你的CI没有足够的权利。
1-您需要通过npm (或通过命令行)从npm注册中心生成访问令牌(自动类型)。
使用UI:https://docs.npmjs.com/creating-and-viewing-access-tokens的过程
2-将令牌分配给您的CI可访问的环境变量(本例中命名为NPM_TOKEN )
3-然后创建(或更新)一个.npmrc文件,一行位于顶部://Regiy.npmjs.org/:_authToken=${NPM_TOKEN}
https://stackoverflow.com/questions/72874473
复制相似问题