Paket + FAKE + 在 CI 工具中交换依赖项

Paket + FAKE + swapping dependencies in CI tool

我正在处理一些 FAKE 和 Paket(在 F# 上)和 Jenkins,不太确定我知道我在做什么,但我知道我想做什么。

简短的描述是我希望构建服务器根据引用的包构建一整套相关服务,但包有不同的风格(但共享相同的基本 namespace/module 名称)。

详细说明; 我有一个位于外部服务之上的服务系列 API。 IE。 他们都引用了一些外部包并通过模块等访问它

例如

ServiceA.fsprj

...

let f (x : ExternalApi.Foo) = ....

---------------

ServiceB.fsprj

...

let g (x : ExternalApi.Foo) = ....

开发人员可能会针对最常见的风格进行开发,比方说 ExternalApiVanilla。 开发人员将使用 Paket 和 Fake 作为构建工具,以及 Jenkins。

签入代码时,虽然我希望构建服务尝试针对香草口味构建它...但也针对巧克力、草莓和香蕉。

从版本号的意义上讲,口味不是 "versions",它们是不同的产品,有自己的 nuget 包。所以我想(不知何故)我想用 api 包的名称参数化一个包含所有作业的 jenkins 文件夹,将其传递到构建脚本中,然后获取构建脚本以换出工程师引用的任何内容并引用参数。

当然有些编译会失败,我们必须开发不同的服务变体来处理API的一些变体,但我们90%的东西都适用于所有版本,我们只需要一种自动化的方式检查构建,然后创建新的服务和作业变体,以处理它们。


顺便说一句,我们正在用 C# 和 cake/nuget 做一些事情,但是通过传入 nuget 文件夹并强制构建找到 1 种口味的特定版本来控制版本控制...我理解这个,虽然我不会写它,但我想更进一步,将引用本身替换为另一个引用。

————————-

我将尝试查看 paket。dependencies/paket 在构建脚本中引用文件,删除现有引用,并添加来自 shell 和 paket 的 jenkins 定义的文件,然后 aee 会发生什么,不是特别喜欢它,我依赖于这些文件的格式,我希望这会成为主流

我已经解决了这个问题,至少在 cake + nuget 的上下文中(并且将应用相同的解决方案),只需在 cake 脚本中搜索替换包引用(使用 XDocument),并在作业参数。

我现在将在这个构建的假版本中实现它,尽管我可能会简单地删除 paket all 在一起。