Azure와 함께 하는 DevOps

33. Azure 아티팩트로 패키지 관리

zerobig-k8s 2020. 5. 25. 07:28

<참조> https://azuredevopslabs.com/labs/azuredevops/packagemanagement/#overview

 

 

 

 

 

개요

Azure 아티팩트는 Azure DevOps에서 NuGet, npm 및 Maven 패키지를 찾고, 설치하고 발행하기 쉽게 만들어주는 확장이다. 빌드와 같은 다른 허브와 긴밀하게 통합되어 있으므로 패키지 관리가 기존 워크플로우에서 매끄럽게 진행되는 한 부분이 될 수 있다.

 

 

 

 

 

선행 조건

 

 

 

 

 

실습 1: Azure 아티팩트로 작업하기

Azure 아티팩트은 Azure DevOps 서비스 및 Azure DevOps 서버의 확장이다. Azure DevOps 서비스, Azure DevOps 서버 2019 및 Team Foundation 서버(TFS) 2017과 2018에서는 사전 설치되어 있다.

 

과제 1: 피드 만들기 및 접속하기

1, Artifacts 허브로 이동한다.

 

 

2. Create Feed를 클릭한다. 이 피드는 조직 내 사용자가 사용할 수 있는 NuGet 패키지 모음이며 공개 NuGet 피드와 함께 피어로 제공된다. 이 랩의 시나리오는 Azure Artifacts 사용을 위한 워크 플로우에 중점을 두므로 실제 아키텍처 및 개발 결정은 순전히 실례이다. 

 

 

3. 이 피드에는이 조직의 프로젝트간에 공유 할 수 있는 공통 기능이 포함된다. 이름을 "PartsUnlimitedShared"로 설정하고 생성을 클릭한다. 기본 보안 옵션을 그대로 둔다.

 

 

4. 이 NuGet 피드에 연결하려는 모든 사용자는 해당 환경을 구성해야 한다. Connect to feed를 클릭한 후 NuGet 리스트 중 Visual Studio를 선택한다.

 

 

5. Machine setup 섹션에서 Source URL을 복사한다. 이것이 Visual Studio와 NuGet이 새로운 피드를 활용하기 위해 필요한 유일한 것이다. 브라우저에서 대화 상자를 열어 둔다.

 

 

6. Visual Studio의 새 인스턴스를 시작한다. 기본 Parts Unlimited 솔루션을 복제 할 때 열어 둔 인스턴스를 사용하지 않는다.

 

 

7. Tools 메뉴에서 Options > NuGet Package Manager > Package Sources를 선택한다.

 

 

8. Package Sources 섹션에 위치하여 Add 버튼을 클릭하여 새로운 패키지 소스를 추가한다.

 

 

9. Name으로 “PartsUnlimitedShared” 라 입력하고 복사해 두었던 Source URL을 붙여넣는다. Update를 클릭하고 나서 OK를 클릭한다. Visual Studio가 이제 새로운 피드에 연결된다.

 

 

 

과제 2 : NuGet 패키지 만들기 및 발행하기

1. Visual Studio의 메인 메뉴에서 File > New Project를 선택한다. 이제 다른 팀이 프로젝트 소스와 직접 작업하지 않고도 이를 통합하여 최신 상태로 유지할 수 있도록 NuGet 패키지로 발행할 공유 어셈블리를 만들 것이다. 

 

 

 

2. 템플릿 검색 창에서 "Class Library" 라고 입력 후 결과 중 Class Library (.NET Framework) 템플릿을 선택하고 Next를 클릭한다.

 

 

3.  Project Name “PartsUnlimited.Shared”로 설정한다. Create를 클릭하여 프로젝트를 생성한다.

 

 

4. Solution Explorer에서, Class1.cs를 삭제한다.

 

 

5. 프로젝트 노드에서 우클릭하여 Properties를 선택한다.

 

 

6. Target framework .NET Framework 4.5.1을 설정하고 Yes를 클릭하여 변경을 확인한다.

 

 

7. Ctrl+Shift+B 를 눌러 프로젝트를 빌드한다. 다음 과제에서는 NuGet.exe를 사용하여 빌드된 프로젝트에서 직접 NuGet 패키지를 생성할 것이지만 프로젝트를 먼저 빌드해야 한다.

 

 

