我的问题是,如何以良好的方式对生产环境进行版本控制?
这是我们当前的环境:
当我们发布用于验收测试的新功能时,我们会在 Visual Studio 中发布,压缩更改并将它们应用到测试服务器上。我们在那里制作了一个备份文件夹(以便我们可以恢复更改),我们制作了一个发布文件夹,以便我们可以在这些更改获得批准后将其移至暂存。
创建备份文件夹、发布文件夹、重新创建目录结构并尝试跟踪哪些功能进入哪个版本需要大量的体力劳动。这很乏味,而且总是有一些开发人员不遵循发布程序的问题。
理论上我可以为测试环境创建一个存储库。 (忘记源代码,这是关于已发布的应用程序)在每次发布时,开发人员都会提交并提供有关他发布的功能的评论。
当功能应该从测试转移到暂存时,我们会导出自上次暂存环境更新以来所做的更改,并将它们复制到暂存应用程序中。我们在那里做了一个提交,稍后可以将其提取以发布到生产环境。
这样做的缺点是使用 subversion 会使那些 .svn 目录使应用程序变得困惑。这可以通过禁止访问 IIS 或 web.config 中的那些目录来解决。另一种解决方案是在应用程序根目录上方的目录中使用 Git。但是对于 Windows 环境中没有经验的开发人员来说,Git 更难使用。
有没有人遇到过这个问题?您如何对生产环境进行版本控制?如果您需要还原版本怎么办,您是否有在版本发布之前创建的备份文件夹?
我已经与我们的开发人员讨论过这个问题,他们认为使用 Subversion 进行版本控制和测试/暂存/生产环境的备份没有任何问题。恰恰相反,他们会很高兴不在每次需要发布新功能时都创建发布/备份文件夹。
与此同时也存在一些不安全感。之前没有人听说过这个,将应用程序放在版本控制系统中,我们不确定会有什么缺点。
如果您有过这样的场景,我很乐意听到。
迈克尔伦丁
最佳答案
另一种方法是使用构建服务器。每次 checkin 代码时,构建服务器都会在开发环境中构建和打包新构建。然后使用您的代码 checkin 可部署包。
然后您可以将打包的构建部署到其他环境。这样您就不必在那里备份版本,因为您已经在主存储库中拥有所有构建的版本。如果您确保部署是完全自动化的并且可以通过一个命令(powershell?)完成,则无需再在服务器上保留备份。
这实际上比您提出的解决方案更好,更易于维护。因为构建的每个版本都与代码一起保存,所以您总能找到适用于任何构建包的完整开发环境。如果您单独对服务器进行版本控制,并且在某处发现错误,则很难找到导致该错误的代码版本。
关于.net - 版本控制的生产环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/264615/
作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
如果我使用ruby版本2.5.1和Rails版本2.3.18会怎样?我有基于rails2.3.18和ruby1.9.2p320构建的rails应用程序,我只想升级ruby的版本,而不是rails,这可能吗?我必须面对哪些挑战? 最佳答案 GitHub维护apublicfork它有针对旧Rails版本的分支,有各种变化,它们一直在运行。有一段时间,他们在较新的Ruby版本上运行较旧的Rails版本,而不是最初支持的版本,因此您可能会发现一些关于需要向后移植的有用提示。不过,他们现在已经有几年没有使用2.3了,所以充其量只能让更
我安装了ruby版本管理器,并将RVM安装的ruby实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby。有没有办法让emacs像shell一样尊重ruby的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el