2012-02-23 4 views
6

Я просмотрел большое количество этих обсуждений без успеха до сих пор.Сочетание артефактов в TeamCity

Наша сборка процесса (на TeamCity 6.5.5) производит две папки, A и B.

В настоящее время мы сжать папку B для развертывания (путь артефакта. \ B => B-% build.number%. застежка-молния). Тем не менее, это было решено, что папка А должно быть включено в архиве в почтовом индексе В. То есть, после сборки, B-2.0.0.zip должен выглядеть следующим образом:

B-2.0.0.zip 
    file 1 
    ... 
    file n 
    A.zip 
     file a1 
     ... 
     file an 

Для достижения этой цели, я «ве добавлен путь артефакт \ A => \ B \ A.zip перед существующим правилом зип для B, поэтому наши пути артефакт выглядеть следующим образом:..

.\A => .\B\A.zip 
.\B => .\B-%build.number%.zip 

Однако, в то время как A.zip производится (I может видеть его в папке B после сборки), он не добавляется в архив B.zip. Я посмотрел на результат сборки, и артефакты были созданы в ожидаемом порядке.

Честно говоря, я в тупике. Любое понимание было бы хорошо и по достоинству оценено. Я мог бы изменить скрипт сборки для этого, но я бы предпочел, если это вообще возможно.

Заранее спасибо.

Edit (2/24/12): В дальнейших исследованиях, казалось, что я бегу на вопрос с A.zip создается как временный файл и перемещен на место после того, как были созданы все артефакты.

Итак, я попытался переназначение моего артефакта пути следующим образом:

.\B => .\B-%build.number%.zip 
.\A => .\B-%build.number%.zip\A.zip 

Я думал, что это будет вставить A.zip в B.zip. Вместо вложенного архива создается папка с именем A.zip. Я просто смотрю на ограничение TeamCity неспособность встраивать архивы?

+0

Я хотел что-то подобное и не мог найти хорошее решение, кроме использования скрипта сборки, чтобы создать каталог со структурой, которую я хотел , Удачи –

+0

Это все больше похоже на решение, Майк. Благодарю. Приятно знать, что это не только я.;) – TimW

ответ

2

Вы правы, TeamCity не поддерживает сложные схемы упаковки для артефактов. На самом деле, нужно добавить шаг сборки для подготовки файлов, которые будут опубликованы как артефакты.

+0

Это позор, но не совсем неожиданно. Спасибо, Ягор! – TimW

2

Одним из вариантов может быть использование мессажа Teamcity Service для создания первого архива до завершения сборки.

##teamcity[publishArtifacts '.\A => .\B\A.Zip'] 

Тогда есть команда города вернуть накопление артефакт на этапе артефакт упаковки в конфигурации сборки:

Что-то вроде:

%env.TEAMCITY_DATA_PATH%\system\artifacts\%env.TEAMCITY_PROJECT_NAME%\%env.TEAMCITY_BUILDCONF_NAME%\%env.BUILD_NUMBER%\B\A.zip => .\B-%build.number%.zip 
.\B => .\B-%build.number%.zip 
7

По крайней мере, с 9-ой версии, теперь возможно для добавления нескольких файлов в один и тот же ZIP-файл, сделав что-то подобное в поле «пути артефактов»:

.\A => myArchive.zip 
.\B => myArchive.zip 

Не уверен, что если подпапки/субархивы могут быть созданы на лету ...

+2

Супер-соответствующий наконечник. Мой вариант использования был именно таким; Я подтверждаю, что это работает в TeamCity 9.X. – Form

+1

Подпапки могут быть созданы следующим образом: +: */*. Css => report.zip!/Css / – iFred

Смежные вопросы