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

时间:2018-10-30 11:33:02

标签: f# continuous-integration f#-fake paket

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

简短的描述是我希望构建服务器针对引用的程序包构建一整套相关服务,但是该程序包具有不同的风格(但共享相同的基本名称空间/模块名称)。

详细说明; 我有一个服务家族,位于外部 API。 即 它们都引用了一些外部程序包并通过模块等进行访问。

例如

ServiceA.fsprj

...

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

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

ServiceB.fsprj

...

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

ExternalApiVanilla可以说,开发人员可能会以最常见的口味进行开发。 开发人员将使用Paket,Fake作为构建工具以及Jenkins。

签入代码后,虽然我希望构建服务尝试针对香草味...也针对巧克力,草莓和香蕉进行构建。

从版本号的意义上讲,这些风味不是“版本”,它们是具有自己的nuget包的独特产品。因此,我认为(以某种方式)我想将一个包含所有作业的jenkins文件夹与api包的名称一起参数化,将其传递到构建脚本中,然后获取该构建脚本以交换工程师引用的所有内容并引用该参数

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


顺便说一句,我们正在使用C#和cake / nuget做一些事情,但是通过传递nuget文件夹并强制构建以查找1种口味的特定版本来控制版本控制。能够编写它,但是我想更进一步,将引用本身替换为另一引用。

————————

我将尝试查看构建脚本中的paket.dependencies / paket引用文件,删除现有的引用,并从shell和paket中添加jenkins定义的内容,然后再看看发生了什么,不要特别喜欢它,我依赖这些文件的格式,我希望这将成为主流

1 个答案:

答案 0 :(得分:0)

我已经解决了这一问题,至少在cake + nuget的情况下(将应用相同的解决方案),只需在工作中设置参考参数,简单地搜索替换蛋糕脚本中的包引用(使用XDocument)即可(使用XDocument)参数。

我现在将在此版本的伪造版本中实现它,尽管我可能会简单地删除所有内容 在一起。