빠른 시작: 앱을 게시하는 GitHub 워크플로 만들기
이 빠른 시작에서는 소스 코드에서 .NET 앱을 게시하는 GitHub 워크플로를 만드는 방법을 알아봅니다. GitHub에서 대상으로 .NET 앱을 자동으로 게시하는 것을 CD(지속적인 배포)라고 합니다. 애플리케이션을 게시할 수 있는 대상에는 여러 가지가 있는데, 이 빠른 시작에서는 Azure에 게시합니다.
필수 조건
- GitHub 계정
- .NET 소스 코드 리포지토리
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- ASP.NET Core 웹앱
- Azure App Service 리소스
게시 프로필 추가
Azure에 앱을 게시하려면 애플리케이션의 App Service 인스턴스에 대한 Azure Portal을 엽니다. 리소스 개요에서 게시 프로필 가져오기를 선택하고 *.PublishSetting 파일을 로컬로 저장합니다.
Warning
게시 프로필에는 Azure App Service 리소스에 액세스하기 위한 자격 증명과 같은 중요한 정보가 포함되어 있습니다. 이 정보는 항상 매우 신중하게 처리되어야 합니다.
GitHub 리포지토리의 설정으로 이동하고 왼쪽 탐색 메뉴에서 비밀을 선택합니다. 새 리포지토리 비밀을 선택하여 새 비밀을 추가합니다.
AZURE_PUBLISH_PROFILE
을 이름으로 입력하고 게시 프로필의 XML 콘텐츠를 값 텍스트 영역에 붙여넣습니다. 비밀 추가를 선택합니다. 자세한 내용은 암호화된 비밀을 참조하세요.
워크플로 파일 만들기
GitHub 리포지토리에서 .github/workflows 디렉터리에 새 YAML 파일을 추가합니다. 워크플로의 용도를 명확하게 나타내는 의미 있는 파일 이름을 선택합니다. 자세한 내용은 워크플로 파일을 참조하세요
Important
GitHub를 사용하려면 워크플로 컴퍼지션 파일을 .github/workflows 디렉터리 내에 배치해야 합니다.
워크플로 파일은 일반적으로 jobs.<job_id>/steps[*]
를 통해 하나 이상의 GitHub Action의 컴퍼지션을 정의합니다. 자세한 내용은 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'
이 할당됩니다. 환경 변수는 나중에actions/setup-dotnet@v3
GitHub Action의dotnet-version
을 지정하기 위해 참조됩니다.
- 환경 변수
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 Action은DOTNET_VERSION
환경 변수에서 지정된 버전으로 .NET SDK를 설정하는 데 사용됩니다.dotnet restore
명령이 호출됩니다.dotnet build
명령이 호출됩니다.dotnet publish
명령이 호출됩니다.dotnet test
명령이 호출됩니다.azure/webapps-deploy@v2
GitHub Action은 지정된publish-profile
및package
를 사용하여 앱을 배포합니다.publish-profile
은AZURE_PUBLISH_PROFILE
리포지토리 비밀에서 할당됩니다.
- Ubuntu의 최신 버전에서 실행되는
워크플로 상태 배지 만들기
GitHub 리포지토리가 리포지토리 디렉터리의 루트에 README.md 파일을 갖는 것은 일반적인 명명법입니다. 마찬가지로 다양한 워크플로에 대한 최신 상태를 보고하는 것이 좋습니다. 모든 워크플로는 README.md 파일 내에서 시각적으로 매력적인 상태 배지를 생성할 수 있습니다. 워크플로 상태 배지를 추가하려면 다음을 수행합니다.
GitHub 리포지토리에서 작업 탐색 옵션을 선택합니다.
모든 리포지토리 워크플로가 왼쪽에 표시되며, 원하는 워크플로와 줄임표(...) 단추를 선택합니다.
- 줄임표(...) 단추는 선택한 워크플로의 메뉴 옵션을 확장합니다.
상태 배지 만들기 메뉴 옵션을 선택합니다.
상태 배지 복사 Markdown 단추를 선택합니다.
Markdown을 README.md 파일에 붙여넣고, 파일을 저장하고, 변경 내용을 커밋하고 푸시합니다.
자세한 내용은 워크플로 상태 배지 추가를 참조하세요.
워크플로 상태 배지 게시 예제
전달 | 실패 | 상태 없음 |
---|---|---|
참고 항목
다음 단계
.NET