Командный город:маркировка VCS (Subversion) версией файла артефакта

StackOverflow https://stackoverflow.com/questions/1041153

Вопрос

Я хочу создать метку (tag) в SVN с версией файла.

Я уже переименовываю артефакт, получая файловую версию основного исполняемого файла, созданного сборкой.Такие , как: MyInstaller-1.2.3.1.exe.Теперь я хочу создать тег в SVN под названием /tags/1.2.3.1.Я не смог найти способ установить такую вещь в шаблоне маркировки.

В настоящее время моя маркировка - это просто "%system.build.number%".

Есть какие-нибудь идеи о том, как это сделать?

Я использую TeamCity Professional версии 4.5.3 (сборка 9035).

Это было полезно?

Решение

Как кто-то упоминал, вы можете вывести номер сборки во время выполнения сценария сборки, и teamcity будет использовать этот вывод для маркировки сборки.Например, я помечаю свою сборку той же версией, которую я поместил в AssemblyInfo.cs.Часть этой версии (основная, второстепенная) фактически уже находится в файле, другая часть (сборка, ревизия) добавляется во время сборки.

Из моего скрипта msbuild:

<Target Name="Setup">
    <!-- Version.txt contains the major and minor version numbers, 
         The build number and revision come from environment variables
         in the next step -->
    <Version VersionFile="Version.txt" BuildType="None" RevisionType="None">
        <Output TaskParameter="Major" PropertyName="Major" />
        <Output TaskParameter="Minor" PropertyName="Minor" />
    </Version>

    <!-- If you want to build a release without going through the build
         server, you should define the following 2 environment variables
         when running this build script -->

    <!-- BUILD_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Build" />
    </CreateProperty>

    <!-- BUILD_VCS_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_VCS_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Revision" />
    </CreateProperty>       

    <AssemblyInfo CodeLanguage="CS"  
        OutputFile="Properties\VersionInfo.cs" 
        AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
        AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />

    <!-- Tell the build server what our actual build number is -->
    <Message Text="##teamcity[buildNumber '$(Major).$(Minor).$(Build).$(Revision)']" />
</Target>

вы просто выводите версию во время сборки в следующем формате ##teamcity[buildNumber '<buildnum>']

Другие советы

Если вы используете Ant, возможно, вам следует получить SVNAnt.jar и попробовать это.

Соглашение, которое я видел для маркировки, - major.minor.svn (и .build, если вы используете CI).

Вы можете включить номер редакции SVN в свой номер сборки TeamCity.Для вашего шаблона номера сборки в Teamcity используйте что-то вроде {build.vcs.number.1} в поле шаблон номера сборки.

После этого номер сборки будет содержать фактический номер версии SVN, и ваш шаблон маркировки %system.build.number% также будет содержать его.

Надеюсь, это поможет, КИР

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top