【问题标题】:How do I set up continuous integration of a Node.js webjob in VSTS如何在 VSTS 中设置 Node.js 网络作业的持续集成
【发布时间】:2017-07-03 20:59:24
【问题描述】:

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

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

【问题讨论】:

    标签: node.js azure-devops azure-web-app-service azure-pipelines azure-pipelines-release-pipeline


    【解决方案1】:

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

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

    在我的项目中,所有东西(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 文件进行经典应用服务部署

    【讨论】:

      【解决方案2】:

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

      1。通过 VSTS repo(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 构建

      在构建选项卡中 -> 新建 -> 使用带有 Gulp (PREVIEW) 模板的 Node.JS(或者您可以使用空模板,然后手动添加任务)-> 获取源步骤 -> 指定代码所在的仓库和分支-> 指定任务设置 -> 如果需要,添加其他任务 -> 触发器选项卡 -> 启用持续集成。

      更多node.js app CI build详情,可以参考define your CI build for node.js app

      3。在 Azure webjobs 中添加您的应用

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

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

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

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

      还有更多详情,也可以参考this thread

      【讨论】:

      • 正如我的问题中提到的,我知道如何使用 VSTS CI 发布 Node.js Web 应用程序。我想知道如何专门为 Node.js WebJobs 做这件事。
      • 您的意思是在 Azure webjobs 中使用 CI 构建运行 node.js 应用程序吗?
      • 我想使用 VSTS CI 部署 Azure WebJob。所以我有 WebJob 的代码,我可以通过压缩代码并通过我的 Web 应用程序中 WebJobs 下的 Azure 门户部署它来手动部署它。我想自动化这一步。
      • 好的,我在答案中添加了将您的应用部署到 Azure Webjobs 的步骤。
      • @MarinaLiu-MSFT webjob.zip 是否需要特定结构来匹配连续作业?文档完全面向 C#(包括 nuget)。自从 2 年以来我们一直在做 ftp 复制,但是一些新的安全规则阻止了它:)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2011-02-01
      相关资源
      最近更新 更多