我已经设置了Travis CI来运行一些脚本,该脚本应该:
第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。 -创建标签并推送到主标签时,应将软件包部署到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也会返回“ Build Passed”并获得成功状态(绿色))
希望这有意义吗?提前感谢您的帮助。
答案 0 :(得分:0)
修复了该问题-而不是将其保存在travis.yml
文件中:
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令牌作为环境变量。
(仍然对为什么它不起作用感到好奇,但由于今天我已经在这个问题上浪费了太多时间,所以我不愿意为此做任何事情)
答案 1 :(得分:0)
我遇到了同样的问题,我只是删除了所有先前的密钥,然后再次生成它们,所以我的代码如下:
deploy:
provider: npm
email: $NPM_USER
api_key: $NPM_TOKEN
要创建NPM_TOKEN
,您必须:
然后可以在相应项目的env变量中指定它。 密钥不必加密,用户就是您的电子邮件。就是这样。
您将收到类似的通知:
Installing deploy dependencies
dpl.2
Preparing deploy
dpl.3
Deploying application
+ your-artifact@x.x.x