GitHub Pages를 사용하여 독립 실행형 Blazor WebAssembly ASP.NET Core 호스트 및 배포

Note

이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 10 버전 참조하세요.

Warning

이 버전의 ASP.NET Core 더 이상 지원되지 않습니다. 자세한 내용은 .NET 및 .NET Core 지원 정책 참조하세요. 현재 릴리스는 이 문서의 .NET 10 버전 참조하세요.

이 문서에서는 Blazor WebAssembly 사용하여 독립 실행형 호스트하고 배포하는 방법을 설명합니다.

Blazor WebAssembly 앱의 GitHub Pages 배포에 대한 다음 지침은 GitHub Pages에 배포된 라이브 도구를 사용하는 개념을 보여 줍니다. 이 도구는 ASP.NET Core 설명서 작성자가 문서 markdown에 대한 API 설명서에 대한 XREF(상호 참조) 링크를 만드는 데 사용됩니다.

GitHub 페이지 설정

  • 작업>일반
    • 작업 권한
      • 엔터프라이즈 작업을 허용하고, 엔터프라이즈가 아닌 작업 및 재사용 가능한 워크플로를 선택합니다.> 사용(선택됨)
      • GitHub> 사용으로 만든 작업 허용(선택됨)
      • 작업 및 재사용 가능한 워크플로 허용>stevesandersonms/ghaction-rewrite-base-href@{SHA HASH},
    • 워크플로 권한>리포지토리 콘텐츠 및 패키지 읽기 권한
  • Pages>빌드 및 배포
    • Source>GitHub Actions
    • 선택한 워크플로: 정적 HTML 및 Xref 생성기 도구에 대한 정적 배포 액션 스크립트를 Xref 생성기 static.yml 파일을 기반으로 합니다. 파일의 구성은 다음 섹션에서 설명합니다.
    • 사용자 지정 도메인: 이 지침에서 다루지 않는 사용자 지정 도메인을 사용하려는 경우 설정합니다. 자세한 내용은 GitHub Pages 사이트에 대한 사용자 지정 도메인 구성 참조하세요.
    • HTTPS> 사용 적용(선택됨)

† SHA 해시({SHA HASH} 자리 표시자)는 최신 stevesandersonms/ghaction-rewrite-base-href GitHub Action 릴리스 버전의 SHA 해시를 나타냅니다. 특정 버전에 고정하면 v1와 같은 버전 모니커를 사용하는 손상된 최신 릴리스가 배포를 위태롭게 할 위험이 줄어듭니다. 주기적으로, 최신 기능과 버그 수정을 위해 SHA를 최신 릴리스로 업데이트하세요.

SHA 해시를 얻으려면:

  1. SteveSandersonMS/ghaction-rewrite-base-href 작업 GitHub 리포지토리로 이동하세요.
  2. 페이지의 오른쪽에 있는 릴리스 아래에서 릴리스를 선택하십시오.
  3. 짧은 SHA 해시를 찾고 선택하십시오(예: 5b54862).
  4. Either:
    • 브라우저의 주소 표시줄에 있는 URL에서 전체 SHA를 가져옵니다.
    • 페이지 오른쪽에서 복사 단추를 선택하여 SHA를 클립보드에 배치합니다.

자세한 내용은 워크플로에서 미리 작성된 문서 블록 사용: SHA 사용(GitHub 설명서) 참조하세요.

정적 배포 스크립트 구성

Xref 생성기 static.yml 파일

