1

我已经设置了一个 Travis CI 来运行一些脚本,这些脚本应该:

  1. 将一些静态页面部署到 Github 页面
  2. 将 NPM 包部署到 npmjs

第 1 项有效,第 2 项无效。

这是我的travis.yml文件的样子:

language: node_js
node_js:
 - '10'
script:
 - gulp build
 - gulp npmDist
deploy:
 - provider: pages
    local_dir: dist-site/
    skip_cleanup: true
    github_token: "$GITHUB_TOKEN"
    on:
      branch: master
 - provider: npm
    email: myemail@mydomain.com
    api_key:
      secure: THE-API-KEY-I-GOT-BY-CREATING-A-TOKEN-ON-NPMJS-AND-ENCRYPTING-IT-USING-TRAVIS-ENCRYPT-COMMAND-IN-TERMINAL
    on:
      tags: true
      repo: githubaccount/reponame
      all_branches: true

我以两种方式触发脚本: - 当我合并到 master 时,它会部署到 GitHub Pages。- 当我创建一个标签并推送到 master 时,它应该将包部署到 npmjs。

如前所述,文件的第一部分有效,因为它实际上部署到 GitHub Pages。

这是我从 npmjs 得到的错误:

npm ERR! publish Failed PUT 401
npm ERR! code E401
npm ERR! You must be logged in to publish packages. : package-name

(哦,还有一件奇怪的事情:Travis 以“构建通过”和成功状态(绿色)返回,即使显然有问题)

希望这有意义吗?提前感谢您的帮助。

4

2 回答 2

1

修复它 - 而不是在travis.yml-file 中包含它:

api_key:
      secure: THE-API-KEY-I-GOT-BY-CREATING-A-TOKEN-ON-NPMJS-AND-ENCRYPTING-IT-USING-TRAVIS-ENCRYPT-COMMAND-IN-TERMINAL

我将其更改为:

api_key: "$NPM_TOKEN"

..并在 Travis CI 仪表板中添加 NPM 令牌作为环境变量。

(仍然好奇为什么它不起作用,但我懒得做点什么,因为我今天已经在这个问题上浪费了太多时间)

于 2019-03-08T20:38:04.613 回答
0

我遇到了同样的问题,我只是删除了所有以前的密钥并再次生成它们,我的代码如下所示:


deploy:
  provider: npm
  email: $NPM_USER
  api_key: $NPM_TOKEN

要创建您的NPM_TOKEN,您必须:

  1. 转到您的 npm 个人资料
  2. 代币
  3. 创建令牌
  4. 选择“阅读并发布”并创建它。

然后,您可以在相应项目的环境变量中指定它。密钥不必加密,用户是您的电子邮件。就是这样。

您将收到如下通知:

Installing deploy dependencies
dpl.2
Preparing deploy
dpl.3
Deploying application
+ your-artifact@x.x.x
于 2019-09-02T03:11:44.633 回答