2017-05-08 3 views
0

내 프로젝트에서 CI를 설정하고 일부 DLL을 설치하는 데 문제가 있습니다. 설정은 다음과 같습니다. repo는 TFSGIT 2015 서버에 있습니다. VM에 빌드 서버 (에이전트)를 설정했습니다. 코드가 체크인되면 빌드 서버가 빌드되고 테스트가 실행됩니다. 일부 TFS 2010 서버에있는 내부 패키지/DLL을 찾을 수 없기 때문에 빌드가 실패합니다.TFS에서 CI/CD를 설치하는 방법 - 종속성 가져 오기?

제 질문은 : 이것을 해결하는 가장 좋은 방법은 무엇입니까? 난 원유 접근 방식은 단순히 DLL을 repo에 추가하는 것입니다,하지만 TFS 2010 서버에서 DLL을 가져올 수있는 사전 빌드 단계가 있는지 궁금합니다. 간단한 파워 쉘 스크립트로 할 수 있습니까?

나는 마이크로 소프트 스택에 익숙하지 않으므로 어떤 안내/제안도 부탁드립니다. 감사.

답변

2

이 처리 할 수있는 몇 가지 방법이있다, 당신은 할 수 :

  1. 은 사용하는 기능의 NUGET 패키지를 만들고 내부적으로 호스트. 여기서 보너스는 CICD 관점에서 적절한 빌드 방식으로 작업하고 적절한 버전 관리를 유지하므로 향후 버전의 정확한 인스턴스를 다시 빌드 할 수 있다는 것입니다. NUGET RESTORE 단계를 수행하면 인수를 간단히 추가 할 수 있습니다. -source

    • VSTS/TFS2017에서 고유 한 NUGET 피드를 추가 할 수 있습니다.
    • 코드로 간단하게 만들 수 있습니다. Hanselman: Creating your own Nuget Feed
    • 타사 호스트를 사용할 수 있습니다.
  2. 메타 데이터로 버전 정보를 적용, 버전 관리 시스템에 원격 TFS 서버에서 해당 파일을 복사 할 빌드 단계를 사용하여 (이 빌드 원격 TFS는 버전를 저장하지 않는 가정). 다시 한 번 말하면, 주어진 시간에 효과적으로 롤백 할 수 있다는 것을 충분히 염두에 두어야합니다.

  3. TFS 서버에서 특정 빌드 버전 아티팩트를 가져 오려면 Powershell을 사용하십시오. 최신 빌드를 가져 오는 예제 스크립트는 다음과 같습니다. DLL 프로젝트에서 빌드를 사용하는 경우이를 사용할 수 있습니다. 특정 빌드를 잡기 위해 수정하는 것이 간단합니다. 개인적으로 몇몇 변수를 통해이 작업을 수행 할 것입니다. 여기서 주목해야 할 가장 중요한 것은 "DropLocation"입니다.이 파일은 Artifact의 파일 놓기입니다. Mike Poulson: Get last known good build via Powershell

  4. Powershell 스크립트를 직접 사용하여 빌드 스크립트에서 다른 TFS의 데이터를 복사합니다. 최소한 아티팩트에 저장하면 롤백하기에 충분하지만, 특히 더 큰 프로젝트에서 거꾸로 만들 수 있습니다. 다만 당신의 유물 보관소에 과감한 무언가가 일어날 경우를 대비하여. 이 대답은 당신을 도울 수 있습니다 : Copy files from bfs version control to directory 또한 도움이 powershell 도구가 있습니다.

아마도이 문제를 해결할 수있는 방법은 많이 있지만, 제 제안은 한 걸음 물러서 올바른 방식으로 설계하는 것입니다. 이 경우 원격 빌드가 발생하고 종속 아티팩트를 작성하는 경우 해당 빌드를 적절하게 관리하고 특정 빌드와 관련하여 캡처하는 지 확인해야합니다. 그래서 자신의 NUGET 피드를 활용하는 것이 좋습니다.

+0

와우. 정말 고맙습니다. 더 나은 답변을 요청하지 못했습니다! 우리의 즉각적인 요구 (보드에 mgmt를 얻기위한 '개념 증명'을 제공하려고 시도하고 있음)를 위해 # 2가 작동합니다.아마도 이것이 빌드 정의의 사전 빌드 단계의 일부일 것입니다. 모든 것이 잘된다고 가정 할 때 # 1은 특정 빌드로 돌아 가야한다면 버전 관리가 정확한 데이터를 제공 할 것이므로 확실히 갈 길이 멀다. 다시 한번 감사드립니다. – jrDeveloper