배포를 위해 스크립트에서 다음 항목을 구성합니다.

  • 디렉터리 게시(PUBLISH_DIR): Blazor WebAssembly 앱이 게시된 리포지토리 폴더의 경로를 사용합니다. 앱은 특정 .NET 버전에 대해 컴파일되며 버전에 대한 경로 세그먼트가 일치해야 합니다. 예: BlazorWebAssemblyXrefGenerator/bin/Release/net9.0/publish/wwwroot은 .NET 9 SDK에 net9.0TFM(Target Framework Moniker)를 채택하는 앱의 경로입니다.
  • 푸시 경로(on:push:paths): 앱의 리포지토리 폴더와 와일드카드를 ** 일치하도록 푸시 경로를 설정합니다. 예: BlazorWebAssemblyXrefGenerator/**.
  • .NET SDK 버전(dotnet-version 액션을 통한 actions/setup-dotnet): 현재 버전을 '최신'으로 설정할 방법이 없습니다 (기능 요청에 찬성하려면 dotnet-version을 'latest'로 지정 가능하게 허용 (actions/setup-dotnet #497)을 참조하십시오). 적어도 앱의 프레임워크 버전만큼 높은 SDK 버전을 설정합니다.
  • 게시 경로(dotnet publish 명령): 게시 폴더 경로를 앱의 리포지토리 폴더로 설정합니다. 예: dotnet publish BlazorWebAssemblyXrefGenerator -c Release.
  • 기본 HREF(base_hrefSteveSandersonMS/ghaction-rewrite-base-href 작업): 최신 버전 작업의 SHA 해시를 설정합니다(지침은 GitHub 페이지 설정 섹션을 참조하세요). 앱의 기본 href을 저장소의 이름으로 설정하세요. 예: Blazor 샘플의 리포지토리 소유자가 dotnet. Blazor 샘플의 리포지토리 이름은 blazor-samples. Xref 생성기 도구가 GitHub Pages에 배포되면 해당 웹 주소는 리포지토리의 이름(https://dotnet.github.io/blazor-samples/)을 기반으로 합니다. 앱이 배포될 때, /blazor-samples/ 작업에 의해 앱의 base_hrefghaction-rewrite-base-href 태그에 쓸 수 있도록 기본 href wwwroot/index.html<base>로 설정됩니다. 자세한 내용은 ASP.NET Core Blazor 앱 기본 경로 참조하세요.

GitHub 호스팅된 Ubuntu(최신) 서버에는 .NET SDK 버전이 미리 설치되어 있습니다. 미리 설치된 .NET SDK가 앱을 컴파일하기에 충분한 경우 actions/setup-dotnet 작업 단계를 static.yml 스크립트에서 제거할 수 있습니다. ubuntu-latest 대해 설치된 .NET SDK를 확인하려면 다음을 수행합니다.

  1. 사용 가능한 이미지 섹션으로 이동합니다 actions/runner-images GitHub 리포지토리.
  2. ubuntu-latest 이미지를 찾습니다. 이는 첫 번째 테이블 행입니다.
  3. Included Software 열에서 링크를 선택합니다.
  4. .NET 도구 섹션으로 스크롤하여 이미지와 함께 설치된 .NET SDK를 확인합니다.

배포 정보

페이지를 배포하는 기본 GitHub 작업은 밑줄(예: _framework 폴더)으로 시작하는 폴더 배포를 건너뜁니다. 밑줄로 시작하는 폴더를 배포하려면 빈 .nojekyll 파일을 앱 리포지토리의 루트에 추가합니다. 예: Xref 생성기 .nojekyll 파일

첫 번째 앱 배포 전에 이 단계를 수행합니다. Git은 JS같은 JavaScript(blazor.webassembly.js) 파일을 텍스트로 처리하고 배포 파이프라인에서 CRLF(캐리지 리턴 라인 피드)에서 LF(줄 바꿈)로 줄 끝을 변환합니다. 이러한 JS 파일의 변경은 Blazor가 클라이언트에 보내는 파일 해시와 다른 해시를 생성합니다. 불일치로 인해 클라이언트에서 무결성 검사 오류가 발생합니다. 이 문제를 해결하는 한 가지 방법은 앱의 자산을 Git 분기에 추가하기 전에 .gitattributes 행이 있는 *.js binary 파일을 추가하는 것입니다. 이 *.js binary 줄은 JS 파일을 이진 파일로 처리하도록 Git을 구성하여, 파일이 배포 파이프라인에서 처리되지 않으며 클라이언트 측 무결성 검사가 성공적으로 통과하게 합니다. 자세한 내용은 ASP.NET Core Blazor WebAssembly 캐싱 및 무결성 검사 실패 참조하세요. 예: Xref 생성기 .gitattributes 파일

single Page Apps for GitHub Pages(rafrex/spa-github-pages GitHub 리포지토리) 기반 URL 다시 쓰기를 처리하려면 다음을 수행합니다.

GitHub Pages는 기본적으로 Brotli 압축 리소스 사용을 지원하지 않습니다. Brotli를 사용하려면: