2008-08-25 2 views
-1

Можно создать дубликат:
Pre-build task - deleting the working copy in CruiseControl.NETКак удалить каталог с помощью cc.net/cruiscontrol?

Я хотел бы удалить свой рабочий каталог в процессе сборки CruiseControl ... Я уверен, что это легко, но я был не в состоянии найти пример этого ...

Если вы знаете, как создать каталог, это было бы полезно.

Спасибо.

ответ

4

Один из двух способов.

  1. Если вы уже используете файл MSBuild или что-то подобное, добавьте действие в файл MSBuild.
  2. Вместо прямого выполнения некоторой команды создайте командный файл, который выполняет эту команду, а затем удалит каталог и вместо этого вызовет CCnet пакетный файл.
0

Я предполагаю, что вы хотите удалить рабочий каталог перед тем CruiseControl.NET получает последний код из системы управления версиями. Если это так, то единственный способ добиться этого - написать пользовательский поставщик контроля источника для CruiseControl.NET, который сначала удалит рабочий каталог, а затем получит последний код. Посмотрите на исходный код CruiseControl.NET для примеров того, как написать поставщик управления версиями.

Если вы хотите удалить рабочий каталог после последний код извлекается из системы управления версиями, то вы можете использовать CruiseControl.NET-х executable task, запустив «CMD/с дель имя_каталога».

0

В ASP.NET-работе для меня самый простой способ сделать это (что позволяет мне ударить либо MSBUild, либо NAnt в зависимости от проекта) - это свернуть собственный exe, который принимает аргумент, который я передаю с помощью файл bat, выпущенный CC.NET. Это не самая безопасная вещь в мире, но если у вас есть полный контроль над вашей автоматической машиной сборки; это не слишком потрепанный. Быстрое и многоразовое.

падение в ехе где-то, что делает удаление рекурсивный:

static void Main(string[] args)

{ 
     for (int n = 0; n < args.Length; n++) 
     { 
      if (Directory.Exists(args[n].ToString())) 
      { 
       Directory.Delete(args[n].ToString(), true); 
      } 

     } 


} 



Брось в где-то несколько файлов может передать аргументы к нему и просто написать пользовательский .bat файл для каждого проекта. Так что мой блок задача выглядит следующим образом:

 
<tasks> 
    <msbuild> 
     <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable> 
     <workingDirectory>Z:\WorkingDirectory</workingDirectory> 
     <projectFile>YourSolution.sln</projectFile> 
     <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger> 
    </msbuild> 
    <exec> 
     <executable>Z:\SomePathToBuildScripts\YourCustomBat.bat</executable> 
    </exec> 
</tasks> 



Затем окончательный шаг настройки, что командный файл для выполнения удаления/восстановления функций после использования. В файле bat просто убедитесь, что вы перестроили («MD») каталоги, которые вы удалили, если вы хотите опубликовать сайт обратно к ним. В наших ящиках dev я нашел, что это лучший способ предотвратить любимую Frankenbuild.

0

То, как я делал это в прошлом, - это не иметь собственный источник проверки CC.Net. Вместо этого для проекта есть два элемента <msbuild>, первый из которых вызывает цель сборки, которая запускает svn-clean.pl (скомпилирована в .exe), а затем обновляет источник с помощью svn.exe.Второй элемент <msbuild> запускает основной процесс сборки.

Вы можете легко заменить svn-clean командой delete. Для моих проектов удаление мякины из кассы всегда было быстрее, чем проверка новой рабочей копии.

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

Эта настройка прерывается, когда я (очень редко) перемещаю или изменяю зависимости этой цели сборки чистых и обновлений в той степени, в которой процесс msbuild должен перезагружать действительные инструкции для запуска очистки и обновления цель. Когда это произойдет, я прекращаю CC.Net перед тем, как совершать транзакции, зайдите на сервер CC.Net и сделайте «обновление svn» вручную.

Sidelight: Вполне возможно, что CC.Net имеет естественную операцию очистки до сборки. С тех пор я перешел в TeamCity, который настраивается для каждой сборки или только тогда, когда разработчик выбирает (например, когда вы знаете, что вы внесли изменения, которые не будут обновляться чистыми - svn перемещает каталоги со сборкой разум).

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