git - NodeJS/Jenkins/GIT 和 Jenkins Slave 作为 Web 服务器

标签 git jenkins continuous-integration

我想对我的一个网络服务器应用程序进行持续集成。 我们使用 Postgres 作为后端数据库。为实现这一目标,我们计划使用 NodeJS/Jenkins 和 GIT。

一旦任何开发人员 checkin 他们的更改,构建就必须立即开始并进行一些基本测试。 这涉及启动 NodeJS 服务器并执行一些测试用例。

我已经集成了 Jenkins 和 GIT,因此只要通知 git 更改,Jenkins 构建就会启动。

我们可以在同一台 Jenkins 机器上运行 NodeJS 网络服务器,还是应该为此使用从 Windows 机器?

请为此提出最佳做法?

假设服务器计算机将安装 Postgres DB 并安装 NPM。

谢谢。

最佳答案

要获得可重现的构建,我推荐 Docker integration对于 Jenkins 。这允许同时处理多个构建,因此如果构建花费的时间比预期的要长,其他开发人员也可以推送。

由于每个容器都有自己的网络,您可以同时运行任意数量的容器,每个容器都有自己的节点服务器监听同一端口。只要您不需要从容器外部访问节点服务器(例如从构建服务器本身),就没有问题。

对于 Postgresql 数据库:您可以在您的容器中生成一个数据库服务器,这意味着您有很多短暂的数据库服务器。根据您需要导入的测试数据量,这可能不是解决方案。另一种方法是在构建服务器上运行 Postgresql 服务器,并允许容器访问它。在每次构建中,您都可能使用模板在 Postgresql 中创建一个新数据库。之后您可以销毁数据库。

所以流程是:

[Developer pushes] -> [git notifies Jenkins] -> [Jenkins creates database] -> [Jenkins runs container] -> [Container builds and tests] -> [Container processes results] -> [Jenkins destroys database]

对于结果处理步骤,有多种方法可以做到。最简单的方法(不需要任何额外的软件)是让 Jenkins 自动 merge 分支。每个开发人员为其工作推送一个新分支,如果测试成功,Jenkins 会将分支 merge 到 master。您可以禁止用户直接写入 master 分支以强制执行此操作。

另一种方法是将 Jenkins 集成到您的 git 托管解决方案中(如果您使用的话)。 GitLab EE supports this这意味着您可以在 GitLab 中看到每个提交的测试结果。当然,如果你不使用 GitLab/Bitbucket/... 之类的东西,这不是解决方案

关于git - NodeJS/Jenkins/GIT 和 Jenkins Slave 作为 Web 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179296/

相关文章:

Jenkins 配置作为代码插件与 Pipeline

ios - 如何在终端上从 xcarchive 导出 dsym 文件

Jenkins 失去了构建历史

android - 创建 3 个安卓模拟器 [phone, tab7, tab10] 并通过 faSTLane 的命令行启动它们

git - 如何将两个不同的 git 存储库 merge 为一个有两个分支的存储库?

git - 旧的 git-commits move 到新的分支

git - 如何在 IntelliJ VCS 中从 Git 中删除文件?

git - 建立主机 'nodejs-xxxxx.rhcloud.com can'的真实性

其他用户缺少 Jenkins "Keep this build forever"按钮

docker - gitlab kubernetes runner 无法连接到 docker 守护进程