我有几个项目,我希望在单独的构建配置中使用略微不同的配置:
就是这样。我查看了构建配置模板,但似乎不允许灵活地指定自定义构建步骤或额外的VCS根目录。
实际上,我只是希望不必手动将初始项目的构建配置中的(几个)构建步骤复制到多个配置中,并且在事情发生变化时必须将它们全部维护。似乎应该有更好的解决方案?
答案 0 :(得分:3)
我也想知道这一点,但我在网上找到的内容表明你赞成冗余,而不是试图在你的多个分支或项目中重用一个配置。
然而,所有这些都发布在版本8之前,这引入了提取meta-runner
的能力他们的博客from April 13, 2013提供了很好的摘要,说明它们是什么以及它们与模板的区别。
元流道
Meta Runner是一个强大的功能,为定制TeamCity提供了一种很有前途的新方法,使其更加以人为本。为了理解它,让我们考虑一个例子。想象一下,您在不同的构建配置中反复使用了一些重复的任务。该任务被定义为一个或多个构建步骤,基于内置的运行程序,如Ant或命令行。您很可能希望在多个构建配置中轻松地重复使用此任务。您无法使用模板执行此操作,因为模板会强制您在不同配置之间共享相同的设置,这并非总是可行。我们建议的解决方案是从这些步骤中提取Meta-runner,看看它在发行说明中是如何工作的。
我还没有实现这个,但我很快就会测试它。这让我觉得你应该能够将存储库作为参数传递,但我不确定。
答案 1 :(得分:0)
我已经为此苦苦挣扎了一段时间,并开发了一种管理它的工具,我称之为Dictator Builder。
很长时间以来,我们一直在与“模板”项目合作。基本上,它是一个具有可正常运行的应用程序的存储库,其中包含所需的所有构建配置。就像react-boilerplate一样。我们有几个模板项目,针对我们开发的每种类型的应用程序。
此问题使复制的代码与模板项目保持同步。
我现在将模板代码打包在一个“独裁者”中。像这样: https://github.com/tomasbjerre/dictator-react-boilerplate/tree/master/dictatables/static-files/react-boilerplate
独裁者决定将某些静态文件复制到指定文件夹的根目录。
{
"message": "Copy react-boilerplate",
"actions": [
{
"copyFrom": "react-boilerplate",
"target": "."
}
]
}
独裁者可以像npx dictator-react-boilerplate@version
这样的命令行运行。它将决定当前的工作目录,通常是应用程序中的代码库。可以通过代码库在.dictatorconfig.json文件中进行配置。也许选择不由某些部分决定:
{
"ignore": [
"/app",
"/package.json",
"/package-lock.json",
"/Changelod.md"
]
}
因此,模板中的大多数构建配置都只是复制到指定的代码库中。并且app
文件夹和其他内容仍由代码库管理。
克隆后,该文件夹如下所示:
app
coverage
.dictatorconfig.json
docs
.gitignore
internals
LICENSE.md
node_modules
package.json
README.md
server
在npm install
之后或npx dictator-react-boilerplate@version
之后,它看起来像:
.all-contributorsrc
app
appveyor.yml
babel.config.js
Changelog.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
coverage
.dictatorconfig.json
docs
.editorconfig
.eslintrc.js
.gitattributes
.gitignore
internals
jest.config.js
LICENSE.md
node_modules
.nvmrc
package.json
package-lock.json
.prettierignore
.prettierrc
README.md
server
.stylelintrc
.travis.yml