使用Travis CI发布到npm

时间:2016-06-29 17:56:22

标签: node.js npm travis-ci

如何使用Travis CI发布到npm?我尝试了以下.travis.yml:

language: nodejs
node_js:
- '6'
- '6.1'
- '5.11'
before_script:
- npm install -g nodeunit
script: nodeunit
deploy:
  provider: npm
  email: my_email
  api_key: "encrypted"

但是当谈到npm位时,我得到了:

npm ERR! publish Failed PUT 400
npm ERR! Error: Not found : package-name

有什么想法吗?

更新

api_key:
   secure: "..." 

我收到另一个错误:

NPM API key format changed recently. If your deployment fails, check your
API key in ~/.npmrc.
http://docs.travis-ci.com/user/deployment/npm/
~/.npmrc size: 53
env: <this is my unencrypted api key>: No such file or directory

终于解决了。 travis上的npm版本真的很旧(1.4.28)。我所要做的就是放一个:

before_script:
- npm install -g npm@'>=3'

现在它有效!

2 个答案:

答案 0 :(得分:1)

有些事情可能会出错。首先,您检查过pd.concat([df.groupby('knob_1')['signal'].min(), df.groupby('knob_2')['signal'].min()], keys=['knob_1', 'knob_2'], names=['parameter', 'value']) 并确保有package.json财产吗?或者名称是否与现有的npm包冲突?错误消息表明存在问题。

但还有另一个问题。您的API密钥似乎是字符串文字name,除非您只是将其用作此示例的占位符。看起来应该是这样的:

"encrypted"

另请注意provider: npm email: my.email@gmail.com api_key: secure: "Esiel6Dws/vjwNshQ/nmx43+7/lpqsl8Dkd ..." skip_cleanup: true 属性。如果要发布构建的任何工件,则应包括此内容。

加密可以使用Travis CLI完成。请参阅encryptsetup命令。

有关工作示例,请参阅GitHub上.travis.yml项目上的this文件。

最后,请确保您的API密钥正确无误。在您登录到npm的计算机上,检查skip_cleanup文件。

~/.npmrc

然后找到以nano ~/.npmrc 开头的行。确保在//registry.npmjs.org/:_authToken=中将此令牌用作API密钥。只要您在该计算机上登录到npm,该令牌就会有效。

答案 1 :(得分:0)

我看到你已经解决了,但我希望分享我的工作解决方案:

首先,我在these instruction之后生成了一个npm-token。 简单地说,我已经在我的电脑上使用npm login登录npm,然后通过cat ~/.npmrc获取它以获取它。

然后我在travis中添加了一个环境变量:

npm env token

最后我添加到.travis.yml

deploy:
  provider: npm
  email: my-email@provider.com
  api_key: $NPM_TOKEN
  on:
    tags: true

只有在构建成功且任何标记添加到git存储库时才会发布到npm存储库(因此只有在需要时才能发布)。