8. Azure DevOps 브라우저 탭으로 돌아간다. 브라우저 탭에서 NuGet.exe를 선택하고 Get the tools를 클릭한다.

 

 

9. Step1에 제공된 링크를 사용하여 최신 버전의 NuGet을 다운로드 한다.

 

 

10. 최신 버전의 nuget.exe를 데스크탑에 다운로드한다. 브라우저 탭을 닫는다.

 

 

11. Visual Studio로 돌아가  Solution Explorer에서 우클릭하여 PartsUnlimited.Shared 프로젝트 노드를 선택하고 Open Folder in File Explorer를 선택한다.

 

 

12. 다운로드한 nuget.exe 파일을 .csproj 파일이 있는 폴더로 이동시킨다.

 

 

13. 동일한 Windows 탐색기 창에서 File > Open Windows PowerShell > Open Windows PowerShell as administrator를 선택한다.

 

14. 아래 줄을 실행하여 프로젝트에서 .nupkg 파일을 만든다. 이는 배포를 위해 NuGet 비트를 함께 패키지화 하는 빠른 지름길이다. NuGet은 사용자 정의가 가능하며 소비자에게 자세한 정보를 제공 할 수있는 뛰어난 유연성을 제공한다. NuGet 패키지 생성 페이지에서 자세한 내용을 확인할 수 있다.

./nuget.exe pack PartsUnlimited.Shared.csproj

 

 

15. NuGet은 프로젝트에서 가져올 수 있는 정보를 기반으로 최소 패키지를 빌드한다. 예를 들어, 이름은 PartsUnlimited.Shared.1.0.0.nupkg이다. 해당 버전 번호는 어셈블리에서 가져 왔다.

 

 

16. Visual Studio로 돌아가 Solution Explorer에서 Properties\AssemblyInfo.cs를 연다.

 

 

17. AssemblyVersion 특성은 어셈블리에 빌드할 버전 번호를 지정한다. 각 NuGet 릴리즈에는 고유한 버전 번호가 필요하므로 패키지 작성에이 방법을 계속 사용하는 경우 빌드하기 전에 이 버전을 늘려야한다.

 

 

18. PowerShell 창으로 돌아가서 다음 명령을 실행한다. (한 줄에 있어야 함). 비어 있지 않은 문자열일 수 있는 "API 키”를 제공해야 한다. 여기서는 "VSTS"를 사용하고 있다. 요청이 있을 때 Azure DevOps 자격 증명을 사용하여 로그인한다.

./nuget.exe push -source "PartsUnlimitedShared" -ApiKey VSTS PartsUnlimited.Shared.1.0.0.nupkg

 

 

19. 몇 초 후에 명령이 성공해야 한다.

 

 

20. Azure DevOps에 열린 브라우저 창으로 돌아가서 셀렉트박스에서 PartsUnlimitedShared를 선택한다. (리스트에 없다면 새로고침을 해본다.) 

 

이제 조직의 NuGet 패키지가 피드에 발행된 것을 볼 수 있다. 클릭하면 세부 정보를 볼 수 있다.

 

 

 

21. 세부 사항을 가져 왔으며 이제 다른 사람이 사용할 수 있다.

 

 

 

과제 3: NuGet 패키지 불러오기

1. 전체 Parts Unlimited 솔루션이 열려있는 Visual Studio 인스턴스로 전환한다.

 

 

2. Solution Explorer에서 PartsUnlimitedWebsite 프로젝트 아래 References 노드에서 우클릭하여 Manage NuGet Packages를 선택한다.

 

 

3. Browse 탭을 클릭하고 Package source PartsUnlimitedShared로 변경한다. 방금 추가 한 패키지가 유일한 패키지이므로 Install을 클릭하여 프로젝트에 추가한다.

 

 

 

4. 메시지가 표시되면 확인을 클릭하여 추가를 확인한다.

 

 

 

5. Ctrl+Shift+B를 눌러 프로젝트를 빌드한다. 성공해야 한다. NuGet 패키지는 아직 값을 추가하지는 않지만 적어도 값이 있다는 것을 알고 있다.

 

 

 

 

