持续集成 + "deployment" 个 npm 模块?
Continuous integration + "deployment" of npm modules?
场景:
我正在持续集成 + 部署 一个 Node web 应用程序在每次提交到 master 时,例如通过 Travis 到 Heroku。
(两个选项:Travis's deploy hook, or Heroku's GitHub Sync。重要的是,如果 CI 成功/测试通过 ,这两种方式都只部署 。)
我想将此应用程序的一些部分维护为单独的、可重复使用的模块,例如在他们自己的 git 回购协议中。
为简单起见,我们假设一切都是public。
—
我想在每次提交给他们的 master(或w/e分支):
每次更新我的网络应用程序时,我都想使用最新的稳定(即测试)版本这些模块。
重要的是,如果我不小心将错误提交到模块,并且 CI 失败了,对网络应用程序的更新应该 不接受这个变化。
我不想在每次提交时手动修改版本、发布标签等。
—
我研究了多种选择,但找不到实现所有这三个目标的任何简单方法!
npm git dependency: 我可以将我的网络应用程序的 package.json
直接指向每个模块的 GitHub 存储库(例如 "foo": "git://github.com/alice/foo.git#1.x"
) 以获得该模块回购的连续 "deployment"(可用性)。但是,如果我不小心犯了一个错误,即使模块的 CI 失败,应用程序在下一次部署时也会被破坏。
Travis npm publish: Travis可以在成功后自动发布模块到npm CI,但是npm registry需要唯一每次都更新版本,并且无法自动提升版本 AFAICT。
Travis GitHub release: 我希望 Travis 可以自动更新标签,但它只能在 标签(更多用于发布构建资产),所以仍然是手动的。
—
有什么办法吗?谢谢!
想到的一个选项是在 Travis 上更新分支(例如命名为 stable
或 tested
或 w/e),尽管它需要手动实施after_success
(有点像手动部署挂钩)。
然后,您可以自由地提交到 master,但是这个其他分支将只包含通过 CI 的提交。这将允许您将 npm 指向该分支,例如foo.git#stable
。如果您通过非强制更新 git push
,您可以保证该分支仅包含 ffwd 提交。
您需要使 GitHub 用户信用可用于脚本,例如通过安全环境变量,但它们可以与 Travis 本身使用的相同。我不确定是否还会有其他问题。例如。我假设 git 可用于 Travis 脚本。
场景:
我正在持续集成 + 部署 一个 Node web 应用程序在每次提交到 master 时,例如通过 Travis 到 Heroku。
(两个选项:Travis's deploy hook, or Heroku's GitHub Sync。重要的是,如果 CI 成功/测试通过 ,这两种方式都只部署 。)
我想将此应用程序的一些部分维护为单独的、可重复使用的模块,例如在他们自己的 git 回购协议中。
为简单起见,我们假设一切都是public。
—
我想在每次提交给他们的 master(或w/e分支):
每次更新我的网络应用程序时,我都想使用最新的稳定(即测试)版本这些模块。
重要的是,如果我不小心将错误提交到模块,并且 CI 失败了,对网络应用程序的更新应该 不接受这个变化。
我不想在每次提交时手动修改版本、发布标签等。
—
我研究了多种选择,但找不到实现所有这三个目标的任何简单方法!
npm git dependency: 我可以将我的网络应用程序的
package.json
直接指向每个模块的 GitHub 存储库(例如"foo": "git://github.com/alice/foo.git#1.x"
) 以获得该模块回购的连续 "deployment"(可用性)。但是,如果我不小心犯了一个错误,即使模块的 CI 失败,应用程序在下一次部署时也会被破坏。Travis npm publish: Travis可以在成功后自动发布模块到npm CI,但是npm registry需要唯一每次都更新版本,并且无法自动提升版本 AFAICT。
Travis GitHub release: 我希望 Travis 可以自动更新标签,但它只能在 标签(更多用于发布构建资产),所以仍然是手动的。
—
有什么办法吗?谢谢!
想到的一个选项是在 Travis 上更新分支(例如命名为 stable
或 tested
或 w/e),尽管它需要手动实施after_success
(有点像手动部署挂钩)。
然后,您可以自由地提交到 master,但是这个其他分支将只包含通过 CI 的提交。这将允许您将 npm 指向该分支,例如foo.git#stable
。如果您通过非强制更新 git push
,您可以保证该分支仅包含 ffwd 提交。
您需要使 GitHub 用户信用可用于脚本,例如通过安全环境变量,但它们可以与 Travis 本身使用的相同。我不确定是否还会有其他问题。例如。我假设 git 可用于 Travis 脚本。