当构建没有更改时,在TeamCity中排除目录

时间:2013-11-26 10:34:59

标签: teamcity artifacts teamcity-7.1

我想从工件中排除一个目录,但仅限于构建没有更改时。有可能吗?

我的工件有1GB但没有那个目录只有25MB。超过一半的构建没有像这样的变化: teamcity screenshot 这只是我的一个项目。我没有足够的空间存放这一切。

我试过这样的事情:

Binaries=>Binaries.zip
-:Binaries/DirToExclude/*/.*

但即使没有我现在要求的条件,它也无法正常工作:(

1 个答案:

答案 0 :(得分:1)

在最后添加一个构建步骤,检查是否有任何更改。如果没有更改,则删除工件,否则不管它。您可以使用TC8将构建步骤的执行策略设置为Always, even if build stop command was issued

您可以使用TeamCity REST API确定是否还有任何更改。例如:

curl -u /httpAuth/app/rest/changes?build=id:%teamcity.build.id%

可以返回这样的内容:

<changes count="3">
   <change href="/httpAuth/app/rest/changes/id:217404" id="217404" version="b6b97a0d7789d97df6df908ab582ebb723235f43" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217404&personal=false"/>
   <change href="/httpAuth/app/rest/changes/id:217403" id="217403" version="064ecef5552ec2fb7875d7c26fe54cdf94b67bec" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217403&personal=false"/>
   <change href="/httpAuth/app/rest/changes/id:217402" id="217402" version="9bc3a34c952059bbfc7bebeb79ba5a3c894ef555" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217402&personal=false"/>
</changes>

但你可以将它与curl,grep和awk联系起来,如果数字使用如下:

curl -u %teamcity.auth.userId%:%teamcity.auth.password% %teamcity.serverUrl%/httpAuth/app/rest/changes?build=%teamcity.build.id% | grep "changes" | awk -F"\"" '{print $8}'

在上述情况下会返回3,但如果没有更改,则会返回0