持续集成和平均堆栈
Continuous Integration and Mean Stack
我一直在学习 Travis CI,我想用它来帮助对 MEAN 应用程序进行自动化测试,然后进行部署。但是,有一些方法可以解决这个问题。
阅读后,我了解到我可以创建两个独立的存储库,从而维护两个独立的应用程序:客户端应用程序和后端应用程序。由于它们是单独的存储库,我可以在每个存储库上有单独的 .travis.yml 文件,并在客户端应用程序和后端应用程序上执行持续集成。但是,我需要有关此方法的建议,因为我有以下问题:
对于客户端应用程序,我必须编写测试。由于我将使用 angular,我想测试响应能力以及组件是否按预期工作。客户端应用程序还必须与后端应用程序进行通信,我想看看它是否正确地获得了正确的结果(例如单击按钮触发 GET 请求并查看我是否获得了正确的响应主体)。由于客户端应用程序位于单独的存储库中,当我在 TravisCI 上构建它时,如果客户端应用程序存在于单独的存储库中,我将如何将其连接到后端应用程序?
我看了一圈,我可以在 git 中使用子模块。因此,客户端应用程序和后端应用程序可以是 'master repository' 的子模块。因此,TravisCI中的触发器将如何工作?我会在每个子模块中有单独的 travis.yml 文件,还是我必须在 "master repository" 中有一个文件?
如果我要让一切正常工作并且客户端应用程序和后端应用程序都成功部署并且两者托管在不同的服务器上,我将如何解决跨域问题?
另一种方法是托管 ng build --prod
生成的静态文件,并让节点后端应用程序托管它们。当触发 Travis CI 时,我可以先构建节点后端应用程序,然后 运行 对其进行测试,然后 运行 在 angular 客户端应用程序上进行测试。所有测试都通过后,我应该部署在哪里?我知道我必须部署节点应用程序,因为它将托管静态文件,所以我将如何在 Travis CI 中部署后端应用程序?
我知道这会推动它,但我还是会问的。以后想学习如何实现微服务,想用Nginx做负载均衡。我将如何去做? Docker 可以帮助我创建一个生产环境,我可以在其中查看 Nginx 服务器和节点应用程序是否运行良好,但我如何将其包含在 Travis CI 中?
如果我的问题有点含糊,请让我知道它的哪些部分含糊不清,这样我就可以编辑它,这样我就可以更清楚地理解我的要求。谢谢,期待答复:)
问题太宽泛了。你应该一次解决一个问题,因为当你解决 1 和 2 时,我怀疑 3 将是你唯一关心的问题,所有这些问题都没有真正相关。
尝试花一点时间阅读 Travis CI 文档,以及如何编写测试以及不同类型的测试将为您做什么。您的问题不是关于 Travis,而是关于什么是单元测试与什么是集成测试。因此,为您的前端编写简单的独立测试,为您的后端编写简单的独立测试,也许 运行 手动集成测试一段时间,当它成为一个真正的问题时,您将更好地了解一切如何协同工作并且您会找到办法的。长话短说:运行 集成测试没有单一的最佳方法,它主要取决于应用程序中的很多很多东西(它是如何 运行,你使用什么类型的数据库,等等。 )
您应该阅读有关子模块的内容。也许你需要它们,也许不需要。无从得知。您可以在 Travis CI 中使用子模块,但您也可以不使用子模块。取决于你想要达到的目标。关注架构的最终目标,而不是 Travis CI 需要什么!
什么跨域问题?同样,这是一个非常不同的问题,可能不是您将面临的最突出的问题。由于我不知道您将使用哪种服务器技术,因此我无法正确回答该问题。如果你使用 express,这可能就是你要找的:https://expressjs.com/en/resources/middleware/cors.html
一般建议:您所有的问题都归结为经验。尝试一次解决一个问题,开始您的项目,当您遇到特定问题时,解决起来比询问 "microservices" 容易得多。有很多方法可以正确地执行微服务,每种方法都可以解决不同的问题。在不知道您的应用程序是关于什么以及您想要解决什么问题的情况下,微服务可能是也可能不是您正在寻找的东西,但还有许多其他组件会影响您的堆栈。开始吧,现在不要考虑太多 - 最好尽快拥有可以测试和学习的东西,而不是花几周时间思考你永远不会得到的东西,因为它只是理论。
我一直在学习 Travis CI,我想用它来帮助对 MEAN 应用程序进行自动化测试,然后进行部署。但是,有一些方法可以解决这个问题。
阅读后,我了解到我可以创建两个独立的存储库,从而维护两个独立的应用程序:客户端应用程序和后端应用程序。由于它们是单独的存储库,我可以在每个存储库上有单独的 .travis.yml 文件,并在客户端应用程序和后端应用程序上执行持续集成。但是,我需要有关此方法的建议,因为我有以下问题:
对于客户端应用程序,我必须编写测试。由于我将使用 angular,我想测试响应能力以及组件是否按预期工作。客户端应用程序还必须与后端应用程序进行通信,我想看看它是否正确地获得了正确的结果(例如单击按钮触发 GET 请求并查看我是否获得了正确的响应主体)。由于客户端应用程序位于单独的存储库中,当我在 TravisCI 上构建它时,如果客户端应用程序存在于单独的存储库中,我将如何将其连接到后端应用程序?
我看了一圈,我可以在 git 中使用子模块。因此,客户端应用程序和后端应用程序可以是 'master repository' 的子模块。因此,TravisCI中的触发器将如何工作?我会在每个子模块中有单独的 travis.yml 文件,还是我必须在 "master repository" 中有一个文件?
如果我要让一切正常工作并且客户端应用程序和后端应用程序都成功部署并且两者托管在不同的服务器上,我将如何解决跨域问题?
另一种方法是托管 ng build --prod
生成的静态文件,并让节点后端应用程序托管它们。当触发 Travis CI 时,我可以先构建节点后端应用程序,然后 运行 对其进行测试,然后 运行 在 angular 客户端应用程序上进行测试。所有测试都通过后,我应该部署在哪里?我知道我必须部署节点应用程序,因为它将托管静态文件,所以我将如何在 Travis CI 中部署后端应用程序?
我知道这会推动它,但我还是会问的。以后想学习如何实现微服务,想用Nginx做负载均衡。我将如何去做? Docker 可以帮助我创建一个生产环境,我可以在其中查看 Nginx 服务器和节点应用程序是否运行良好,但我如何将其包含在 Travis CI 中?
如果我的问题有点含糊,请让我知道它的哪些部分含糊不清,这样我就可以编辑它,这样我就可以更清楚地理解我的要求。谢谢,期待答复:)
问题太宽泛了。你应该一次解决一个问题,因为当你解决 1 和 2 时,我怀疑 3 将是你唯一关心的问题,所有这些问题都没有真正相关。
尝试花一点时间阅读 Travis CI 文档,以及如何编写测试以及不同类型的测试将为您做什么。您的问题不是关于 Travis,而是关于什么是单元测试与什么是集成测试。因此,为您的前端编写简单的独立测试,为您的后端编写简单的独立测试,也许 运行 手动集成测试一段时间,当它成为一个真正的问题时,您将更好地了解一切如何协同工作并且您会找到办法的。长话短说:运行 集成测试没有单一的最佳方法,它主要取决于应用程序中的很多很多东西(它是如何 运行,你使用什么类型的数据库,等等。 )
您应该阅读有关子模块的内容。也许你需要它们,也许不需要。无从得知。您可以在 Travis CI 中使用子模块,但您也可以不使用子模块。取决于你想要达到的目标。关注架构的最终目标,而不是 Travis CI 需要什么!
什么跨域问题?同样,这是一个非常不同的问题,可能不是您将面临的最突出的问题。由于我不知道您将使用哪种服务器技术,因此我无法正确回答该问题。如果你使用 express,这可能就是你要找的:https://expressjs.com/en/resources/middleware/cors.html
一般建议:您所有的问题都归结为经验。尝试一次解决一个问题,开始您的项目,当您遇到特定问题时,解决起来比询问 "microservices" 容易得多。有很多方法可以正确地执行微服务,每种方法都可以解决不同的问题。在不知道您的应用程序是关于什么以及您想要解决什么问题的情况下,微服务可能是也可能不是您正在寻找的东西,但还有许多其他组件会影响您的堆栈。开始吧,现在不要考虑太多 - 最好尽快拥有可以测试和学习的东西,而不是花几周时间思考你永远不会得到的东西,因为它只是理论。