2013-11-26 5 views
0

Я хочу исключить один каталог из артефактов, но только тогда, когда сборка не имеет никаких изменений. Является ли это возможным?Исключить каталог в TeamCity, когда сборка не имеет изменений

Мои артефакты имеют 1 ГБ, но без этого один каталог всего 25 МБ. Более половины моих построений не имеет таких изменений: teamcity screenshot И это только один из моих проектов. У меня недостаточно места для хранения всего.

Я пытался что-то вроде этого:

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

, но он не работает даже без условия, которые я сейчас задать :(

+0

Итак, проблема в том, что A) эта конфигурация сборки выполняет и сохраняет новые артефакты, когда на самом деле нет изменений, или B) У вас есть 1GB редко изменяющихся артефактов, которые продолжают храниться, даже если изменения изолированы от «другие» 25 МБ? Я бы хотел, чтобы эта сборка выполнялась только тогда, когда есть изменения, и, возможно, поместив этот 1GB-каталог в другую конфигурацию сборки, которая выполняется гораздо реже. – Michael12345

ответ

1

Добавьте шаг сборки в конце, который проверяет, есть ли любые изменения. Если изменений нет, то удалите артефакт, иначе оставьте его в покое. Вы можете с помощью 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.

+0

Это не совсем то, что я хочу, но это очень помогает :) – sebaszw

+0

Согласен. Это меньше, чем идеально, но я ничего не знаю, чтобы делать публикации артефактов только в случае изменений в сборке. – Welsh