Share via


빠른 시작: 빌드 유효성 검사 GitHub 워크플로 만들기

이 빠른 시작에서는 GitHub 워크플로를 만들어 GitHub에서 .NET 소스 코드의 컴파일 유효성을 검사하는 방법을 알아봅니다. .NET 코드 컴파일은 코드 업데이트 품질을 보장하기 위해 수행할 수 있는 가장 기본적인 유효성 검사 단계 중 하나입니다. 코드가 컴파일(또는 빌드)되지 않는 경우 쉽게 억제할 수 있으며 코드를 수정해야 한다는 분명한 신호여야 합니다.

필수 조건

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

워크플로 파일 만들기

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

Important

GitHub에서는 워크플로 컴퍼지션 파일을 .github/workflows 디렉터리 내에 배치해야 합니다.

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

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

name: build

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

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

jobs:
  build:

    name: build-${{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: build(은)는 이름을 정의합니다. "빌드"는 워크플로 상태 배지에 표시됩니다.

    name: build
    
  • 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:
    
        name: build-${{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
    
    • <os>(이)가 strategy/matrix의 운영 체제 이름인 build-<os>라는 단일 작업이 있습니다. nameruns-on 요소는 matrix/os의 각 값에 대해 동적입니다. 이는 최신 버전의 Ubuntu, Windows 및 macOS에서 실행됩니다.

    • actions/setup-dotnet@v3 GitHub Action은 DOTNET_VERSION 환경 변수에서 지정된 버전으로 .NET SDK를 설정하는 데 사용됩니다.

    • (선택 사항) .NET 워크로드에 따라 추가 단계가 필요할 수 있습니다. 이 예제에서는 생략되지만 앱을 빌드하기 위해 추가 도구가 설치되어 있어야 할 수 있습니다.

      • 예를 들어 AoT(Ahead-of-Time) 컴파일을 사용하여 ASP.NET Core Blazor WebAssembly 애플리케이션을 빌드할 때 복원/빌드/게시 작업을 실행하기 전에 해당 워크로드를 설치합니다.
      - name: Install WASM Tools Workload
        run: dotnet workload install wasm-tools
      

      .NET 워크로드에 대한 자세한 내용은 dotnet workload install(을)를 참조하세요.

    • dotnet restore 명령이 호출됩니다.

    • dotnet build 명령이 호출됩니다.

이 경우 워크플로 파일을 애플리케이션을 빌드하는 다양한 단계를 나타내는 컴퍼지션으로 간주합니다. 많은 .NET CLI 명령을 사용할 수 있으며, 대부분 GitHub Action의 컨텍스트에서 사용할 수 있습니다.

워크플로 상태 배지 만들기

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: build passing badge GitHub: build failing badge GitHub: build no-status badge

참고 항목

다음 단계