Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
如何管理Perl应用程序的开发、构建和部署?_Perl - Fatal编程技术网

如何管理Perl应用程序的开发、构建和部署?

如何管理Perl应用程序的开发、构建和部署?,perl,Perl,我还没有找到一种令人满意的方法来管理Perl应用程序的开发、构建和部署。我想听听您是如何解决这个问题的,以及/或者您希望在一个您现在还没有的应用程序构建系统中拥有什么 请描述您的应用程序类型(它是Web应用程序,它是在服务器上运行的,还是使用PAR或PerlApp绑定它,以便您可以在无系统上运行)。 构建系统应提供的关键内容: 控制图书馆。 应该可以将库分发签出到我的dev目录中,以便在我的构建中使用它 使用将使用适当目录的@INC值执行perl应该很容易 应该可以获得从系统perl安装中获

我还没有找到一种令人满意的方法来管理Perl应用程序的开发、构建和部署。我想听听您是如何解决这个问题的,以及/或者您希望在一个您现在还没有的应用程序构建系统中拥有什么

请描述您的应用程序类型(它是Web应用程序,它是在服务器上运行的,还是使用PAR或PerlApp绑定它,以便您可以在无系统上运行)。 构建系统应提供的关键内容:

  • 控制图书馆。
    • 应该可以将库分发签出到我的dev目录中,以便在我的构建中使用它
    • 使用将使用适当目录的
      @INC
      值执行perl应该很容易
    • 应该可以获得从系统perl安装中获得的模块列表
  • 生成文件/构建集成
    • 只需发出一个
      maketest
      或类似命令,就可以轻松地在整个应用程序中执行全局测试
  • 版本控制友好
    • 结构不应干扰CVS、SVN和其他版本的正常使用 控制系统
  • 跨平台
    • 系统应至少在Win32和Unix派生系统上运行
    • 理想情况下,在perl运行的所有地方,工具的功能应该相同
  • 单个Perl安装
    • 作为环境设置的一部分,不必将perl安装到特殊目录中
  • 轻松启动
    • 启动应用程序应该是一个自动化的过程。应该可以使用类似Module::Starter或h2xs的内容来布局基本结构和创建任何标准文件

交叉发布在。

我在一个非常小的网站应用程序上工作,我们正在改进我们的部署(从“花一天的时间在Windows上设置我们需要的所有模块,然后向它抛出文件,直到一切正常”,这是一些改进)

我们需要做三件事来建立我们的网站:

  • 使用
    module::Starter
    制作的Perl模块,包含一个
    Config
    模块,该模块包含站点范围的配置选项。安装时,此模块(使用
    MakeMaker
    PREREQ\u PM
    检查我们需要的所有模块是否已安装)。安装此模块之前不需要安装的任何模块
  • 设置数据库需要执行的几个SQL文件
  • 构成网站的Perl CGI文件。只要Apache指向他们,网站就“正常工作”。这包括所有Perl文件使用的公共代码模块
  • 部署包括从每个人的Git分支中提取并打包一个版本。然后,我们可以将其交给本地或AmazonEC2实例进行测试。一旦我们准备好发布,我们要么在上一个版本上安装它,要么将数据库移到测试实例上,并使其成为新实例

    将此与您的标准进行比较:

  • 图书馆的控制:有些。我们非常广泛地使用CPAN模块。为了尝试新版本,我们先升级自己的模块版本,然后再在生产服务器上进行升级。我们手动维护一个列表,但由于我们的代码库相当小,因此不难确定正在使用哪些模块(例如,通过
    grep
    ing查找以
    use
    开头的行)
  • Makefile/构建集成:是。任何与Makefile相关的东西都是由我们的EU::MM设置完成的。我们没有全局测试,但由于我们的整个测试套件最近都放在一个文件夹中,希望我们很快就能有一些东西可以直接运行
    prove
  • 版本控制友好:是。我们的整个源代码都包含在一个文件夹中,没有太多的重复
  • 跨站台:是的。MakeMaker中出现了很多奇怪的东西,让我们能够做到这一点,但作为一家初创公司,跨平台代码为我们提供了宝贵的灵活性。我们尽量使用Perl的核心模块和工具,以及来自CPAN的纯Perl模块
  • 单个Perl安装:是。我们可以在任何地方处理Perl,并且可以在任何设置下安装Perl,只要Perl自己的所有模块工具都能正常工作—在让
    CPAN
    EU::MM
    和其他工具在所有系统中都能正常工作方面付出了大量努力,浪费它似乎是一种耻辱
  • 轻松启动:不是真的。这个系统是从一个包含所有源文件的文件夹和一个包含需要安装的模块列表的文本文件演变而来的(即:不是智能设计的)。虽然对已安装模块进行形式化测试是一项巨大的改进,但我们仍然需要大约一天的时间来设置它,主要用于安装我们的必备模块(并非所有模块都易于在Windows上安装)。我希望用它来解决有问题的CPAN模块的问题

  • 请注意,这是一个非常简单的网站,没有XS,复杂的web框架,或者任何类似的东西。我们也只在大约两个版本中支持此设置,因此我们没有足够的经验来了解如何使用此设置,因为代码越来越复杂,部署平台也越来越多样化。我非常感谢您对我们的系统提出任何建议或意见。

    关于这一点,我可以写很多东西

  • 库的控制——我用我想要的模块创建自己的CPAN版本。最新版本的具有多个功能,例如用于加载一次性配置的
    -j
    选项有助于实现这一点。一旦有了它,您就可以将它分发到一个拇指驱动器或CD上,其中包含所有模块、CPAN.pm配置以及您需要的所有其他内容