Node.js 如何使用YAML设置NestJS应用程序到Azure的构建和发布管道

Node.js 如何使用YAML设置NestJS应用程序到Azure的构建和发布管道,node.js,azure-devops,azure-pipelines,nestjs,azure-pipelines-release-pipeline,Node.js,Azure Devops,Azure Pipelines,Nestjs,Azure Pipelines Release Pipeline,我在理解和获取将NestJS应用程序部署到Azure DevOps(ADO)的构建/发布管道设置方面遇到困难 我正在部署到Azure中托管的Linux Web应用程序 据我所知,如果我使用类似于npm run start的东西在本地运行应用程序,它会在我的根项目目录下创建一个dist文件夹 因此,在为构建和部署编写YAML时。我的思考过程是: 运行NPM更新 运行npm运行build以生成应用程序并生成dist文件夹 将应用程序的内容(或只是dist文件夹?)复制到目标文件夹(/home/sit

我在理解和获取将NestJS应用程序部署到Azure DevOps(ADO)的构建/发布管道设置方面遇到困难

我正在部署到Azure中托管的Linux Web应用程序

据我所知,如果我使用类似于
npm run start
的东西在本地运行应用程序,它会在我的根项目目录下创建一个
dist
文件夹

因此,在为构建和部署编写YAML时。我的思考过程是:

  • 运行NPM更新
  • 运行
    npm运行build
    以生成应用程序并生成
    dist
    文件夹
  • 将应用程序的内容(或只是dist文件夹?)复制到目标文件夹(
    /home/site/wwwroot
  • 运行
    npm运行start:prod
    启动服务器
  • 以下是我迄今为止的YAML:

    trigger:
    - master
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    
    - task: UseNode@1
      inputs:
        version: '14.x'
        checkLatest: true
    
    - task: Npm@0
      displayName: Run NPM Update for NestJS
      inputs:
        cwd: '$(Build.SourcesDirectory)/ProjectName'
        command: update
    
    - task: Npm@0
      displayName: Build NestJS
      inputs:
        cwd: '$(Build.SourcesDirectory)/ProjectName'
        command: run
        arguments: "build"
    
    - task: CopyFiles@2
      inputs:
        Contents: 'dist/**'
        TargetFolder: '$(Build.ArtifactStagingDirectory)'
    
    问题是在构建过程完成后,我在
    /home/site/wwwroot/ProjectName
    中没有看到
    dist
    文件夹。有人能帮我解决我所缺少的吗


    另外,还有一个关于Azure DevOps的附带问题,
    $(Build.SourcesDirectory)
    $(Build.ArtifactStagingDirectory)
    指的是什么?这些环境变量是如何设置的以及在哪里设置的?

    将您的应用部署到Azure中托管的应用程序。您需要使用或

    Azure devops是构建应用程序并将其部署到服务器(例如Azure上的Linux Web应用程序)的工具,它不用于托管应用程序

    $(Build.ArtifactStagingDirectory)
    参考运行管道的代理计算机的文件夹。(当您运行管道时,它会选择
    池中定义的代理来运行管道任务)

    代理计算机中文件夹的映射如下图所示。有关更多信息,请查看

    $(Agent.BuildDirectory)
    映射到c:\Agent\u work\1

    $(Build.ArtifactStagingDirectory)
    映射到c:\agent\u work\1\a

    $(Build.BinariesDirectory)
    映射到c:\agent\u work\1\b

    $(Build.SourcesDirectory)
    映射到c:\agent\u work\1\s

    那么回到问题上来,如何将NestJS应用程序部署到Azure

    首先,您需要在Azure devops中创建服务连接,以连接到您的Azure订阅。检查详细的步骤

    然后将
    Azure应用程序服务部署任务
    /
    Azure Web应用程序任务
    添加到管道的末尾。请参见以下示例:

    - task: AzureRmWebAppDeployment@4
      inputs:
        ConnectionType: 'AzureRM'
        azureSubscription: 'SubscriptionServiceConnectionName'
        appType: 'webAppLinux'
        WebAppName: 'MyWebAppName'
        Package: '$(Build.ArtifactStagingDirectory)/dist/'
        StartupCommand: 'npm run start:prod'
    
    您可以查看更多信息