如何在 VSTS 中设置 Node.js webjob 的持续集成

How do I set up continuous integration of a Node.js webjob in VSTS

我熟悉如何使用 VSTS 设置 node.js Web 应用程序的持续集成。

如何为 node.js 网络作业设置持续集成。我找到了如何使用 Visual Studio 对 .NET 项目执行此操作的示例,但是找不到任何有关如何使用 node.js webjob 执行此操作的文档。

要 CI 构建您的 node.js 应用程序,您可以首先通过 VSTS 上的存储库管理您的代码(或托管在其他站点(例如 github、bitbucket 等上的远程存储库) ),然后为您的 node.js 网络作业创建构建定义定义。详细步骤如下:

1。通过 VSTS 存储库(git 或 TFVC)管理代码

您可以将您的 node.js 应用程序管理到您使用的当前存储库,或者您可以创建一个新的存储库来管理您的 node.js 应用程序。新建一个git repo(我用的是git repo,和TFVC类似),可以参考create a git repo for team project.

将您的 node.js 代码推送到 VSTS 存储库。您可以使用 VS(克隆存储库 -> 将代码复制到本地存储库 -> 提交 -> 推送)或直接使用 git 命令。

2。创建CI构建

在 Builds 选项卡 -> New -> 使用 Node.JS With Gulp (PREVIEW) 模板(或者你可以使用空模板然后手动添加任务) -> Get sources 步骤 ->指定您的代码存在的 repo 和分支 -> 指定任务设置 -> 如果需要,添加其他任务 -> 触发器选项卡 -> 启用持续集成。

node.js 应用程序 CI 构建的更多详细信息,您可以参考 define your CI build for node.js app

3。在 Azure webjobs

中添加你的应用程序

在 CI 构建定义中,添加以下任务:

  • 复制文件任务: 将您想要 运行 在 Azure webjobs 上的应用程序从 $(System.DefaultWorkingDirectory) 复制到 $(Build.ArtifactStagingDirectory).

  • 存档文件任务:$(Build.ArtifactStagingDirectory).[=19= 中的文件创建一个 zip 文件(例如 $(Build.ArtifactStagingDirectory)/webjob.zip) ]

  • Azure 应用服务部署任务:将您的 zip 文件 ($(Build.ArtifactStagingDirectory)/webjob.zip) 部署到 Azure。

还有更多的细节,你也可以参考this thread

完成以下操作:构建 + 通过 Azure App Service Deploy 任务部署 nodejs webjob(FTP 由于我们 IT 环境中的安全问题而停止)。

这是一种快速而肮脏的方法,用于恢复我们处于危险之中的构建 + 发布过程,对任何其他方法持开放态度,但关于这个特定主题的文档(如最初的问题所述)相当不存在。

在我的项目中,所有东西(run.js + package.json + 依赖项都在根级别)

构建定义

  1. 获取资源
  2. powershell 脚本内联(清理目标文件夹、创建目标文件夹、将根文件夹移动到 webjob 结构)
Remove-Item -Path $(Build.BinariesDirectory)\app_data -Force -Confirm:$false -Recurse -ErrorAction:Ignore
New-Item $(Build.BinariesDirectory)\app_data\jobs\continuous\ -ItemType Directory -Force
Move-Item $(Build.SourcesDirectory)\[webjobname]\ $(Build.BinariesDirectory)\app_data\jobs\continuous\[webjobname] -Force
  1. npm install$(Build.BinariesDirectory)\app_data\jobs\continuous\[webjobname](工作文件夹)

  2. 存档任务$(Build.BinariesDirectory)

  3. 发布工件$(Build.ArtifactStagingDirectory)(发布路径)

版本定义:经典应用服务部署使用上述构建生成的工件 zip 文件