문제

파일 버전으로 SVN에서 레이블 (TAG)을 작성하고 싶습니다.

나는 이미 빌드에서 생성 된 기본 실행 파일의 파일 버전을 얻음으로써 아티팩트를 이름 바꾸고 있습니다. 와 같은: MyInstaller-1.2.3.1.exe. 이제 SVN에서 태그를 만들고 싶습니다. /tags/1.2.3.1. 라벨링 패턴으로 그런 것을 설정하는 방법을 찾을 수 없었습니다.

현재 내 레이블은 단지 "%system.build.number%"입니다.

이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

TeamCity Professional 버전 4.5.3 (빌드 9035)을 사용하고 있습니다.

도움이 되었습니까?

해결책

누군가 언급했듯이 빌드 스크립트 실행 중에 빌드 번호를 출력 할 수 있으며 TeamCity는 해당 출력을 사용하여 빌드에 레이블을 지정합니다. 예를 들어, 나는 빌드에 AssemblyInfo.cs에 넣는 것과 동일한 버전으로 레이블을 지정합니다. 해당 버전의 일부 (Major, Minor)는 실제로 파일에 있으며 다른 부분 (빌드, 개정)이 빌드 중에 추가됩니다.

내 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 (및 CI를 사용하는 경우 빌드)입니다.

TeamCity 빌드 번호에 SVN 개정 번호를 포함시킬 수 있습니다. TeamCity의 빌드 번호 패턴의 경우 빌드 번호 패턴 필드에서 {build.vcs.number.1}과 같은 것을 사용하십시오.

그 후 빌드 번호에는 실제 SVN 개정 번호가 포함되며 라벨링 패턴 % System.Build.Number %도 포함됩니다.

이것이 도움이되기를 바랍니다, 키르

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top