Объединение артефактов в TeamCity
Я просмотрел достаточное количество этих обсуждений без успеха до сих пор.
наш процесс сборки (на TeamCity 6.5.5) производит две папки, A и B.
В настоящее время мы архивируем папку B для развертывания (путь к артефакту .B => B - %сборка.число.%промелькнуть.) Тем не менее, было решено, что папка A должна быть включена в качестве архива в zip B. То есть после сборки B-2.0.0.zip должен выглядеть так:
B-2.0.0.zip
file 1
...
file n
A.zip
file a1
...
file an
чтобы выполнить это, я добавил путь артефакта .Ля. >= BA.zip перед существующим правилом zip для B, поэтому наши пути артефактов выглядят так:
.A => .BA.zip
.B => .B-%build.number%.zip
однако, пока A.zip производится (я вижу его в папке B после сборки), он не добавляется в архив B.zip - ... Я посмотрел на выходных, и артефакты были созданы в ожидаемом порядке.
честно говоря, я в тупике. Любое озарение будет оценено по достоинству. Я мог бы потенциально изменить сценарий сборки, чтобы выполнить это, но я бы скорее нет, если вообще возможно.
спасибо заранее.
Edit (2/24/12): При дальнейших исследованиях казалось, что я столкнулся с проблемой с A.zip создается как временный файл и перемещается на место после создания всех артефактов.
Итак, я попытался изменить порядок своих путей артефактов следующим образом:
.B => .B-%build.number%.zip
.A => .B-%build.number%.zipA.zip
Я думал, что это вставит A.zip в B.zip - ... Вместо вложенного архива создается папка с именем A.zip - ... Я просто глядя на ограничение TeamCity не в состоянии вложить архивы?
3 ответов
вы правы, TeamCity не поддерживает сложные схемы упаковки артефактов. Способ действительно добавить шаг сборки для подготовки файлов к публикации в виде артефактов.
по крайней мере, с версией 9 теперь можно добавить несколько файлов в один и тот же zip-файл, выполнив что-то вроде этого в поле "пути артефактов":
.\A => myArchive.zip
.\B => myArchive.zip
Не уверен, однако, если вложенные папки / вложенные архивы могут быть созданы на лету ...
одним из вариантов может быть использование mesage службы Teamcity для создания первого архива до завершения сборки.
##teamcity[publishArtifacts '.\A => .\B\A.Zip']
затем попросите team city вернуть артефакт сборки на шаге упаковки артефакта в конфигурации сборки:
что-то типа:
%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