首页 > 解决方案 > 仅当合并到 master 分支时,如何要求 travis 在 npm 上部署?

问题描述

我们正在 github 上配置一个公共项目。我们希望我们的 travis 工作在每个 PR 上运行测试和构建,并且仅在 master 上接受的 MR 上部署(npm 发布)。

我们已经尝试过这个配置,但它不起作用:

language: node_js
node_js: 
  - 10.16.0
before_script:
  - npm run build

deploy:
  provider: npm
  email: "myemail@example.com"
  api_key:
    secure: "our secure key that is irrelevant for this question"
  after_deploy:
    - ./script/updateNpmVersion.sh
  on:
    branch: master

和 ./script/updateNpmVersion.sh

#!/bin/bash
git pull develop
npm version minor
git add package.json
git commit -m "bump npm version"
git push origin develop

但它不起作用。基本上从不调用 Deploy。

标签: npmtravis-ci

解决方案


我认为存在语法问题。您的after_deploy脚本应在该deploy步骤完成后执行。on此外,您可以尝试在配置密钥时提供应用于部署的特定存储库。

另一件事,您可能需要授予执行updateNpmVersion.sh脚本所需的权限。所以你的最终yml文件应该是这样的

language: node_js

node_js: 
  - 10.16.0

before_script:
  - npm run build
  - chmod +x ./script/updateNpmVersion.sh

deploy:
  provider: npm
  email: "myemail@example.com"
  api_key:
    secure: "our secure key that is irrelevant for this question"
  on:
    repo: OWNER_NAME/REPO_NAME
    branch: master

after_deploy:
    - ./script/updateNpmVersion.sh

推荐阅读