如何管理你的Perl应用程序的开发,构建和部署?
我还没有想出一个令人满意的方式来管理我的Perl应用程序的开发,构建和部署。 我想听听你是如何解决这个问题和/或你想在现在没有的应用程序构建系统中拥有的。
请描述您的应用程序类型(是Web应用程序,它是否在服务器上运行,还是使用PAR或PerlApp进行捆绑,以便可以在perlless系统上运行)。
构建系统应该提供的关键内容是:
@INC
值执行perl应该很容易,该值将使用适当的目录。 make test
或类似的命令。 在Perlmonks上交叉发布。
有很多我可以写这个
控制库 - 我只用我想要的模块创建我自己的CPAN版本。 最新版本的App :: Cpan具有多种功能,例如加载一次性配置的-j
选项,以帮助完成此操作。 一旦你有了这个,你可以将它分发到一个带有所有模块,CPAN.pm配置和你需要的其他东西的拇指驱动器或CD上。 通过一些编程,您可以创建一个run_me
脚本,使其发生。
Makefile / Build集成 - 我没有集成Makefiles。 这是通向灾难的道路。 相反,我会使用顶级应用程序模块进行集成测试,该模块会自动测试其所有依赖项。 -t
切换到cpan命令对于在当前工作目录中测试模块很有用:
cpan -t。
有各种各样的集成测试框架,您也可以使用。 您将PERL5LIB设置为空(仅在硬编码的@INC目录中包含核心模块),因此cpan
必须从头开始安装所有内容。
版本控制友好 - 它使用什么并不重要。 大多数东西都有某种导出方式,你可以在没有源代码控制的情况下获得所有东西。 Git非常好,因为它在正常情况下只有最小的污染。
跨平台 - 我提到的所有东西在Windows和Unix上都能很好地工作。
单一的Perl安装 - 这一部分更加棘手,我认为你会走错方向。 任何时候多个东西都必须依赖于相同的perl,有人会为其他人解决它。 我绝对建议不要使用系统Perl进行应用程序开发,所以你不要搞乱系统的运行。 至少,每个应用程序都应该将所有非核心模块安装到自己的目录中,这样它们就不会与其他应用程序竞争。
轻松启动 - 这只是一个简单的编程问题。
奖金:我不使用Module :: Starter。 这是一种错误的方式,因为你必须依赖Module :: Starter认为你应该做的事情。 我使用Distribution :: Cooker,它只需要一个Template Toolkit模板的目录并对它们进行处理以将它们分配给您的分发目录。 你可以做任何你喜欢的事情。 你如何得到最初的模板取决于你。
我在一个非常小的网站应用程序上工作,我们正在努力改进我们的部署(将其从“在Windows上设置所有我们需要的模块中花费一天时间,然后将文件扔到它上面直到一切正常”),这样做改善)。
我们有三件事情需要我们设置我们的网站:
Module::Starter
制作的Perl模块,其中包含一个Config
模块,用于存放站点范围的配置选项。 在安装时,这个模块(使用MakeMaker
的PREREQ_PM
来检查我们需要的所有模块是否已经安装)。 在安装此模块之前,不需要安装任何模块。 部署包括我从每个人的Git分支中拉出并打包一个版本。 然后,我们可以将其交给本地或Amazon EC2实例进行测试。 一旦我们可以发布,我们可以将它安装在最后一个版本上,或者将数据库移动到测试实例上并创建新实例。
将此与您的标准进行比较:
use
开始就use
grep
ing)。 prove
直接。 CPAN
, EU::MM
和其他工作在所有系统上的良好运行方面已经付出了很多努力,而且它似乎是一种耻辱浪费它。 请注意,这是一个非常简单的网站,没有XS,复杂的Web框架或其他任何类型的网站。 我们也只通过两个版本来支持这个设置,所以我们没有足够的经验来确定这会如何工作,因为代码变得更加复杂,我们的部署平台变得更加多样化。 我真的很感谢我们的系统上的任何建议或意见。
链接地址: http://www.djcxy.com/p/54575.html上一篇: How do manage your Perl application development, build, and deployment?
下一篇: How can I package my Perl script to run on a machine without Perl?