我在搞乱一些 FAKE 和 Paket(在 F# 上)和 Jenkins,我不太确定我知道我在做什么,但我知道我想做什么。
简短的描述是我希望构建服务器针对引用的包构建整个系列的相关服务,但包有不同的风格(但共享相同的基本命名空间/模块名称)。
长描述;我有一系列位于外部 API 之上的服务。即它们都引用了一些外部包并通过模块等访问它。
例如
ServiceA.fsprj
...
let f (x : ExternalApi.Foo) = ....
---------------
ServiceB.fsprj
...
let g (x : ExternalApi.Foo) = ....
开发人员可能会针对最常见的风格进行开发,比如说 ExternalApiVanilla。开发人员将使用 Paket 和 Fake 作为构建工具,以及 Jenkins。
当代码被签入时,虽然我希望构建服务尝试构建它来对抗香草味……但也对抗巧克力、草莓和香蕉。
口味不是版本号意义上的“版本”,它们是不同的产品,具有自己的 nuget 包。所以我想(不知何故)我想用 api 包的名称参数化一个包含所有作业的 jenkins 文件夹,将其传递到构建脚本中,然后让构建脚本换出工程师引用的任何内容并引用参数.
当然有些编译会失败,我们必须开发不同的服务变体来处理 API 的一些变体,但是我们 90% 的东西适用于所有版本,我们只需要一种自动化的方式来检查构建然后创建新的变体服务和工作,来处理它们。
顺便说一句,我们正在用 C# 和 cake/nuget 做一些事情,但是通过传递 nuget 文件夹并强制构建找到 1 种风味的特定版本来控制版本控制......我理解这一点,虽然我不能写它,但我想更进一步,用不同的替换引用本身。
——————-
我将尝试查看构建脚本中的 paket.dependencies/paket 引用文件,删除现有引用,并从 shell 和 paket 添加 jenkins 定义的文件,然后 aee 会发生什么,不特别喜欢它,我依赖于格式这些文件,我希望这将是主流