Node.js 如何使用YAML设置NestJS应用程序到Azure的构建和发布管道
我在理解和获取将NestJS应用程序部署到Azure DevOps(ADO)的构建/发布管道设置方面遇到困难 我正在部署到Azure中托管的Linux Web应用程序 据我所知,如果我使用类似于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
npm run start
的东西在本地运行应用程序,它会在我的根项目目录下创建一个dist
文件夹
因此,在为构建和部署编写YAML时。我的思考过程是:
npm运行build
以生成应用程序并生成dist
文件夹/home/site/wwwroot
)npm运行start:prod
启动服务器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'
您可以查看更多信息