다음을 통해 공유


빠른 시작: 테스트 유효성 검사 GitHub 워크플로 만들기

이 빠른 시작에서는 GitHub 워크플로를 만들어 .NET 소스 코드를 테스트하는 방법을 알아봅니다. GitHub 내에서 .NET 코드를 자동으로 테스트하는 것은 CI(연속 통합)라고 하며, 여기서 끌어오기 요청 또는 소스 트리거 워크플로에 대한 변경 내용을 연습할 수 있습니다. 테스트는 소스 코드를 빌드하는 것과 함께 컴파일된 소스 코드가 작성자가 의도한 대로 작동하도록 합니다. 단위 테스트는 소스 코드 변경의 유효성을 보장하는 데 도움이 되는 즉각적인 피드백 루프 역할을 하는 경우가 많습니다.

필수 조건

  • GitHub 계정
  • .NET 소스 코드 리포지토리

워크플로 파일 만들기

GitHub 리포지토리에서 .github/workflows 디렉터리에 새 YAML 파일을 추가합니다. 워크플로의 용도를 명확하게 나타내는 의미 있는 파일 이름을 선택합니다. 자세한 내용은 워크플로 파일을 참조하세요

Important

GitHub를 사용하려면 워크플로 컴퍼지션 파일을 .github/workflows 디렉터리 내에 배치해야 합니다.

워크플로 파일은 일반적으로 jobs.<job_id>/steps[*]를 통해 하나 이상의 GitHub Action의 컴퍼지션을 정의합니다. 자세한 내용은 GitHub Actions의 워크플로 구문을 참조하세요.

build-and-test.yml이라는 새 파일을 만들고 다음 YML 콘텐츠를 복사하여 붙여넣습니다.

name: build and test

on:
  push:
  pull_request:
    branches: [ main ]
    paths:
    - '**.cs'
    - '**.csproj'

env:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  build-and-test:

    name: build-and-test-${{matrix.os}}
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest, macOS-latest]

    steps:
    - uses: actions/checkout@v3
    - name: Setup .NET Core
      uses: actions/setup-dotnet@v3
      with:
        dotnet-version: ${{ env.DOTNET_VERSION }}

    - name: Install dependencies
      run: dotnet restore
      
    - name: Build
      run: dotnet build --configuration Release --no-restore
    
    - name: Test
      run: dotnet test --no-restore --verbosity normal

위의 워크플로 컴퍼지션에서 다음을 수행합니다.

  • name: build and test는 이름을 정의합니다. 워크플로 상태 배지에 "build and test"가 표시됩니다.

    name: build and test
    
  • on 노드는 워크플로를 트리거하는 이벤트를 의미합니다.

    on:
      push:
      pull_request:
        branches: [ main ]
        paths:
        - '**.cs'
        - '**.csproj'
    
    • .cs 또는 .csproj 파일 이름 확장명으로 끝나는 파일이 변경된 main 분기에서 push 또는 pull_request가 발생하는 경우 트리거됩니다.
  • env 노드는 명명된 환경 변수(env var)를 정의합니다.

    env:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • 환경 변수 DOTNET_VERSION에 값 '6.0.401'이 할당됩니다. 환경 변수는 나중에 actions/setup-dotnet@v3 GitHub Action의 dotnet-version을 지정하기 위해 참조됩니다.
  • jobs 노드는 워크플로가 수행할 단계를 빌드합니다.

    jobs:
      build-and-test:
    
        name: build-and-test-${{matrix.os}}
        runs-on: ${{ matrix.os }}
        strategy:
          matrix:
            os: [ubuntu-latest, windows-latest, macOS-latest]
    
        steps:
        - uses: actions/checkout@v3
        - name: Setup .NET Core
          uses: actions/setup-dotnet@v3
          with:
            dotnet-version: ${{ env.DOTNET_VERSION }}
    
        - name: Install dependencies
          run: dotnet restore
          
        - name: Build
          run: dotnet build --configuration Release --no-restore
        
        - name: Test
          run: dotnet test --no-restore --verbosity normal
    
    • <os>strategy/matrix의 운영 체제 이름인 build-<os>라는 단일 작업이 있습니다. nameruns-on 요소는 matrix/os의 각 값에 대해 동적입니다. 이는 최신 버전의 Ubuntu, Windows 및 macOS에서 실행됩니다.
    • actions/setup-dotnet@v3 GitHub Action은 DOTNET_VERSION 환경 변수에서 지정된 버전으로 .NET SDK를 설정하는 데 사용됩니다.
    • dotnet restore 명령이 호출됩니다.
    • dotnet build 명령이 호출됩니다.
    • dotnet test 명령이 호출됩니다.

워크플로 상태 배지 만들기

GitHub 리포지토리가 리포지토리 디렉터리의 루트에 README.md 파일을 갖는 것은 일반적인 명명법입니다. 마찬가지로 다양한 워크플로에 대한 최신 상태를 보고하는 것이 좋습니다. 모든 워크플로는 README.md 파일 내에서 시각적으로 매력적인 상태 배지를 생성할 수 있습니다. 워크플로 상태 배지를 추가하려면 다음을 수행합니다.

  1. GitHub 리포지토리에서 작업 탐색 옵션을 선택합니다.

  2. 모든 리포지토리 워크플로가 왼쪽에 표시되며, 원하는 워크플로와 줄임표(...) 단추를 선택합니다.

    • 줄임표(...) 단추는 선택한 워크플로의 메뉴 옵션을 확장합니다.
  3. 상태 배지 만들기 메뉴 옵션을 선택합니다.

    GitHub: Create status badge

  4. 상태 배지 복사 Markdown 단추를 선택합니다.

    GitHub: Copy status badge Markdown

  5. Markdown을 README.md 파일에 붙여넣고, 파일을 저장하고, 변경 내용을 커밋하고 푸시합니다.

자세한 내용은 워크플로 상태 배지 추가를 참조하세요.

테스트 워크플로 상태 배지 예제

전달 실패 상태 없음
GitHub: test passing badge GitHub: test failing badge GitHub: test no-status badge

참고 항목

다음 단계