728x90
반응형
출처 : https://dotnetplaybook.com/build-test-and-deploy-a-rest-api-with-azure-devops/
CI/CD Pipeline
Continuous integration -> Continuous delivery -> Continuous deployment
Plan -> Code -> Build -> Test -> Release -> Deploy -> Operate -> Monitor
Code를 GitHub에 올리면, Azure DevOps에서 전달받아 코드를 빌드하고, Unit Test를 실행하고, Release하기 위해 package한다. 그 다음 Azure에 Deploy된다.
GitHub대신에 Azure DevOps나 GitLab 사용이 가능하고, Azure 대신 Amazon을 사용할 수도 있다.
WebAPI 프로젝트와 UnitTest 프로젝트를 가진 솔루션을 구성해보자.
visual studio code의 TERMINAL 탭에서 아래 Command를 실행한다.
PS C:\Users\admin\source\repos> mkdir SimpleAPISln
PS C:\Users\admin\source\repos> cd Sim*
PS C:\Users\admin\source\repos\SimpleAPISln> mkdir test
PS C:\Users\admin\source\repos\SimpleAPISln> mkdir src
PS C:\Users\admin\source\repos\SimpleAPISln> ls
PS C:\Users\admin\source\repos\SimpleAPISln> cd s*
PS C:\Users\admin\source\repos\SimpleAPISln\src> dotnet new webapi -n SimpleAPI
"ASP.NET Core Web API" 템플릿이 성공적으로 생성되었습니다.
생성 후 작업 처리 중...
C:\Users\admin\source\repos\SimpleAPISln\src\SimpleAPI\SimpleAPI.csproj에서 'dotnet restore' 실행 중 ...
복원할 프로젝트를 확인하는 중...
PS C:\Users\admin\source\repos\SimpleAPISln\src>
PS C:\Users\admin\source\repos\SimpleAPISln> cd testPS C:\Users\admin\source\repos\SimpleAPISln\test> dotnet new xunit -n SimpleAPI.Test
"xUnit Test Project" 템플릿이 성공적으로 생성되었습니다.
PS C:\Users\admin\source\repos\SimpleAPISln\test\SimpleAPI.Test> cd..
PS C:\Users\admin\source\repos\SimpleAPISln\test> cd..
PS C:\Users\admin\source\repos\SimpleAPISln> dotnet new sln --name SimpleAPISln
PS C:\Users\admin\source\repos\SimpleAPISln> dotnet sln SimpleAPISln.sln add src/SimpleAPI/SimpleAPI.csproj test/SimpleAPI.Test/SimpleAPI.Test.csproj
'src\SimpleAPI\SimpleAPI.csproj' 프로젝트가 솔루션에 추가되었습니다.
'test\SimpleAPI.Test\SimpleAPI.Test.csproj' 프로젝트가 솔루션에 추가되었습니다.
PS C:\Users\admin\source\repos\SimpleAPISln> dotnet add test/SimpleAPI.TEST/SimpleAPI.TEST.csproj reference src/SimpleAPI/SimpleAPI.csproj
프로젝트에 '..\..\src\SimpleAPI\SimpleAPI.csproj' 참조가 추가되었습니다.
SimpleAPI 프로젝트와, SimpleAPI.Test 프로젝트를 생성하고, Unit 프로젝트에 API 프로젝트 참조를 추가하였다.
Visual Studio Code에서 솔루션을 열고 아래와 같이 파일을 수정한다.
using Xunit;
using SimpleAPI.Controllers;
using System.Collections.Generic;
namespace SimpleAPI.Test;
public class UnitTest1
{
WeatherForecastController controller = new WeatherForecastController();
[Fact]
public void GetReturnsMyName()
{
var returnValue = controller.Get();
int result = 0;
using (IEnumerator<WeatherForecast> enumerator = returnValue.GetEnumerator())
{
while (enumerator.MoveNext())
result++;
}
Assert.Equal(5, result);
}
/*
[Fact]
public void Test1()
{
}
*/
}
내용은, WeatherForecastController.cs 파일의 Get method의 결과 리스트의 count가 5개인지 확인하는 내용이다.
테스트를 실행해보자.
PS C:\Users\admin\source\repos\SimpleAPISln\test\SimpleAPI.Test> dotnet test
복원할 프로젝트를 확인하는 중...
복원할 모든 프로젝트가 최신 상태입니다.
SimpleAPI -> C:\Users\admin\source\repos\SimpleAPISln\src\SimpleAPI\bin\Debug\net6.0\SimpleAPI.dll
SimpleAPI.Test -> C:\Users\admin\source\repos\SimpleAPISln\test\SimpleAPI.Test\bin\Debug\net6.0\SimpleAPI.Test.dll
C:\Users\admin\source\repos\SimpleAPISln\test\SimpleAPI.Test\bin\Debug\net6.0\SimpleAPI.Test.dll(.NETCoreApp,Version=v6.0)에 대한 테스트 실행
Microsoft (R) Test Execution Command Line Tool Version 17.1.0
Copyright (c) Microsoft Corporation. All rights reserved.
테스트 실행을 시작하는 중입니다. 잠시 기다려 주세요...
지정된 패턴과 일치한 총 테스트 파일 수는 1개입니다.
통과! - 실패: 0, 통과: 1, 건너뜀: 0, 전체: 1, 기간: < 1 ms - SimpleAPI.Test.dll (net6.0)
TEST 성공한 것을 확인할 수 있다.
소스를 Github에 올려보자.
PS C:\Users\admin\source\repos\SimpleAPISln> git --version
git version 2.33.1.windows.1
PS C:\Users\admin\source\repos\SimpleAPISln> git init
PS C:\Users\admin\source\repos\SimpleAPISln> git add .
PS C:\Users\admin\source\repos\SimpleAPISln> git commit -m "Initial Commit"
PS C:\Users\admin\source\repos\SimpleAPISln> git remote add origin https://github.com/repository.git
PS C:\Users\admin\source\repos\SimpleAPISln> git branch -M main
PS C:\Users\admin\source\repos\SimpleAPISln> git push -u origin main
Git repository에서 소스 코드를 확인할 수 있다.
728x90
반응형
'Azure' 카테고리의 다른 글
.NET 6 API with Azure Pipeline] 3. Trigger, Unit Test Task (0) | 2022.05.27 |
---|---|
.NET 6 API with Azure Pipeline] 2. Azure Pipeline, Free tier 설정 (0) | 2022.05.27 |
댓글