首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何减少类似构建配置的重复?

如何减少类似构建配置的重复?
EN

Stack Overflow用户
提问于 2013-07-09 20:52:00
回答 2查看 4.9K关注 0票数 10

我希望在不同的构建配置中有几个项目,配置略有不同:

  • VCS源和构建触发器(即唯一的区别是要使用项目根dir的哪个子目录)
  • 构建步骤(前几个步骤完全相同,但最后几个步骤可能会因单元测试的运行方式、依赖关系等而有所不同)。

就这样。我研究了构建配置模板,但似乎不允许灵活地指定定制构建步骤额外的VCS根。

实际上,我只是希望不必手动将(几个)构建步骤从初始项目的构建配置复制到多个配置中,并且在事情发生变化时必须对它们进行维护。看来应该有更好的解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-11 00:51:54

我也想知道这一点,但我在网上发现的一些信息表明,您倾向于冗余,而不是尝试在多个分支或项目中重用一个配置。

然而,所有这些都是在版本8发布之前,该版本引入了提取元流道的能力。

他们的博客由2013年4月13日起很好地总结了它们是什么以及它们与模板的区别。

元流道 Meta是一个强大的特性,为定制TeamCity并使其更多地面向人提供了一种很有希望的新方法。为了理解它,让我们考虑一个例子。 假设您在不同的构建配置中反复使用了一些重复的任务。任务被定义为基于内置运行程序的一个或多个构建步骤,比如Ant或命令行。您很可能希望在多个构建配置中轻松地重用此任务。模板不能这样做,因为模板强制您在不同配置之间共享相同的设置,但这并不总是可能的。我们提出的一个解决方案是从这些步骤中提取元运行程序,看看它是如何在发布说明中工作的。

我还没有实现这一点,但我将很快测试出来。这让我认为您应该能够将存储库作为参数传递,但我不确定。

票数 3
EN

Stack Overflow用户

发布于 2020-05-09 05:22:38

我已经为此挣扎了一段时间,并开发了一个工具来管理它,我称之为独裁者建设者

很长一段时间以来,我们一直在使用“模板”-projects。基本上,它是一个存储库,它有一个完全工作的应用程序,可以完成所有所需的构建配置。就像反应样板一样。我们有几个模板项目,每个类型的应用程序开发一个。

这方面的问题是将复制的代码与模板项目同步。

现在,我已经将模板代码打包在一个“独裁者”中。像这样:https://github.com/tomasbjerre/dictator-react-boilerplate/tree/master/dictatables/static-files/react-boilerplate

独裁者要求将一些静态文件复制到指定文件夹的根目录。

代码语言:javascript
复制
{
  "message": "Copy react-boilerplate",
  "actions": [
    {
      "copyFrom": "react-boilerplate",
      "target": "."
    }
  ]
}

独裁者可以像npx dictator-react-boilerplate@version一样从命令行运行。它将指定当前的工作目录,通常是应用程序中的代码库。它可以由.dictatorconfig.json文件中的代码库进行配置。也许选择不听命于某些部分:

代码语言:javascript
复制
{
  "ignore": [
    "/app",
    "/package.json",
    "/package-lock.json",
    "/Changelod.md"
  ]
}

因此,模板中的大多数构建配置都被复制到指定的代码库中。app文件夹和其他东西仍然由代码库管理。

克隆后,该文件夹如下所示:

代码语言:javascript
复制
app
coverage
.dictatorconfig.json
docs
.gitignore
internals
LICENSE.md
node_modules
package.json
README.md
server

npm install之后,或者在npx dictator-react-boilerplate@version之后,看起来是这样的:

代码语言:javascript
复制
.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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17557985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档