Continuous integration 在VisualStudioTeamServices管道中使用MongoDB(在容器中?)

Continuous integration 在VisualStudioTeamServices管道中使用MongoDB(在容器中?),continuous-integration,containers,azure-devops,Continuous Integration,Containers,Azure Devops,我有一个node.js服务器,它与MongoDB数据库通信。作为持续集成过程的一部分,我希望启动一个MongoDB数据库,并对服务器+DB运行测试 通过bitbucket管道,我可以启动一个同时包含node.js和MongoDB的容器。然后针对此设置运行测试 使用Visual Studio团队服务实现这一目标的最佳方法是什么?我想到的一些选择: 1) 托管管道似乎最简单,但它们上面没有MongoDB。我可以使用,但没有提到MongoDB安装程序,事实上,我在可用任务列表中没有看到任何工具安装程序

我有一个node.js服务器,它与MongoDB数据库通信。作为持续集成过程的一部分,我希望启动一个MongoDB数据库,并对服务器+DB运行测试

通过bitbucket管道,我可以启动一个同时包含node.js和MongoDB的容器。然后针对此设置运行测试

使用Visual Studio团队服务实现这一目标的最佳方法是什么?我想到的一些选择:

1) 托管管道似乎最简单,但它们上面没有MongoDB。我可以使用,但没有提到MongoDB安装程序,事实上,我在可用任务列表中没有看到任何工具安装程序。此外,还提到,托管管道机器没有管理员访问权限,我相信MongoDB需要管理员访问权限。最后,下载和安装Mongo需要相当长的时间

2) 设置我自己的私有管道-即带有Node+Mongo的VM,并在其上安装管道代理。我必须为此启动一个专用Azure实例吗?这个实例会在每次测试运行时被拆掉并重新设置,还是会在测试运行之间保持不变(这意味着我必须格外小心地清理它)

3) 通过一个我还没有发现的选项神奇地使用管道中的容器


我真的希望使用一个容器来运行我的测试,因为这样我就可以在开发过程中本地使用同一个容器,而不必维护多个环境。这可以做到吗?

因此,事实证明,VSTS现在已经有了Docker支持(当我写我的问题时,它是在测试版中,我没有找到它,无论出于什么原因)。可在以下网址找到

此命令允许您旋转所选的容器并在其上运行单个命令。如果此命令要作为管道的一部分同步运行,则需要取消选中
run-in-Background
(我想这将是常规构建命令的情况)。最后,我将构建脚本推送到git存储库中,并在容器上运行它


然后呢。我在上面(2)中的问题-私有管道中的机器在管道运行之间不会被清理。

因此,事实证明,VSTS现在在管道中有Docker支持(当我写我的问题时,它是在beta版中,出于任何原因,我都没有找到它)。可在以下网址找到

此命令允许您旋转所选的容器并在其上运行单个命令。如果此命令要作为管道的一部分同步运行,则需要取消选中
run-in-Background
(我想这将是常规构建命令的情况)。最后,我将构建脚本推送到git存储库中,并在容器上运行它


然后呢。我在上面(2)中的问题-在管道运行之间,私有管道中的机器不会被清理。

您能通过命令行或工具启动MongoDB数据库吗?@starain MSFT我不知道。我可以使用Powershell命令行下载MongoDB安装程序,然后以静默方式安装它(这基本上就是我的选项(1)的内容),但这需要相当长的时间。这就是你推荐的方法吗?我不熟悉MongoDB,启动MongoDB是否意味着要建立一个数据库。您可以在您的私有生成代理计算机上安装MongoDB,然后直接使用它。@starain MSFT请参阅上面我的选项(2)中的问题-私有生成实例是否回收每个生成?我认为没有办法使用容器?你能通过命令行或工具启动MongoDB数据库吗?@starain MSFT我不知道。我可以使用Powershell命令行下载MongoDB安装程序,然后以静默方式安装它(这基本上就是我的选项(1)的内容),但这需要相当长的时间。这就是你推荐的方法吗?我不熟悉MongoDB,启动MongoDB是否意味着要建立一个数据库。您可以在您的私有生成代理计算机上安装MongoDB,然后直接使用它。@starain MSFT请参阅上面我的选项(2)中的问题-私有生成实例是否回收每个生成?我想没有办法用集装箱吧?