Teamcity - 单个仓库中的多个 Web 项目 - 仅部署其中的一部分
Teamcity - Multiple web project in a single repo - deploy only some of them
我有一个 git 存储库,其中包含一个带有多个 Web 应用程序(public 站点、内部站点、public 服务)的单个 .Net 解决方案和一个共享 class 图书馆项目。我想根据所做的更改部署一些项目。例如,如果我修复了 public 站点中的错误,我只想部署该站点,如果我修复了 public 站点和 api 中的错误,我想同时部署它们,依此类推。我可以通过创建不同的构建配置并使用触发规则和过滤器 Ant_like_wildcard 文件夹路径并部署相应的项目来实现它。
当我仅在共享 class 库中而不是在任何 Web 应用程序中进行更改时的棘手情况。在这种情况下,我有以下选择:
对必须部署的 Web 应用程序进行虚拟更改
包括必须在提交消息中部署的 Web 项目,并使用 VCS_comment_regexp 过滤触发器
解析 git 提交消息,在构建脚本中使用 setParameter 设置参数,并在以下步骤中使用这些参数。
我不喜欢任何选项,因为它们看起来很老套。这种情况还有更好的选择吗?
如果共享 class 库项目被引用为其他三个 webapp 的 submodule,这意味着每个 webapp 都可以选择更新到该共享库项目回购的最新提交。
这会导致父仓库的 gitlink (the special entry in the index 发生变化,这又会使父仓库注册一个新的提交(引用子模块仓库的新 gitlink SHA1)
那将不再是 "dummy change".
TeamCity 会将其作为触发作业的 webapp 新更改进行选择。
选项很少:
使用githooks到"capture"所需的分支(folder/file/path任何你需要的)并执行您要执行的任何 build/deploy 脚本。
如果您使用 git 集线器,则有更多选项。 Git 集线器命名为:webhooks
例如:
git diff-tree -r --name-only HEAD^1
将为您提供当前提交中所有已修改文件的列表。将其与 grep 一起使用以搜索所需的路径。
希望对您的问题有所帮助。
我有一个 git 存储库,其中包含一个带有多个 Web 应用程序(public 站点、内部站点、public 服务)的单个 .Net 解决方案和一个共享 class 图书馆项目。我想根据所做的更改部署一些项目。例如,如果我修复了 public 站点中的错误,我只想部署该站点,如果我修复了 public 站点和 api 中的错误,我想同时部署它们,依此类推。我可以通过创建不同的构建配置并使用触发规则和过滤器 Ant_like_wildcard 文件夹路径并部署相应的项目来实现它。
当我仅在共享 class 库中而不是在任何 Web 应用程序中进行更改时的棘手情况。在这种情况下,我有以下选择:
对必须部署的 Web 应用程序进行虚拟更改
包括必须在提交消息中部署的 Web 项目,并使用 VCS_comment_regexp 过滤触发器
解析 git 提交消息,在构建脚本中使用 setParameter 设置参数,并在以下步骤中使用这些参数。
我不喜欢任何选项,因为它们看起来很老套。这种情况还有更好的选择吗?
如果共享 class 库项目被引用为其他三个 webapp 的 submodule,这意味着每个 webapp 都可以选择更新到该共享库项目回购的最新提交。
这会导致父仓库的 gitlink (the special entry in the index 发生变化,这又会使父仓库注册一个新的提交(引用子模块仓库的新 gitlink SHA1)
那将不再是 "dummy change".
TeamCity 会将其作为触发作业的 webapp 新更改进行选择。
选项很少:
使用githooks到"capture"所需的分支(folder/file/path任何你需要的)并执行您要执行的任何 build/deploy 脚本。 如果您使用 git 集线器,则有更多选项。 Git 集线器命名为:webhooks
例如:
git diff-tree -r --name-only HEAD^1
将为您提供当前提交中所有已修改文件的列表。将其与 grep 一起使用以搜索所需的路径。
希望对您的问题有所帮助。