node.js - nodeJS/GitlabCI : How to serve decentralized productive application

标签 node.js express gitlab next.js

我正在使用 nextJS 和expressJS 应用程序开发一个nodeJS 应用程序。我使用自己的 gitlab 实例来管理 git 存储库。

但是当前的应用程序最终不应该部署到网络服务器,但我需要创建去中心化的生产应用程序。为了更清楚一点:

  1. 在本地开发应用程序
  2. 将应用程序推送到我的远程服务器
  3. 我的客户应该能够从我的删除服务器获取高效的应用代码
  4. 客户将在本地环境中运行应用程序 - 应该能够从删除服务器中提取新版本

因此应用程序本身不会在我的远程服务器上运行,而是在客户的本地服务器上运行。

通常,我会使用 CI 来测试和构建应用程序(由 npm run build 完成)。然后我构建一个 docker 镜像,用于在我的服务器上运行应用程序。但所有这些通常都在同一服务器上运行。

在这种情况下,我需要构建应用程序并将其提供给客户/客户应该能够提取有效的代码。这怎么办。

也许我只见树木不见森林......这就是为什么我寻求帮助/提示。

最佳答案

您可以通过多种方法来实现此目的,也可以使用多种工具。您可能需要类似于以下的管道。

  1. 代码在本地开发、提交并推送到自托管的 gitlab。
  2. GitLab CI(或配置的任何其他 CI)随后将运行您代码的 CI。
  3. CI 的最后一步是创建应用程序的“ bundle ”。这可能是 .zip 或类似文件,并且将被推送到远程存储位置。还可以确保仅在推送到特定分支(例如 master)时才执行此操作。

您可以使用许多东西作为远程存储位置,例如某种 AWS S3 存储桶,或更复杂的东西,例如 Nexus (有很多免费的替代品)。

然后,您可能希望让您的客户访问此存储位置(如果您使用的是 S3 或 digital ocean block 存储等),或访问您的分发存储库(例如 Nexus)。

您应该能够生成某种 SSH key ,您可以将其放在 GitLabCI 服务器上并用于发布到这些位置。然后,它应该是一个简单的情况,即进行 HTTP 调用以将文件上传到相关源。当一切都成功时,通常会调用此函数,并且仅针对特定分支。例如,如果您的所有测试都通过并且您位于主分支上,请压缩所有代码并进行 HTTP 调用以将新的 zip 文件推送到您的客户可以访问的 AWS S3。

对于进一步的想法,如果您愿意,您可以将存储/分发位置设置为 FTP 服务器,或者根据您的分发需求将其设置为本地网络驱动器。如果您只是为客户处理 Docker,那么我建议您构建一个 Docker 镜像并自托管一个 Docker 注册表。构建镜像后推送到该注册表,CI 运行就结束了。

顺便说一句,如果您的客户正在使用 docker,您可以创建一个 docker 镜像,将其推送到注册表或将其导出为 .tar 并将其上传到文件存储位置(例如 S3)。这将使您的客户的事情变得简单,并确保您控制镜像创建步骤(如果这是您想要管理的内容)。

The gitlab ci docs might help you with the specifics of uploading artifacts to various locations.

关于node.js - nodeJS/GitlabCI : How to serve decentralized productive application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51709528/

相关文章:

javascript - 无法在 Nodejs 中访问数据库结果,它总是返回 null

javascript - 使用 ng-bind 在 Angular 中无限循环

node.js - 将 Sequelize 模型转换为 JSON Schema 以进行用户输入验证

php - 使用memcached存储session数据,安全吗?

mysql - nodejs 表达 mysql 查询 'SET @' XXX''

javascript - 无法将文件对象从reactjs发送到nodejs

javascript - 从 node.js 的 mongodb 集合中删除文档

docker - 当用户 linux docker 镜像没有问题,但 windows docker 镜像失败时

authentication - 需要帮助修复此错误 "Connection reset by peer - SSL_connect"

git - 如何在 gitlab 上更改提交作者?