这里的情况是:在混帐回购我有3个文件夹: 一个 乙 Ç 如果更改了A或C制成,建设必须启动。在其他情况下,如果对B进行了更改,则不应启动。如何使用TeamCity VCS触发器实现此类行为?的TeamCity - 如何结合VCS触发器
1
A
回答
-1
我没有找到方法来“防止从特定文件夹中发生更改时开始构建”。 Build将开始。但是,如果检测到B文件夹中的更改,我决定制定解决方法并跳过下一步的实际执行。下面是脚本,它为我提供了环境变量,可以优雅地避免下一个构建步骤的执行。
这个脚本是基于TeamCity的环境变量
%system.teamcity.build.changedFiles.file%
重要:不使用 - :B(在我的情况 - :LISP)触发规则,否则您将无法从脚本中检测到此文件夹中的更改。
脚本:
#!/bin/bash
listFiles=$(echo %system.teamcity.build.changedFiles.file%)
echo "List files from $listFiles"
echo "--------------------------"
cat $listFiles
echo "--------------------------"
lispFound=$(cat $listFiles | grep -c '^src\/lisp\/*.')
echo "LISP CHANGES WERE DETECTED: $lispFound time(s)"
echo "##teamcity[setParameter name='env.LISP_CHANGES_DETECTED' value ='$lispFound']"
结果,在%env.LISP_CHANGES_DETECTED%,其中已更改的文件数量将可在任何下一步。在我的情况下,下一步是Ant,并且可以在任何目标中检测是否应该回应“无所事事”并出去。下面是执行日志的exmple:
改进: 如这里所描述Can I cancel a TeamCity build from my msbuild script?
执行可以优雅地从一脚本停止,你将需要添加的呼叫取消执行:
curl -v -u user:password --request POST "http://teamcity:8111/app/rest/builds/<buildLocator>" --data "<buildCancelRequest comment='' readdIntoQueue='false' />" --header "Content-Type: application/xml"
1
您应该为该VCS根配置VCS触发器规则。 添加VCS触发as usual,然后添加这规则:
-:B/**
这将触发对您的VCS根一切,除了文件夹乙。 或者你可以采取不同的方式,只为改变一个或Ç文件夹触发构建:
+:A/**
+:C/**
,将工作,因为
当进入规则,请注意,一旦输入任何“+” 规则,TeamCity将删除默认的“包含全部”设置。要包含所有文件到 ,请使用“+:”。规则。
相关问题
- 1. VCS触发器在TeamCity的工作不
- 2. 合并触发时的TeamCity触发器与合并触发器
- 3. TeamCity:可以结合构建触发器和计划触发器吗?
- 4. TeamCity VCS在连接到构建配置的多个VCS根目录时触发
- 5. VCS触发规则的TeamCity和塑料SCM
- 6. 如何设置水银VCS构建TeamCity的触发忽略标签操作
- 7. WPF - 如何结合DataTrigger和触发器?
- 8. TeamCity触发器是or'd?
- 9. 如何在不检出任何文件的情况下使用VCS触发器触发构建
- 10. TeamCity:从VCS获取版本
- 11. TeamCity多个VCS根目录
- 12. teamcity中触发器依赖的作业
- 13. 使用TeamCity Kotlin DSL触发器
- 14. TeamCity完成构建触发器Hiearchy
- 15. TeamCity:为所有TeamCity项目禁用构建触发器
- 16. 结合文物在TeamCity的
- 17. 如何触发一个TeamCity项目部署到服务器
- 18. 如何将触发器与SourceName和DataTrigger结合使用?
- 19. 如何在TeamCity中的VCS根目录之间切换
- 20. TeamCity - 使用powershell迭代vcs根
- 21. TeamCity:颠覆VCS根与GitHub外部
- 22. 结合不同风格的触发器(如&&)?
- 23. TeamCity“变更”页面
- 24. 触发器队列 - 仅在队列为空时在VCS签入时构建
- 25. 如何正确触发TeamCity构建git上的单个包?
- 26. 开始触发器和结束触发器之间的GROUP行
- 27. Subversion,TeamCity和开发服务器的服务器体系结构
- 28. TeamCity中TFS路径的正确构建触发器规则
- 29. 从visual svn触发teamcity构建服务器的构建
- 30. teamcity中文件更改的设置触发器
这样的配置是否意味着如果在B和A中进行更改,它将不会被触发?实际上,我需要以某种方式配置,比如说规则,“如果B中有变化 - 不启动构建,无论发生什么变化在其他文件夹中“。 –
如果在** A ** *和** ** B **中都发生变化,则Teamcity将触发构建。这是正确的,就像** A **包含一些源信息,应该构建,跳过它将是不正确的。 无论如何,你可以做的是: 1.按用户过滤:如果文件夹** B **将仅由bot用户修改,则可以像这样跳过它: - :user = bot-user ; root = VcsRootName:B/** 2.按评论过滤正则表达式: - :comment =自动生成,跳过构建:B/** – grundic
没有这样的选项,不同的用户,不同的评论,但只有在文件夹B中没有更改。对于文件夹B中的更改,应该启动另一个生成。任何其他想法? –