Объединение артефактов в 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