SVN 개정 번호를 내 ASP.NET 웹 사이트와 어떻게 동기화합니까?
Stack Overflow는 하단에 Subversion 버전 번호가 있습니다.
svn 개정 : 679
내 .NET Web Site/Application
, Windows Forms, WPD 프로젝트 / 솔루션에서 이러한 자동 버전 관리를 사용하고 싶습니다 .
어떻게 구현합니까?
Jeff가 팟 캐스트 기록을 통해 일부 리프 링을 기반으로 CruiseControl.NET을 사용하는 것 같습니다 . 소스 제어에서 프로덕션까지 자동화 된 배포 기능이있는 것 같습니다. 이것이 삽입이 일어나는 곳일까요?
자동화 된 빌드를 위해 xUnit.net으로 이를 수행 합니다. 우리는 CruiseControl.net
TeamCity를 사용 하고 있습니다. 지속적인 통합을 위해 실행하는 MSBuild 작업은 자동으로 빌드 번호를 변경하므로 결과 빌드 ZIP 파일에는 적절하게 버전이 지정된 DLL 및 EXE 집합이 포함됩니다.
우리의 MSBuild에서 파일 (이뿐만 아니라 MS-PL 라이센스에 의해 덮여 당신이있는 거 환영이 DLL을 사용하는) : 정규 표현식 교체를 수행하는 DLL에 대한 UsingTask 참조가 포함
<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>
(TeamCity의 BUILD_NUMBER, CC.net의 ccnetlabel을 차례로 시도하고 둘 다없는 경우 기본값 0으로 설정하므로 자동화 된 빌드 스크립트를 수동으로 테스트 할 수 있습니다.)
다음으로 빌드 번호를 모든 프로젝트에 연결하는 GlobalAssemblyInfo.cs 파일로 설정하는 작업이 있습니다.
<Target Name = "SetVersionNumber"> <RegexReplace 패턴 = 'AssemblyVersion \ ( "(\ d + \. \ d + \. \ d +) \. \ d +"\)' Replacement = 'AssemblyVersion ( "$ 1. $ (BuildNumber)")' 파일 = 'GlobalAssemblyInfo.cs'/> <Exec Command = "attrib -r xunit.installer \ App.manifest"/> </ 대상>
이렇게하면 AssemblyVersion 특성을 찾고 abcd 버전 번호를 abcBuildNumber로 바꿉니다. 일반적으로 소스는 빌더 번호의 처음 세 부분이 고정되고 네 번째 부분은 0 (fe, 오늘은 1.0.2.0)으로 트리에 체크인 된 상태로 둡니다.
빌드 프로세스에서 SetVersionNumber 작업이 빌드 작업보다 우선하는지 확인합니다. 마지막으로 Zip 작업을 사용하여 빌드 결과를 압축하여 모든 자동화 된 빌드에 대한 바이너리 기록을 얻습니다.
코드의 아무 곳에 나 다음을 추가하여 수행 할 수 있습니다.
$Id:$
예를 들어 @Jeff는 다음을 수행했습니다.
<div id="svnrevision">svn revision: $Id:$</div>
그리고 서버에 체크인했을 때 $ Id : $를 현재 개정 번호로 대체했습니다. 나는 또한 이 참조를 찾았습니다 .
또한이 $ 날짜 : $ , $ 레브 : $ , $ 수정 : $는
If you're using ASP.Net MVC
(as StackOverflow does), I've written an easy to follow 3-step guide on how to automatically get and display the latest SVN revision. The guide was inspired by thinking to myself about this very question! :o)
@Balloon If you are using TortoiseSVN, you can use the packaged SubWCRev program. It queries a working copy and tells you just the highest revision number. Admittedly, this seems to be a client-side approach to a server-side problem, but since it's a nice command line program, you should be able to capture its output for use fairly easily.
$rev
and others like it are revisions for the individual files, so they won't change unless the file changes. The number on the webpage is (most likely, I'm assuming here) the svn revision number for the whole project. That is different than the file revisions, which others have been pointing to.
In this case I assume that CCNET is pulling the revision number of the project and rewriting a part of the webpage with that number. Any CI solution should be able to do this, set this up myself with CCNET and Teamcity (although not webpages, but automatic versioning of deployment/assembly versions).
In order for you to do this, use a CI solution that supports it, or use your build process (MSbuild/Nant) to store that version and write it to the files before "deploying" it.
To add to @BradWilson's answer: "You could also get your source control provider to provide the source revision number if you want"
To connect Subversion and MSBuild: MSBuild Community Tasks Project
'programing tip' 카테고리의 다른 글
템플릿을 사용할 때 "해결되지 않은 외부 기호"오류가 발생하는 이유는 무엇입니까? (0) | 2020.09.06 |
---|---|
std :: string :: c_str () 수명이란 무엇입니까? (0) | 2020.09.06 |
0x 표기법을 사용하는 숫자는 무엇을 의미합니까? (0) | 2020.09.06 |
XML 요소에 대한 표준 명명 규칙이 있습니까? (0) | 2020.09.06 |
IList 또는 IEnumerable을 배열로 변환하는 가장 좋은 방법 (0) | 2020.09.05 |