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