Deployment 使用mercurial和netbeans进行简单的单一开发人员部署?

Deployment 使用mercurial和netbeans进行简单的单一开发人员部署?,deployment,netbeans,mercurial,workflow,Deployment,Netbeans,Mercurial,Workflow,我正在使用Codeigniter PHP框架编写一个网站 我正在使用mercurial进行版本控制 我有3个工作系统。我在Windows7机器上使用Netbeans 6.9.1进行编码。我偶尔会提交,并将其推送到Bitbucket.org上的存储库,纯粹是为了备份和版本控制 我有一个“beta”网站(在一个共享的Linux盒子上,有自己的专用IP地址),我可以使用FTP上传到这个网站,在那里我可以测试在一个运行Linux的实际网站上一切都正常工作 一旦我对此感到满意,我就会上传到我的“实时”网站

我正在使用Codeigniter PHP框架编写一个网站

我正在使用mercurial进行版本控制

我有3个工作系统。我在Windows7机器上使用Netbeans 6.9.1进行编码。我偶尔会提交,并将其推送到Bitbucket.org上的存储库,纯粹是为了备份和版本控制

我有一个“beta”网站(在一个共享的Linux盒子上,有自己的专用IP地址),我可以使用FTP上传到这个网站,在那里我可以测试在一个运行Linux的实际网站上一切都正常工作

一旦我对此感到满意,我就会上传到我的“实时”网站,该网站位于它自己的专用服务器上。同样,我只是使用FTP从我的开发服务器上传文件

我意识到这完全是错误的。首先,我必须在beta版和live版机器上修改一些内容,以便它们引用的是正确的域名,而不是localhost。另一方面,我根本没有利用mercurial来帮助解决这个问题。我假设我可以使用mercurial来“抓取”我标记为准备部署的特定修订版,而不是从FTP上传。我还认为我可能会在Netbeans中做一些不同的事情,以使过程更简单

我想做的是有一些非常平滑的方法来控制所有这些,并且希望能够知道如何处理测试版和实时站点的配置设置与本地主机略有不同的问题

有没有一个标准的方法来做我想做的事情?我看过一些第三方应用程序的“持续集成”,但我不确定我是否需要类似的东西


我有点不知所措,不知道我该做什么最简单的事情来让我的生活更轻松……非常感谢任何帮助:)谢谢

这取决于每个站点的设置有多不同,以及是否涉及在公共场所看不到的秘密(我假设您使用的是公共bitbucket存储库)

如果更改不敏感,则可以为测试和生产服务器添加两个额外的分支,其中仅应用配置更改。每次更改默认设置并将其部署到测试时,只需将默认设置合并到测试之上,然后mercurial在过程中填充不同的配置设置。然后服务器部署将是在正确的分支中调用
hg archive

典型的更改历史如下所示:

O----o-o-o-o-o-o-o-o---o      default
 \          \           \
  T1--------T2-----------T3   test
   \                      \
    P1---------------------P2 production
其中T1和P1中填写了试验和生产参数。您还可以使用此分支设置来成熟站点的开发,在默认情况下进行黑客攻击,并且只将稳定的更改传播到测试和生产中

如果更改是敏感的,您可以创建一个非版本化部署脚本(或者更好的是一个版本化部署脚本和一个非版本化配置文件),该脚本将修补
hg archive
的输出

无论如何,您都应该使用部署脚本,该脚本处理产品的打包,并以自动化和标准化的方式部署目标。在此脚本中,您还可以将有关源版本的信息嵌入到最终存档中

请注意,此模型适用于不在服务器上进行任何更改的环境。如果在服务器上对产品进行更改,则需要将文件从服务器复制回开发环境(以正确的版本),以检查服务器上的更改内容。当您还想在服务器上进行更改时,您可能还想在那里安装mercurial