为外部开发人员设置测试环境

Setting up a testing environment for external developer

上下文:为外部程序开发人员设置短信环境,以便稍后集成到自己的平台中。

请问沙箱和用于测试的开发服务器之间的主要区别是什么。

如果假设您使用 java,jsp,html,css,js,mysql 作为您的应用程序,但您也在使用外部开发人员使用相同的语言和 db 进行开发,稍后将集成到与当前现有其他应用程序相同的平台上。

所以问题是沙盒主要用于将应用程序与环境的其余部分分离,因此如果项目在文件系统上有文件,沙盒需要分离,文件系统,数据库。沙箱和开发服务器可能会有文件系统以允许外部开发人员访问它。那么这会给我们留下 docker 选项吗?但是如果说整个应用程序是在 docker 上完成的,那么它可以链接到实时服务器吗?

还有 CI/CD 管道怎么样?给定可用的选定选项,我们如何进行测试? 您认为哪个选项最合适?

怎么样Vagrant

它是用于独立开发环境的非常好的工具。共享存储可用于您需要的一切——数据库、文件系统。每台机器的本地网络是分开的。所有环境配置都在一个文件中进行 (example Vagrantfile),因此为新开发人员设置它只是:

mkdir dev2 && cd dev2 && cp dev1/Vagrantfile . && vagrant up 

当然,您可以使用 Ansible 或 Puppet 等 CM 工具来安装网络服务器、数据库服务器等软件,并进行 OS 更改,如创建用户、目录。这是使所有开发环境保持相同条件的简单方法。如果出现意外的开发人员错误,例如破坏某些配置或 rm -rf /home/*,它只会重新创建一台需要几分钟的机器。 关于 CI/CD 测试,我喜欢简单的解决方案。在詹金斯管道中

checkout scm: [$class: 'GitSCM', userRemoteConfigs: [[url: repoWithTests]], branches: [[name: 'master']]], poll: false
sh(script: "python tests.py", returnStdout: true)

Fie tests.py 它是带有 unittest.TestCase 的简单脚本,用于检查 enpoints、grep 日志以及它可能需要的任何内容。

总结一下,我认为 Vagrant 是比 docker 更好的模拟真实机器的方法。 Docker 最适合单独的一个应用程序,而不是整台机器。