다음을 통해 공유


빠른 시작: 앱을 게시하는 GitHub 워크플로 만들기

이 빠른 시작에서는 소스 코드에서 .NET 앱을 게시하는 GitHub 워크플로를 만드는 방법을 알아봅니다. GitHub에서 대상으로 .NET 앱을 자동으로 게시하는 것을 CD(연속 배포)라고 합니다. 이 빠른 시작 가이드에서는 애플리케이션을 Azure에 게시하는 방법을 알아봅니다. 애플리케이션을 게시할 수 있는 다양한 장소가 있지만, 이번에는 Azure에 집중하겠습니다.

필수 조건

  • GitHub 계정
  • .NET 소스 코드 리포지토리입니다.
  • 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
  • ASP.NET Core 웹앱입니다.
  • Azure App Service 리소스입니다.

게시 프로필 추가

Azure에 앱을 게시하려면 애플리케이션의 App Service 인스턴스에 대한 Azure Portal을 엽니다. 리소스 개요에서 게시 프로필 가져오기를 선택하고 *.PublishSetting 파일을 로컬에 저장합니다.

Azure Portal, 애플리케이션 서비스 리소스: 게시 프로필 가져오기

경고

게시 프로필에는 Azure App Service 리소스에 액세스하기 위한 자격 증명과 같은 중요한 정보가 포함되어 있습니다. 이 정보는 항상 매우 신중하게 처리되어야 합니다.

GitHub 리포지토리의 설정 으로 이동하고 왼쪽 탐색 메뉴에서 비밀을 선택합니다. 새 리포지토리 비밀을 선택하여 새 비밀을 추가합니다.

GitHub / 설정 / 비밀: 새 리포지토리 비밀 추가

AZURE_PUBLISH_PROFILE를 입력하고, 게시 프로필의 XML 콘텐츠를 Value 텍스트 영역에 붙여넣습니다. 비밀 추가를 선택합니다. 자세한 내용은 암호화된 비밀을 참조하세요.

워크플로 파일 만들기

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

중요합니다

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

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

publish-app.yml 새 파일을 만들고 다음 YML 콘텐츠를 복사하여 붙여넣습니다.

name: publish

on:
  push:
    branches: [ production ]

env:
  AZURE_WEBAPP_NAME: DotNetWeb
  AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
  DOTNET_VERSION: '6.0.401' # The .NET SDK version to use

jobs:
  publish:

    runs-on: ubuntu-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: |
        cd DotNet.WebApp
        dotnet build --configuration Release --no-restore
        dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
    - name: Test
      run: |
        cd DotNet.WebApp.Tests
        dotnet test --no-restore --verbosity normal
      
    - uses: azure/webapps-deploy@v2
      name: Deploy
      with:
        app-name: ${{ env.AZURE_WEBAPP_NAME }}
        publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
        package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'

이전 워크플로 컴퍼지션에서:

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

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

    on:
      push:
        branches: [ production ]
    
    • production 지점에서 push이(가) 발생할 때 트리거됩니다.
  • 노드는 env 명명된 환경 변수(env var)를 정의합니다.

    env:
      AZURE_WEBAPP_NAME: DotNetWeb
      AZURE_WEBAPP_PACKAGE_PATH: '.' # Set this to the path to your web app project, defaults to the repository root:
      DOTNET_VERSION: '6.0.401' # The .NET SDK version to use
    
    • 환경 변수 AZURE_WEBAPP_NAME 에 값 DotNetWeb이 할당됩니다.
    • 환경 변수 AZURE_WEBAPP_PACKAGE_PATH 에 값 '.'이 할당됩니다.
    • 환경 변수 DOTNET_VERSION 에 값 '6.0.401'이 할당됩니다. 환경 변수는 나중에 GitHub Action을 dotnet-versionactions/setup-dotnet@v3 지정하기 위해 참조됩니다.
  • 노드는 jobs 워크플로에서 수행할 단계를 빌드합니다.

    jobs:
      publish:
    
        runs-on: ubuntu-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: |
            cd DotNet.WebApp
            dotnet build --configuration Release --no-restore
            dotnet publish -c Release -o ../dotnet-webapp -r linux-x64 --self-contained true /p:UseAppHost=true
        - name: Test
          run: |
            cd DotNet.WebApp.Tests
            dotnet test --no-restore --verbosity normal
          
        - uses: azure/webapps-deploy@v2
          name: Deploy
          with:
            app-name: ${{ env.AZURE_WEBAPP_NAME }}
            publish-profile: ${{ secrets.AZURE_PUBLISH_PROFILE }}
            package: '${{ env.AZURE_WEBAPP_PACKAGE_PATH }}/dotnet-webapp'
    
    • Ubuntu의 최신 버전에서 실행되는 단일 작업이 있습니다 publish .
    • actions/setup-dotnet@v3 GitHub 작업은 환경 변수에서 지정된 버전으로 .NET SDK를 DOTNET_VERSION 설정하는 데 사용됩니다.
    • dotnet restore 명령이 호출됩니다.
    • dotnet build 명령이 호출됩니다.
    • dotnet publish 명령이 호출됩니다.
    • dotnet test 명령이 호출됩니다.
    • azure/webapps-deploy@v2 GitHub 작업은 지정된 publish-profilepackage로 앱을 배포합니다.
      • AZURE_PUBLISH_PROFILE 리포지토리 비밀에서 publish-profile가 할당됩니다.

워크플로 상태 배지 만들기

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

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

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

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

    GitHub: 상태 배지 만들기

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

    GitHub: 상태 배지 Markdown 복사하기

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

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

워크플로 상태 배지 게시 예제

전달하기 실패 상태 없음
GitHub: 성공 배지 게시 GitHub: 실패 표시 배지 게시 GitHub: 상태 없음 배지 게시

참고하십시오

다음 단계