Добавьте шаг сборки в конце, который проверяет, есть ли любые изменения. Если изменений нет, то удалите артефакт, иначе оставьте его в покое. Вы можете с помощью TC8 установить политику выполнения шага сборки на Always, even if build stop command was issued
.
Вы можете использовать API-интерфейс TeamCity REST для определения того, есть ли какие-либо изменения le футов. Например:
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>
Но вы могли бы связать его с завитка, 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
.
Итак, проблема в том, что A) эта конфигурация сборки выполняет и сохраняет новые артефакты, когда на самом деле нет изменений, или B) У вас есть 1GB редко изменяющихся артефактов, которые продолжают храниться, даже если изменения изолированы от «другие» 25 МБ? Я бы хотел, чтобы эта сборка выполнялась только тогда, когда есть изменения, и, возможно, поместив этот 1GB-каталог в другую конфигурацию сборки, которая выполняется гораздо реже. – Michael12345