Автоматизированные сборки ответвлений с SVN

От технический блог sagi shkedy:

function generateGuid() {
  var result, i, j;
  result = '';
  for(j=0; j<32; j++) {
    if( j == 8 || j == 12 || j == 16 || j == 20) 
      result = result + '-';
    i = Math.floor(Math.random()*16).toString(16).toUpperCase();
    result = result + i;
  }
  return result;
}

существуют другие методы, которые включают использование элемента управления ActiveX, но избегают их!

Редактирование: я думал, что стоило указать, что никакой генератор GUID не может гарантировать уникальные ключи (проверьте статья Википедии). Всегда существует шанс коллизий. GUID просто предлагает достаточно большую вселенную ключей для сокращения изменения коллизий почти к нолю.

5
задан Chris Missal 6 August 2009 в 16:17
поделиться

3 ответа

Я не понимаю сути вопроса. В любом случае, я предлагаю вам Hudson ( http://hudson-ci.org/ ).

Его легко использовать. Его легко настроить с помощью файлов XML. Имеет удаленный API.

1
ответ дан 14 December 2019 в 19:20
поделиться

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

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

1
ответ дан 14 December 2019 в 19:20
поделиться

Это можно сделать, но многое из этого будет зависеть от ваших сценариев сборки. Если вы укажете cc.net отслеживать папку svn верхнего уровня, например, есть ли у вас монитор проекта:

http://myserver.com/svn/project вместо http://myserver.com / svn / project / trunk . Если какие-либо изменения будут замечены в http://myserver.com/svn/project , начнется сборка.

Теперь ваш сценарий сборки должен определить, какой источник устарел или есть ли новая ветка для сборки. Сценарий сборки создаст новый VDir для любых новых ветвей.

Другой вариант - иметь проект cc.net, который не предназначен для ничего, кроме добавления новых проектов в ваш cc.net. (Назовите это BranchBuilder project) Я бы использовал препроцессор в cc.net и имел бы верхний уровень. config, который просто включал проект для ствола и каждой ветви. Проект построителя веток будет отслеживать корневой путь в svn. Если бы он увидел какие-либо изменения, он бы посмотрел, появились ли какие-либо новые ветки с момента последней сборки. Если бы он был, он мог бы создать файл ccnet-branchname.config для этой ветки, создать виртуальный каталог, а затем обновить корневой файл ccnet.config, добавив дополнительный include.

После обновления конфигурации ccnet cc.net распознает, что файл конфигурации был изменен, и перезагрузит конфигурацию, добавив ваш новый проект ветки. Этот проект ветки запустится и создаст вашу новую ветку.

он может создать файл ccnet-branchname.config для этой ветки, создать виртуальный каталог, а затем обновить корневой файл ccnet.config с помощью дополнительного включения.

После обновления конфигурации ccnet cc.net распознает, что файл конфигурации был изменен, и перезагрузит конфигурацию, добавив ваш новый проект ветки. Этот проект ветки запустится и создаст вашу новую ветку.

он может создать файл ccnet-branchname.config для этой ветки, создать виртуальный каталог, а затем обновить корневой файл ccnet.config дополнительным включением.

После обновления конфигурации ccnet cc.net распознает, что файл конфигурации был изменен, и перезагрузит конфигурацию, добавив ваш новый проект ветки. Этот проект ветки запустится и создаст вашу новую ветку.

3
ответ дан 14 December 2019 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: