Объединение артефактов в TeamCity - PullRequest
6 голосов
/ 23 февраля 2012

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

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

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

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

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

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

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

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

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

Редактировать (24.02.12): При дальнейших исследованиях мне показалось, что у меня возникла проблема с созданием A.zip как временного файла и перемещением его на место после создания всех артефактов.

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

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

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

Ответы [ 3 ]

7 голосов
/ 22 апреля 2015

По крайней мере, в версии 9 теперь можно добавить несколько файлов в один и тот же zip-файл, выполнив что-то вроде этого в поле «Пути к артефактам»:

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

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

2 голосов
/ 22 августа 2012

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

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

Затем попросите команду 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
2 голосов
/ 25 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...