我们正在考虑将我们的构建机从FinalBuilder迁移到Jenkins,以适应我们公司的其他部门。
我发现一个问题是:Finalbuilder能够从构建机上当前的Delphi安装中提取当前库路径,而Jenkins则依赖于.dproj文件中包含的信息。
由于已知.dproj文件中的路径非常特定于用户的计算机,因此我们目前不会将它们提交到我们的代码库中,并依靠Delphi根据需要重新创建它们。当构建机首先依赖于完整的MSBUILD脚本时,这显然不太好。
我们使用了很多第三方组件(仅DevExpress套件就有100多个单元),因此在.dpr中包括和维护所有.pas文件的全路径不是一个真正的选项。
是否有人有经过验证的解决方案?
我的想法是:
我发现一个问题是:Finalbuilder能够从构建机上当前的Delphi安装中提取当前库路径,而Jenkins则依赖于.dproj文件中包含的信息。
由于已知.dproj文件中的路径非常特定于用户的计算机,因此我们目前不会将它们提交到我们的代码库中,并依靠Delphi根据需要重新创建它们。当构建机首先依赖于完整的MSBUILD脚本时,这显然不太好。
我们使用了很多第三方组件(仅DevExpress套件就有100多个单元),因此在.dpr中包括和维护所有.pas文件的全路径不是一个真正的选项。
是否有人有经过验证的解决方案?
我的想法是:
- 为每个构建设置%PATH% - 添加当前Delphi库到相关版本(这会遇到%PATH%长度限制吗?)
- 使用命令行参数将正确的库路径传递给MSBUILD(是否可能?)
- 以某种方式在源文件中使用编译器指令包含搜索路径(是否可能?)
- 使用预编译步骤创建新的.dproj文件(类似于http://delphi-divining.blogspot.co.uk/2012/10/dprojmaker-tool-to-create-delphi.html但需要是命令行)
编辑:第5个想法:
- 我们可以为每个项目使用单独存储在另一个存储库(或另一个路径)中并在构建前复制到构建机器的dproj.local文件吗?这将允许构建机器路径安全地存储,远离笨拙的提交。