{"meta":{"title":"Azure App Service에 Node.js 배포하기","intro":"Node.js 프로젝트를 지속적인 배포(CD) 워크플로의 일환으로 Azure App Service에 배포하는 방법을 알아봅니다.","product":"GitHub Actions","breadcrumbs":[{"href":"/ko/actions","title":"GitHub Actions"},{"href":"/ko/actions/how-tos","title":"사용법"},{"href":"/ko/actions/how-tos/deploy","title":"배포"},{"href":"/ko/actions/how-tos/deploy/deploy-to-third-party-platforms","title":"타사 플랫폼에 배포"},{"href":"/ko/actions/how-tos/deploy/deploy-to-third-party-platforms/nodejs-to-azure-app-service","title":"Node.js를 Azure App Service에 배포"}],"documentType":"article"},"body":"# Azure App Service에 Node.js 배포하기\n\nNode.js 프로젝트를 지속적인 배포(CD) 워크플로의 일환으로 Azure App Service에 배포하는 방법을 알아봅니다.\n\n## 필수 조건\n\nGitHub Actions 워크플로를 만들기 전에 먼저 다음 설정 단계를 완료해야 합니다.\n\n1. Azure App Service 요금제를 만듭니다.\n\n   예를 들어 Azure CLI를 사용하여 새 App Service 요금제를 만들 수 있습니다.\n\n   ```bash copy\n   az appservice plan create \\\n      --resource-group MY_RESOURCE_GROUP \\\n      --name MY_APP_SERVICE_PLAN \\\n      --is-linux\n   ```\n\n   위의 명령에서 `MY_RESOURCE_GROUP`을 기존 Azure 리소스 그룹으로 바꾸고 `MY_APP_SERVICE_PLAN`을 App Service 요금제의 새 이름으로 바꿉니다.\n\n   [Azure CLI](https://docs.microsoft.com/cli/azure/) 사용에 대한 자세한 내용은 Azure 설명서를 참조하세요.\n\n   * 인증은 [Azure CLI로 로그인](https://docs.microsoft.com/cli/azure/authenticate-azure-cli)을 참조하세요.\n   * 새 리소스 그룹을 만들어야 하는 경우 [az group](https://docs.microsoft.com/cli/azure/group?view=azure-cli-latest#az_group_create)을 참조하세요.\n\n2. 웹앱 만들기\n\n   예를 들어 Azure CLI 사용하여 Node.js 런타임으로 Azure App Service 웹앱을 만들 수 있습니다.\n\n   ```bash copy\n   az webapp create \\\n       --name MY_WEBAPP_NAME \\\n       --plan MY_APP_SERVICE_PLAN \\\n       --resource-group MY_RESOURCE_GROUP \\\n       --runtime \"NODE|14-lts\"\n   ```\n\n   위의 명령에서 매개 변수를 고유한 값으로 바꿉니다. 여기서 `MY_WEBAPP_NAME`은 웹앱의 새 이름입니다.\n\n3. Azure 게시 프로필을 구성하고 `AZURE_WEBAPP_PUBLISH_PROFILE` 비밀을 만듭니다.\n\n   게시 프로필을 사용하여 Azure 배포 자격 증명을 생성합니다. 자세한 내용은 Azure 설명서의 [배포 자격 증명 생성](https://docs.microsoft.com/azure/app-service/deploy-github-actions?tabs=applevel#generate-deployment-credentials)을 참조하세요.\n\nGitHub 리포지토리에서 게시 프로필의 내용이 포함된 비밀 이름을 `AZURE_WEBAPP_PUBLISH_PROFILE` 만듭니다. 비밀을 만드는 방법의 자세한 내용은 [GitHub Actions에서 비밀 사용](/ko/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository)을(를) 참조하세요.\n\n1. 필요에 따라 배포 환경을 구성합니다. 환경은 일반적인 배포 대상(예: `production`, `staging` 또는 `development`)을 설명하는 데 사용됩니다. 워크플로가 GitHub Actions 환경에 배포되면 환경이 리포지토리의 기본 페이지에 표시됩니다. 환경을 사용하여 작업이 진행되기 전에 승인을 요구하거나, 워크플로를 트리거할 수 있는 분기를 제한하거나, 사용자 지정 배포 보호 규칙으로 배포를 제어하거나, 비밀 정보에 대한 액세스를 제한할 수 있습니다. 환경을 만드는 방법에 대한 자세한 내용은 [배포 환경 관리](/ko/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments)을(를) 참조하세요.\n\n## 워크플로 만들기\n\n필수 구성 요소를 완료한 후에는 워크플로 만들기를 진행할 수 있습니다.\n\n다음 예제 워크플로에서는 `main` 분기에 푸시가 있을 때 Azure App Service Node.js 프로젝트를 빌드, 테스트 및 배포하는 방법을 보여 줍니다.\n\n워크플로 `AZURE_WEBAPP_NAME` 키에서 `env`을 만든 웹앱의 이름으로 설정했는지 확인합니다. 프로젝트 경로가 리포지토리 루트가 아닌 경우 `AZURE_WEBAPP_PACKAGE_PATH`를 프로젝트 경로로 변경합니다.\n`10.x` 이외의 Node.js 버전을 사용하는 경우 `NODE_VERSION`을 사용 중인 버전으로 변경합니다.\n\n배포 환경을 구성한 경우 환경의 이름으로 `environment` 값을 변경합니다. 환경을 구성하지 않은 경우 또는 워크플로가 프라이빗 리포지토리에 있고 GitHub Enterprise Cloud를 사용하지 않는 경우 `environment` 키를 삭제합니다.\n\n```yaml copy\n# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.\n# 작업은 타사에서 제공하며\n# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.\n# 참조하세요.\n\n# 커밋 SHA에 작업을 고정하는 것이 좋습니다.\n# 최신 버전을 얻으려면 SHA를 업데이트해야 합니다.\n# 태그 또는 분기를 참조할 수도 있지만 경고 없이 작업이 변경될 수 있습니다.\n\non:\n  push:\n    branches:\n      - main\n\nenv:\n  AZURE_WEBAPP_NAME: MY_WEBAPP_NAME   # set this to your application's name\n  AZURE_WEBAPP_PACKAGE_PATH: '.'      # set this to the path to your web app project, defaults to the repository root\n  NODE_VERSION: '14.x'                # set this to the node version to use\n\njobs:\n  build:\n    runs-on: ubuntu-latest\n    steps:\n    - uses: actions/checkout@v6\n\n    - name: Set up Node.js\n      uses: actions/setup-node@v7\n      with:\n        node-version: ${{ env.NODE_VERSION }}\n        cache: 'npm'\n\n    - name: npm install, build, and test\n      run: |\n        npm install\n        npm run build --if-present\n        npm run test --if-present\n    - name: Upload artifact for deployment job\n      uses: actions/upload-artifact@v4\n      with:\n        name: node-app\n        path: .\n\n  deploy:\n    runs-on: ubuntu-latest\n    needs: build\n    environment:\n      name: 'production'\n      url: ${{ steps.deploy-to-webapp.outputs.webapp-url }}\n\n    steps:\n    - name: Download artifact from build job\n      uses: actions/download-artifact@v5\n      with:\n        name: node-app\n\n    - name: 'Deploy to Azure WebApp'\n      id: deploy-to-webapp\n      uses: azure/webapps-deploy@85270a1854658d167ab239bce43949edb336fa7c\n      with:\n        app-name: ${{ env.AZURE_WEBAPP_NAME }}\n        publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}\n        package: ${{ env.AZURE_WEBAPP_PACKAGE_PATH }}\n```\n\n## 추가 참고 자료\n\n* 원래의 워크플로 템플릿은 [`azure-webapps-node.yml`](https://github.com/actions/starter-workflows/blob/main/deployments/azure-webapps-node.yml)을 GitHub Actions `starter-workflows` 리포지토리에서 참조하세요.\n* 웹앱을 배포하는 데 사용되는 작업은 공식 Azure [`Azure/webapps-deploy`](https://github.com/Azure/webapps-deploy) 작업입니다.\n* Azure 배포하는 GitHub 작업 워크플로에 대한 자세한 예제는 [actions-workflow-samples](https://github.com/Azure/actions-workflow-samples) 리포지토리를 참조하세요.\n* Azure 웹 앱 문서의 [Create a Node.js web app in Azure](https://docs.microsoft.com/azure/app-service/quickstart-nodejs) 빠른 시작 가이드에서는 Visual Studio Code를 [Azure App Service 확장](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureappservice)과 함께 사용하는 방법을 보여줍니다."}