Как скопировать сборку на тестовый сервер? - PullRequest
4 голосов
/ 10 июля 2009

Надеюсь, кто-нибудь может помочь мне с этим. Пусть TeamCity работает и работает над сборкой различных проектов. Я хотел бы иметь возможность автоматически копировать / развертывать успешную сборку TeamCity на тестовом сервере.

Я думал об использовании PowerShell для этого, но я открыт для других идей. Могут ли некоторые предоставить мне информацию о том, как мне это сделать.

Спасибо.

Ответы [ 4 ]

4 голосов
/ 10 июля 2009

Я использую WGet. Вот инструкции для формирования URL города команды. Вы можете сделать WGet в powershell , но если вам нужна только powershell для этой функции, вы можете просто использовать простую wget утилиту для windows .

РЕДАКТИРОВАТЬ: Вот пример из нашего развертывания QA (имена изменены для защиты виновных):

"C:\Program Files (x86)\NcFTP\wget.exe" "http://teamcityserver.domain.com:8111/guestAuth/repository/download/bt6/.lastFinished/Artificat.ear"

Местоположение wget не имеет значения, оно именно там, где оно и происходит. Часть параметра guestAuth определяет тип аутентификации (в нашем случае мы включили гостевую авторизацию, чтобы не беспокоиться о паролях - это в любом случае только внутренний сервер, защищенный брандмауэрами). Параметры указаны в документации, с которой я связан.

Другая интересная особенность параметров - bt6. Это уникальный ключ сборки, и он отличается для каждого проекта. Вы можете узнать, что это такое, перейдя на веб-сайте команды в конфигурацию этой сборки - она ​​будет там. Существуют также инструкции для ссылки на конфигурацию по имени, но мы обнаружили, что она слишком многословна, чтобы ее беспокоить.

1 голос
/ 29 июля 2009

Вы также можете установить агент TeamCity на тестовом сервере. Именно так и предполагалось использовать TeamCity.

1 голос
/ 10 июля 2009

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

Вот скрипт сборки, который вам может пригодиться. Он предварительно компилирует приложение и затем копирует его в каталог развертывания.

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Deploy">

    <PropertyGroup>
        <WebsitePublishDirectory>Artifacts\Website</WebsitePublishDirectory>
        <WebsiteDeployDirectory>\\SERVERNAME\Path\to\web\root</WebsiteDeployDirectory>
        <WebsiteProject>[Project name here]</WebsiteProject>
    </PropertyGroup>

    <Target Name="Deploy">
        <RemoveDir Directories="$(WebsitePublishDirectory)" />

        <AspNetCompiler
            VirtualPath="test"
            PhysicalPath="$(WebsiteProject)"
            TargetPath="$(WebsitePublishDirectory)"
            Force="true"
            Debug="false" />

        <ItemGroup>
            <PublishedFiles Include="$(WebsitePublishDirectory)\**" />
        </ItemGroup>

        <Copy SourceFiles="@(PublishedFiles)" DestinationFolder="$(WebsiteDeployDirectory)\%(RecursiveDir)" />
    </Target>    
</Project>
0 голосов
/ 29 июля 2009

Я создал скрипт Post Build в Visual Studio следующим образом:

C: \ TeamCityBuild \ pt_build.bat
выход 0

Тогда на TC-сервере у меня есть .bat, который выглядит так:

net use r: \ 192.168.16.85 \ Пароль веб-сайта /USER:domain.com\administrator
xcopy "C: \ TeamCityBuild \ path \ WebSite *" "r: \" / R / Y / E
r: \ 192.168.16.85 \ WebSite / DELETE
если уровень ошибки 1 перейти к buildFAILED
: BuildOK
эхо Вехей !!!
выход 0
: BuildFAILED
эхо О НООО !!!
выход 1

'R:' - подключенный диск к тестовому серверу.

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

Пока все работают отлично!

...