Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 构建环境设置——使用.net、java、hudson和ruby——真的需要一点批评_C#_Ruby_Hudson_Rake_Build Environment - Fatal编程技术网

C# 构建环境设置——使用.net、java、hudson和ruby——真的需要一点批评

C# 构建环境设置——使用.net、java、hudson和ruby——真的需要一点批评,c#,ruby,hudson,rake,build-environment,C#,Ruby,Hudson,Rake,Build Environment,我正试图找出最好的方法,为以下环境缝合一个快速、可重复、不可破坏的构建过程。我有一个如何做的计划,但我真的很感谢你的批评。(我也希望有一些示例代码,但稍后会有更多) 生态系统-逻辑: 网站-asp.NETMVC2.NET3.5,VisualStudio2010。IIS 6,Facebook iframe应用程序 应用此网站/facebook应用程序使用一些服务。内部搜索api、内部读/写api、facebook和IP地理定位服务。有关这些方面的更多详细信息,请参见下文 内部搜索api-.net,

我正试图找出最好的方法,为以下环境缝合一个快速、可重复、不可破坏的构建过程。我有一个如何做的计划,但我真的很感谢你的批评。(我也希望有一些示例代码,但稍后会有更多)

生态系统-逻辑:
  • 网站-asp.NETMVC2.NET3.5,VisualStudio2010。IIS 6,Facebook iframe应用程序 应用此网站/facebook应用程序使用一些服务。内部搜索api、内部读/写api、facebook和IP地理定位服务。有关这些方面的更多详细信息,请参见下文
  • 内部搜索api-.net,restful,使用老式的.ashx处理程序构建。api在后台使用lucene和sql server数据库。我的项目不会涉及lucene代码,但可能涉及数据库和web服务
  • 内部读/写api-java,restful,在Tomcat上运行
  • Facebook网络服务
  • 模拟内部读/写api和部分facebook api的模拟站点
  • Hudson-在签入时运行单元测试,并创建一些行为不一致的安装程序 生态系统-物理: 除了哈得逊,所有这些机器都可以相互通话。哈德逊看不到任何目标机器。所以代码必须是拉式的,而不是推式的。(保安事务) 1.Web服务器-保存网站和读/写api。(api本身写入复制的sql server环境)。
    2.搜索服务器-包含搜索api。
    3.Hudson服务器-无权推送到任何环境。他们必须拉。 4.Lucene服务器 5.数据库服务器

    问题 我一直在尝试将此站点设置为在压力环境下运行,但是设置步骤的数量、更新组件所需的时间、当前安装程序的黑盒特性,以及将数据生成到测试系统所需的时间都绝对破坏了我的生产效率。我调整了一个设置,必须重新部署,按特定顺序重新启动,重新设置一些设置,并重建测试数据。错误导致磁头断裂,然后基本上重新开始。非常糟糕

    我的压力测试使这个问题更加复杂。我需要能够打开和关闭不同的外部组件,以便能够有效地确定每一部分的可伸缩性。我已经为每个依赖项制定了相应的策略,但是这使我的设置策略更加复杂,因为现在每个组件都有2个选项。模拟版本或真实版本。任何地方的配置都必须相应地更新

    目标
  • 快速-当一切顺利时,我想从20分钟的练习改为3分钟的
  • 愚蠢简单-我想告诉环境用尽可能少的命令做什么,而不必记住如何将环境缝合在一起
  • 可重复-我希望脚本是幂等的。这是愚蠢的简单事情的必然结果
  • 到目前为止的计划 以下是我到目前为止的想法,以及我来这里寻求的反馈:

  • 使用VisualStudio新的web.config转换,可以轻松地基于环境更改配置。不过,这个解决方案还不够。我会将web.config设置为让站点在本地运行,但在其他地方部署时,仅在压力环境中,我就有多达6种不同的可能输出(因为各种依赖项的模拟),更不用说prod、QA和dev的设置了。然后,每种设置都需要自己的设置,或随后对配置进行后期处理的设置。因此,我目前倾向于使用dev版本,以及将关键配置值转换为ruby字符串插值语法的版本。({VAR#u NAME}有点像)
  • 为每台服务器创建一个基本上是引导脚本的ruby脚本。也就是说,它只会加载从hudson/subversion执行“真正”工作的ruby代码,这样脚本的功能就可以随着应用程序的发展而发展,通过引用适当版本的脚本,在任何时间点都可以轻松构建站点。简而言之,这个脚本加载另一个脚本并运行它
  • “真实的”ruby脚本随后将接受描述环境外观的命令行参数。从那里可以使用1个配置文件,ruby将下载当前安装程序,运行它们,对配置进行后期处理,重新启动IIS/Tomcat,并启动所需的任何数据设置代码
  • 就这样。我正处于一个实时的关键时刻来测试这个网站的压力,所以任何你认为可以缩短时间的反馈都将不胜感激。这包括对ruby示例代码的无耻请求。我只说了一句“你好,世界”。-)公正的指导会有所帮助。这是Rake有用的东西吗?你建议我如何为这种动物写测试?(我使用接口和自动模拟框架模拟.net中的http请求。使用ducktyping,这似乎更容易,但我不知道如何告诉我的代码在测试中使用假duck,但在实践中使用真实的duck)


    谢谢大家。很抱歉提出了这么一个冗长、开放式的问题。

    我推荐两件事:

  • 将配置集中在一个复制的、容错的存储库中,例如,等等。您可以将引导各种环境所需的所有信息放在此系统中,这样,单个组件所需的唯一配置就是该存储库的位置。这将显著提高环境的可伸缩性

  • 使用类似的方法进行部署和服务器管理。它将确保您的所有机器在任何给定的时间都处于正确的状态,并允许轻松操作