【问题标题】:What is the correct way of releasing nodejs application?发布nodejs应用程序的正确方法是什么?
【发布时间】:2013-10-24 18:16:44
【问题描述】:

发布nodejs web应用的正确方式是什么?

我当前的发布脚本正在执行以下操作:

 Sync(function(){
    var tag = getTag.sync(); //1 - getting the tag to release   
    update.sync(null, tag);  //2 - update current project to choosen tag
    archive.sync();          //3 - archive current released project 
    stop.sync();             //4 - stop server
    del.sync();              //5 - delete currently released project
    copy.sync();             //6 - copy files from scm folder
    packAssets.sync();       //7 - minify javascript. css, less files
    start.sync();            //8 - start the application
 });

更详细的描述 - 发布在同一服务器上的存储库文件夹中运行(数字与 cmets 相同):

  1. 通过建议最后10个并选择数字或写标签名称来获取标签。
  2. 将当前存储库更新为选定的标签。
  3. 归档应用程序文件夹 - 将其复制到具有唯一(数据)名称的归档文件夹中。
  4. 通过调用forever stop pid 停止服务器 - 从现在开始,Nginx 将显示维护模式页面。
  5. 删除当前应用程序文件夹
  6. 将文件从存储库文件夹复制到发布文件夹(跳过 scm 文件夹 - 在我的情况下为 .hg)
  7. 为 JavaScript、CSS 和 Less 文件运行缩小脚本。
  8. 通过调用发布文件夹中的forever start server.js 来启动应用程序。

函数(getTag、update、archive、stop、...)在 Sync 调用之上声明。

对吗?

【问题讨论】:

  • 我不确定哪个是正确的,我的意思是它看起来像一个实时生产服务器,其中的东西不应该改变,它应该比你描述的风险小,保持不变development 暂存更多时间,如果没有损坏,则以 production 模式迁移并继续前进..
  • 是的,这是实时的,我想知道如何正确发布它 - 恐怕这个删除步骤最多。我假设这个标记的版本是稳定的,并且想要发布它。
  • 你考虑过在现场生产服务器中使用 git 吗?它比平面文件更容易和更易于管理,您可以还原、丢弃更改,并且未经许可不会应用任何内容。
  • 你认为 git 在这里比 mercurial 还有什么要说的吗? - 我经常使用 mercurial,并认为它与 git 几乎相同。您是否建议只在存储库文件夹上运行实时应用程序?
  • 不,我是说有一个单独的存储库来存放实时应用程序,以及另一个存储库来开发它,例如。 openshift 云平台允许您将现有存储库克隆到云中,然后从源端拉/推到实时服务器。我认为您在使用 mercurial 方面不会有任何限制,但 git 在云上更可用。

标签: node.js release release-management


【解决方案1】:

请考虑使用以下工具来发布您的 JavaScript 应用程序,它们可能有助于 SemVer 版本控制并使发布过程不易出错:

  • Semantic release - 一个发布系统,可让您在发布新版本软件之前和之后轻松执行操作
  • Bumped - 全自动包发布

【讨论】:

    最近更新 更多