我在理解和设置基于 Azure DevOps(ADO)的构建/发布流程以部署 NestJS 应用程序方面遇到了困难。
我要部署到 Azure 托管的 Linux Web 应用程序中。
据我所知,如果我在本地使用类似 npm run start
的命令运行应用程序,它会在我的根项目目录下创建一个 dist
文件夹。
因此,在编写用于构建和部署的 YAML 文件时,我的思路是:
- 运行 NPM 更新。
- 运行
npm run build
来构建应用程序并生成dist
文件夹。 - 将应用程序的内容(或仅 dist 文件夹?)复制到目标文件夹 (
/home/site/wwwroot
) 中 - 运行
npm run 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),这些环境变量是如何设置的,它们指的是什么地方?