Внизу стек переповнення має номер версії диверсії:
версія svn: 679
Я хочу використовувати таке автоматичне встановлення версій для своїх .NET Web Site/Application
проектів / рішень Windows Forms, WPD.
Як це реалізувати?
Внизу стек переповнення має номер версії диверсії:
версія svn: 679
Я хочу використовувати таке автоматичне встановлення версій для своїх .NET Web Site/Application
проектів / рішень Windows Forms, WPD.
Як це реалізувати?
Відповіді:
Схоже, Джефф використовує CruiseControl.NET на основі перегляду стенограм подкастів. Здається, це має автоматизовані можливості розгортання від контролю джерела до виробництва. Це може бути там, де відбувається вставка?
Ми робимо це за допомогою xUnit.net для наших автоматизованих збірок. Ми використовуємо CruiseControl.net
(і випробовуємо TeamCity). Завдання MSBuild, яке ми запускаємо для безперервної інтеграції, автоматично змінює для нас номер збірки, тому отриманий файл збірки ZIP містить належним чином встановлений версій DLL та EXE.
Наш файл MSBuild містить посилання на UseTask для DLL, яка замінює регулярні вирази: (Ви можете використовувати цю DLL, оскільки вона також охоплюється ліцензією MS-PL)
<UsingTask AssemblyFile = "3rdParty \ CodePlex.MSBuildTasks.dll" TaskName = "CodePlex.MSBuildTasks.RegexReplace" />
Далі ми витягуємо номер збірки, який автоматично надається системою CI. Ви також можете отримати свого постачальника керування джерелом, щоб вказати номер редакції джерела, якщо хочете, але ми виявили, що номер збірки в системі CI був більш корисним, оскільки не тільки може бачити результати інтеграції за номером збірки CI, який також надає посилання назад до наборів змін, які були включені у збірку.
<! - Каскадні спроби знайти номер збірки -> <PropertyGroup Condition = "'$ (BuildNumber)' == ''"> <BuildNumber> $ (BUILD_NUMBER) </BuildNumber> </PropertyGroup> <PropertyGroup Condition = "'$ (BuildNumber)' == ''"> <BuildNumber> $ (ccnetlabel) </BuildNumber> </PropertyGroup> <PropertyGroup Condition = "'$ (BuildNumber)' == ''"> <BuildNumber> 0 </BuildNumber> </PropertyGroup>
(Ми пробуємо BUILD_NUMBER, який є від TeamCity, потім ccnetlabel, який є від CC.net, і якщо жодного з них немає, ми встановлюємо значення за замовчуванням до 0, щоб ми могли протестувати автоматичний сценарій збірки вручну.)
Далі ми маємо завдання, яке встановлює номер збірки у файл GlobalAssemblyInfo.cs, який ми пов’язуємо з усіма нашими проектами:
<Target Name = "SetVersionNumber"> <RegexReplace Pattern = 'AssemblyVersion \ ("(\ d + \. \ D + \. \ D +) \. \ D +" \)' Заміна = 'AssemblyVersion ("$ 1. $ (BuildNumber)")' Файли = 'GlobalAssemblyInfo.cs' /> <Exec Command = "attrib -r xunit.installer \ App.manifest" /> </Target>
Це знаходить атрибут AssemblyVersion і замінює номер версії abcd на abcBuildNumber. Зазвичай ми залишаємо джерело зареєстрованим у дереві, фіксуючи перші три частини номера будівельника, а четверту - нулем (fe, сьогодні це 1.0.2.0).
У процесі побудови переконайтеся, що завдання SetVersionNumber передує вашому завданням побудови. Зрештою, ми використовуємо наше завдання Zip, щоб заархівувати результати збірки, щоб мати історію двійкових файлів для кожної автоматизованої збірки.
Ви можете зробити це, додавши наступне в будь-якому місці коду
$Id:$
Так, наприклад, @Jeff зробив:
<div id="svnrevision">svn revision: $Id:$</div>
а при реєстрації на сервері замінив $ Id: $ поточним номером редакції. Я також знайшов це посилання .
Існує також $ Date: $ , $ Rev: $ , $ Revision: $
Якщо ви використовуєте ASP.Net MVC
(як це робить StackOverflow), я написав просте 3-крокове керівництво щодо автоматичного отримання та відображення останньої версії SVN . Порадник був натхненний думкою собі саме про це питання! : o)
@Balloon Якщо ви використовуєте TortoiseSVN, ви можете використовувати упаковану програму SubWCRev . Він запитує робочу копію і повідомляє вам лише найвищий номер редакції. Слід визнати, що це клієнтський підхід до проблеми на стороні сервера, але оскільки це приємна програма командного рядка, ви повинні мати можливість досить легко захопити її результати для використання.
$rev
та інші подібні - це редакції для окремих файлів, тому вони не змінюватимуться, якщо файл не зміниться. Номер на веб-сторінці (швидше за все, я тут припускаю) номер ревізії svn для всього проекту. Це відрізняється від версій файлів, на які вказували інші.
У цьому випадку я припускаю, що CCNET витягує номер редакції проекту і переписує частину веб-сторінки з цим номером. Будь-яке рішення CI повинно мати змогу це зробити, налаштувати це самостійно за допомогою CCNET та Teamcity (хоча не веб-сторінок, а автоматичної версії версій розгортання / складання).
Для цього скористайтеся рішенням CI, яке його підтримує, або використовуйте процес збірки (MSbuild / Nant), щоб зберегти цю версію та записати її у файли перед "розгортанням".
Щоб додати до відповіді @ BradWilson: "Ви також можете отримати постачальника послуг контролю джерела, щоб надати номер версії джерела, якщо хочете"
Для підключення Subversion та MSBuild: Проект спільних завдань MSBuild