gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 03:52:46 26 4
gpt4 key购买 nike

我无法理解和获取用于将 NestJS 应用程序部署到 Azure DevOps (ADO) 的构建/发布管道设置。

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

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

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

  1. 运行 NPM 更新。
  2. 运行 npm run build 构建应用程序并生成 dist 文件夹。
  3. 将应用程序的内容(或只是 dist 文件夹?)复制到目标文件夹 (/home/site/wwwroot)
  4. 运行 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) 指的是什么以及如何以及在哪里这些环境变量设置了吗?

最佳答案

将您的应用程序部署到 Azure 中托管。您需要使用 Azure App Service Deploy taskAzure Web App task .

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

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

代理机器中文件夹的映射如下图所示。检查predefined variables获取更多信息。

enter image description here

$(Agent.BuildDirectory) is mapped to c:\agent_work\1

$(Build.ArtifactStagingDirectory) is mapped to c:\agent_work\1\a

$(Build.BinariesDirectory) is mapped to c:\agent_work\1\b

$(Build.SourcesDirectory) is mapped to c:\agent_work\1\s

那么回到如何将 NestJS 应用程序部署到 Azure 的问题?

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

然后将 Azure App Service Deploy 任务/Azure Web App task 添加到管道的末尾。请参见以下示例:

- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'SubscriptionServiceConnectionName'
appType: 'webAppLinux'
WebAppName: 'MyWebAppName'
Package: '$(Build.ArtifactStagingDirectory)/dist/'
StartupCommand: 'npm run start:prod'

可以查看here获取更多信息。

关于node.js - 如何使用 YAML 为 NestJS 应用程序设置构建和发布管道到 Azure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62069525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com