Share via


Azure Static Web Apps CLI를 사용하여 정적 웹앱 배포

Azure Static Web Apps CLI(SWA CLI)에는 현재 프로젝트를 Azure Static Web Apps에 배포하는 deploy 명령이 있습니다.

일반적인 배포 시나리오는 다음과 같습니다.

  • API가 없는 프런트 엔드 앱
  • API가 포함된 프런트 엔드 앱
  • Blazor 앱

배포 토큰

SWA CLI는 CI/CD 환경에서 설정을 사용하도록 설정하기 위해 배포 토큰을 사용한 배포를 지원합니다.

다음에서 배포 토큰을 가져올 수 있습니다.

  • Azure Portal: 홈 → Static Web App → 인스턴스 → 개요 → 배포 토큰 관리

  • Azure CLI: secrets list 명령 사용:

    az staticwebapp secrets list --name <APPLICATION_NAME> --query "properties.apiKey"
    
  • Azure Static Web Apps CLI: deploy 명령 사용:

    swa deploy --print-token
    

그런 다음, --deployment-token <TOKEN>에 토큰 값을 사용하거나 SWA_CLI_DEPLOYMENT_TOKEN라는 환경 변수를 만들어 배포 토큰으로 설정할 수 있습니다.

Important

배포 토큰을 퍼블릭 리포지토리 저장하지 마세요.

API 없이 프런트 엔드 앱 배포

API 없이 프런트 엔드 애플리케이션을 Azure Static Web Apps에 배포할 수 있습니다. 프런트 엔드 애플리케이션에 빌드 단계가 필요한 경우 swa build를 실행하거나 애플리케이션 빌드 지침을 참조하세요.

배포 구성 요구 사항에 가장 적합한 옵션을 선택합니다.

  • 옵션 1: 배포하려는 빌드 폴더에서 deploy 명령을 실행합니다.

    cd build/
    swa deploy
    

    참고 항목

    빌드 폴더에는 배포할 앱의 정적 콘텐츠가 포함되어야 합니다.

  • 옵션 2: 특정 폴더를 배포할 수도 있습니다.

    1. 프런트 엔드 애플리케이션에 빌드 단계가 필요한 경우 swa build를 실행하거나 애플리케이션 빌드 지침을 참조하세요.

    2. 앱 배포

    swa deploy ./my-dist
    

API를 사용하여 프런트 엔드 앱 배포

다음 단계를 사용하여 API 엔드포인트가 있는 애플리케이션을 배포합니다.

  1. 프런트 엔드 애플리케이션에 빌드 단계가 필요한 경우 swa build를 실행하거나 애플리케이션 빌드 지침을 참조하세요.

  2. staticwebapp.config.json 파일에서 API 언어 런타임 버전이 올바르게 설정되었는지 확인하세요. 예는 다음과 같습니다.

    {
      "platform": {
        "apiRuntime": "node:16"
      }
    }
    

    참고 항목

    프로젝트에 staticwebapp.config.json 파일이 없으면 outputLocation 폴더 아래에 파일을 추가합니다.

  3. 앱 배포

    swa deploy ./my-dist --api-location ./api
    

Blazor 앱 배포

다음 단계를 사용하여 Blazor 앱을 배포할 수 있습니다.

  1. 릴리스 모드에서 Blazor 앱을 빌드합니다.

    dotnet publish -c Release -o bin/publish
    
  2. 프로젝트의 루트에서 배포 명령을 실행합니다.

    swa deploy ./bin/publish/wwwroot --api-location ./Api
    

구성 파일을 사용하여 배포

참고 항목

outputLocation에 대한 경로는 appLocation을 기준으로 해야 합니다.

단일 구성 항목으로 프로젝트에서 swa-cli.config.json 구성 파일을 사용하는 경우 다음 단계를 실행하여 애플리케이션을 배포할 수 있습니다.

참고로 단일 구성 항목의 예는 다음 코드 조각과 같습니다.

{
  "configurations": {
    "my-app": {
      "appLocation": "./",
      "apiLocation": "api",
      "outputLocation": "frontend",
      "start": {
        "outputLocation": "frontend"
      },
      "deploy": {
        "outputLocation": "frontend"
      }
    }
  }
}
  1. 프런트 엔드 애플리케이션에 빌드 단계가 필요한 경우 swa build를 실행하거나 애플리케이션 빌드 지침을 참조하세요.

  2. 앱을 배포합니다.

swa deploy

구성 항목이 여러 개 있는 경우 항목 ID를 제공하여 사용할 항목을 지정할 수 있습니다.

swa deploy my-otherapp

옵션

다음은 swa deploy와 함께 사용할 수 있는 옵션입니다.

  • -a, --app-location <path>: 프런트 엔드 애플리케이션의 소스 코드를 포함하는 폴더입니다.(기본값: “.”)
  • -i, --api-location <path>: API 애플리케이션의 소스 코드를 포함하는 폴더입니다.
  • -O, --output-location <path>: 프런트 엔드 애플리케이션의 기본 제공 소스를 포함하는 폴더입니다. 경로는 --app-location을 기준으로 합니다.(기본값: “.”)
  • -w, --swa-config-location <swaConfigLocation>: staticwebapp.config.json 파일이 있는 디렉터리입니다.
  • -d, --deployment-token <secret>: Static Web Apps 인증에 사용되는 비밀 토큰입니다.
  • -dr, --dry-run: 실제로 실행하지 않고 배포 프로세스를 시뮬레이션합니다(기본값: false).
  • -pt, --print-token: 배포 토큰 인쇄입니다(기본값: false).
  • --env [environment]: 프로젝트를 배포할 배포 환경 유형입니다(기본값: “preview”).
  • -S, --subscription-id <subscriptionId>: 이 프로젝트에서 사용하는 Azure 구독 ID입니다(기본값: process.env.AZURE_SUBSCRIPTION_ID).
  • -R, --resource-group <resourceGroupName>: 이 프로젝트에서 사용하는 Azure 리소스 그룹입니다.
  • -T, --tenant-id <tenantId>: Azure 테넌트 ID입니다(기본값: process.env.AZURE_TENANT_ID).
  • -C, --client-id <clientId>: Azure 클라이언트 ID입니다.
  • -CS, --client-secret <clientSecret>: Azure 클라이언트 암호입니다.
  • -n, --app-name <appName>: Azure Static Web App 애플리케이션 이름
  • -cc, --clear-credentials: 로그인하기 전에 영구 자격 증명을 지웁니다(기본값: false).
  • -u, --use-keychain: 영구 자격 증명에 운영 체제 네이티브 키체인을 사용하여 사용 가능하도록 설정합니다(기본값: true).
  • -nu, --no-use-keychain: 운영 체제 네이티브 키체인을 사용하지 않도록 설정합니다.
  • -h, --help: 명령에 대한 도움말을 표시합니다.

사용

배포 토큰을 사용하여 배포합니다.

swa deploy ./dist/ --api-location ./api/ --deployment-token <TOKEN>

환경 변수에서 배포 토큰을 사용하여 배포합니다.

SWA_CLI_DEPLOYMENT_TOKEN=123 swa deploy ./dist/ --api-location ./api/

swa-cli.config.json을 사용하여 배포합니다.

swa deploy
swa deploy myconfig

배포 토큰을 인쇄합니다.

swa deploy --print-token

특정 환경에 배포합니다.

swa deploy --env production

다음 단계