지속적인 통합NET 프레임워크
간단한 항목
우선, 이러한 원칙들이 상대적으로 간단하고 기본적으로 미완성된 것에 어떻게 응용되는지 봅시다.NET Framework 프로젝트: NetMonkey 충족, a.MailChimp API의 NET 패키지(당시 3.0 버전).필요한 사항은 다음과 같습니다.
A solution file (
NetMonkey.sln
). A build file(
NetMonkey.proj
)은 MSBuild로 작성되었습니다.A script file(
build.bat
)은 로컬에서 파일 생성을 수행하는 데 도움을 줍니다.A CI configuration file (
appveyor.yml
).이 프로젝트의 나머지 부분은 인프라 시설 코드다.마카토이사 / 그물원숭이
A.MailChimp API v3.0의 NET 패키지입니다.
솔루션
해결 방안은 Visual Studio으로 a collection of related projects을 대표한다.Visual Studio를 사용하여 로드하거나 구축할 수 있습니다(MSBuild 사용).
이 경우 솔루션의 목적은 다음과 같습니다.
NetMonkey.sln
은 라이브러리 생성에 사용됩니다.NetMonkey.Tests.sln
에는 관련 단원 테스트도 포함되어 있다.주 프로젝트는 이전의 해결 방안과 공유되기 때문에 이것은 개발자가 개발하도록 장려하는 해결 방안(더욱 완전함)이다.파일 생성
이것은 구축의 관건으로 MSBuild에 쓰여 있다.나도 Cake, 심지어 psake을 고려할 수 있지만, 나에게 있어서 MSBuild보다 더 좋은 것은 없다.비록 이것은 후천적인 품격이지만, 그것은 절대로 자신의 블로그 게시물을 가질 만하다.동시에 관건은 다음과 같다.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Rebuild" ToolsVersion="14.0">
<ItemGroup>
<Projects Include="NetMonkey.sln" />
</ItemGroup>
<Import Project="$(MSBuildProjectDirectory)\packages\Isogeo.Build.*\tools\build\Isogeo.Common.targets" />
</Project>
그것은 단지 주요 해결 방안이 NetMonkey.sln
파일이라고 말할 뿐이다.나는 내 자신의 약속을 견지하기 때문에 (나는 이런 경향이 강하다) 나는 하나의 라이브러리에서 구축의 기본 부분을 추상화할 수 있고 이 라이브러리는 많은 프로젝트에서 공유할 수 있다.단점은 모든 상황(예를 들어 웹 응용 프로그램과 본체 응용 프로그램)을 15년 동안 처리하려고 시도한 후에 공공 라이브러리가 무겁고 들어가기 어려워진다는 것이다(https://github.com/isogeo/Isogeo.Build/blob/531d173efc326afceb013a6ff841e58ffcdaff25/files/build/Isogeo.Common.targets 참조).그러나 위의 간단한 정의를 통해 다음과 같은 구축 목표를 제공합니다.정리: 정리 생성.
tmp\
폴더를 간단하게 삭제하는 문제입니다. 왜냐하면 모든 다른 목표가 그곳에서 출력을 생성하기 때문입니다.컴파일: 지정한 해결 방안을 컴파일합니다.
테스트: 테스트 항목.
.Tests.sln
인 해결 방안이 존재한다면 (예를 들어 본 예에서 NetMonkey.Tests.sln
) 이 해결 방안을 컴파일하고 테스트를 실행할 것이다.분석: 프로젝트에 대해 정적 분석을 실행합니다.
문서: SHFB을 사용하여 프로젝트에 대한 문서를 생성합니다(
tmp\out\bin
폴더에서).패키지: 배포 가능한 패키지를 생성합니다(
tmp\out\bin
폴더에서).제공되는 솔루션 유형에 따라 다음과 같은 작업을 수행할 수 있습니다.컴파일: 컴파일과 테스트가 결합된 단축키.
재구성: 조합을 정리하고 생성하는 단축키입니다.
게시: 정리, 생성, 문서, 패키지 및 분석을 조합하는 단축키입니다.
tmp\
폴더에 있는 보고서를 생성할 수 있으며, 이러한 보고서는 다양한 선택의 플랫폼(예를 들어 AppVeyor 또는 CodeCov...)으로 전송될 수 있습니다.스크립트 파일
스크립트 파일은 로컬에서 파일 생성을 쉽게 수행할 수 있습니다.이 가능하다, ~할 수 있다,...
%PATH%
에 없습니다.나는 이것이 하나의 특성이라고 생각한다. Windows Registry으로, 여러 버전을 설치할 수 있고, 실행할 때 필요한 버전을 동적으로 선택할 수 있기 때문이다.PUSHD .nuget
NuGet.exe restore "packages.config" -PackagesDirectory ..\packages
POPD
msbuild.exe %PROJECT% /nologo /t:%TARGET% /m:%NUMBER_OF_PROCESSORS% /p:GenerateDocumentation="%GENERATE_DOCUMENTATION%" /fl /flp:logfile=build.log;verbosity=%VERBOSITY%;encoding=UTF-8 /nr:False
어쨌든 현재 로컬 테스트 구축: build.bat
.CI 구성 파일
오래전, 나는 CruiseControl.NET으로 나의 프로젝트를 구축했는데, 그것은 나를 위해 매우 잘 서비스되었다.현재 클라우드에는 AppVeyor과 같은 더 실용적인 옵션이 많이 있습니다.NET는 여러 해 동안 통합되었습니다.나는 불가피하게 어느 순간에 변화를 일으켰다.
하지만 제 구축은 어떠한 CI 플랫폼과도 무관하기 때문에 전환이 매우 간단합니다.이것은 나의 YAML을 매우 간단하게 한다. (스스로 https://github.com/mcartoixa/NetMonkey/blob/master/appveyor.yml을 검사한다.) 나는 Azure DevOps으로 쉽게 다시 전환할 수 있다. 예를 들어.
CI 플랫폼에 해당하는
build.bat
을 구성합니다.패키지(AppVeyor speak의 부품)와 버전 처리만 추가되었습니다.모든 패키지가 하나의 폴더로 출력됩니다 (일반적으로 tmp\ou\bin\
). 구성은 여전히 간단합니다.artifacts:
- path: tmp\out\bin\*.nupkg
type: NuGet
- path: tmp\out\bin\*.zip
그래서 그것은 주로 발표에 관한 것이다.더욱 완전한 항목
GeoSIK에 대해 알고 있습니다. 이것은 OGC Web Services의 개발을 간소화하기 위한 라이브러리입니다.순액이 라이브러리는 이러한 서비스를 실현하거나 외부 지리 공간 라이브러리와 통합하는 데 사용되는 11개의 라이브러리를 제공한다(예를 들어 ProjNet의 Sql Server Spatial Data types).
마카토이사 / GeoSIK
GeoSIK는 에서 OGC 웹 서비스를 개발하는 데 도움을 주는 라이브러리입니다.순액
비록 이 프로젝트는 훨씬 복잡하지만, 그것의 구조는 같다.만약 네가 위의 이 간단한 프로젝트의 구조를 이해한다면, 너는 지금 이 프로젝트를 깊이 연구하는 데 너무 많은 문제가 있어서는 안 된다.유일한 주요 변화는 간단함을 유지하기 위해 모든 라이브러리를 하나의 단일 해결 방안으로 구축하기로 결정했다는 것이다.이것은 특정한 포장 시스템이 필요하기 때문에
GeoSIK.proj
(https://github.com/mcartoixa/GeoSIK/blob/master/GeoSik.proj)은 좀 복잡하다.나에게 있어서, 이것은 비록 그것이 약속에 심각하게 의존하지만, 이 구축 시스템은 여전히 매우 강한 적응성을 가지고 있음을 나타낸다.사실상 전체 시스템은 다른 플랫폼에 적응할 수 있다.
Reference
이 문제에 관하여(지속적인 통합NET 프레임워크), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mcartoixa/continuous-integration-for-the-net-framework-1hc6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)