과제 4 : NuGet 패키지 업데이트 하기

1. PartsUnlimited.Shared 프로젝트가 열린 Visual Studio 인스턴스 (NuGet 소스 프로젝트)로 전환한다. 

 

 

2. Solution Explorer의 PartsUnlimited.Shared 프로젝트 노드에서 우클릭하여 Add > New Item을 선택한다.

 

 

3. Class 템플릿을 선택하고 Name에 "TaxService.cs"를 입력한다. Add를 클릭하여 클래스를 추가한다. 세금 계산이 이 공유 클래스로 통합되고 중앙에서 관리되므로 다른 팀이 NuGet 패키지를 사용하여 간단하게 작업 할 수 있도록 해주는 것처럼 보이게 할 수 있다.

 

 

4. 새 파일의 코드를 아래 코드로 바꾼다. 지금은 10%의 비율로 하드코딩 된다.

namespace PartsUnlimited.Shared
{
    public class TaxService
    {
        static public decimal CalculateTax(decimal taxable, string postalCode)
        {
            return taxable * (decimal).1;
        }
    }
}

 

 

5. 어셈블리(및 패키지)를 업데이트하고 있으므로 AssemblyInfo.cs로 돌아가 AssemblyVersion을 1.1.0.0으로 업데이트 한다.

 

 

6. Ctrl+Shift+B를 눌러 프로젝트를 빌드한다.

 

 

7. PowerShell 창으로 돌아가서 다음 줄을 실행하여 NuGet 패키지를 다시 패키징 한다. 새 패키지에는 업데이트된 버전 번호가 있다.

./nuget.exe pack PartsUnlimited.Shared.csproj

 

 

8. 다음 행을 실행하여 업데이트된 패키지를 발행한다. 새 패키지를 반영하기 위해 버전 번호가 변경되었다.

./nuget.exe push -source "PartsUnlimitedShared" -ApiKey VSTS PartsUnlimited.Shared.1.1.0.nupkg

 

 

9. Azure DevOps에 열린 브라우저 창으로 돌아가서 페이지를 새로 고친다. 여전히 1.0.0 버전의 패키지를 볼 수 있지만 버전 탭을 선택하고 1.1.0을 선택하여 변경할 수 있다.

 

 

10. 메인 PartsUnlimited 프로젝트(PartsUnlimitedWebsite와 함께)에 열려있는 Visual Studio 인스턴스로 다시 전환한다.

 

 

11. Solution Explorer에서 PartsUnlimitedWebsite\Utils\DefaultShippingTaxCalculator.cs을 연다.

 

 

12. 20 행에서 CalculateTax에 대한 호출을 찾아 한정자 “PartsUnlimited.Shared.TaxService”를 추가한다. 처음에. 원래 코드는 이 클래스 내부의 메서드라고 호출했으므로 줄의 시작 부분에 추가하는 코드는 이 코드를 NuGet 어셈블리의 코드로 리디렉션한다. 그러나 이 프로젝트는 아직 NuGet 패키지를 업데이트하지 않았으므로 여전히 1.0.0.0을 참조하고 있으며 이러한 새로운 변경사항을 사용할 수 없으므로 코드가 작성되지 않는다.

 

 

13. Solution Explorer의 References 노드에서 우클릭하여 Manage NuGet Packages를 선택한다.

 

 

14. NuGet은 업데이트를 알고 있으므로 Updates 탭을 클릭하여 세부 정보를 본다. Update를 클릭하여 새 버전을 다운한다. Update 탭이 아직 업데이트되지 않은 경우에도 Browse 탭에서 패키지를 업데이트 할 수 있다. 사용 가능한 NuGet 업데이트가 많이 있을 수 있지만 PartsUnlimited.Shared 만 업데이트하면 된다. 패키지를 완전히 업데이트하는 데 약간의 시간이 걸릴 수 있다. 오류가 발생하면 잠시 기다렸다가 다시 시도한다.

 

 

 

15. 메시지가 표시되면 확인을 클릭하여 업데이트를 승인한다.

 

 

16. 사이트를 빌드하고 실행하려면 F5를 누른다. 예상대로 작동한다.