我正在使用nextJS和expressJS应用程序开发一个nodeJS应用程序。而且我正在使用自己的gitlab实例来管理git存储库。
但是,当前应用程序不应在最后部署到Web服务器,但是我需要创建去中心化的生产性应用程序。为了使它更清晰:
因此,应用程序本身不会在我的远程服务器上运行,而是在客户的本地服务器上运行。
通常,我将使用CI来测试和构建应用程序(这由npm run build
完成)。然后,我构建一个docker镜像,用于在服务器上运行该应用程序。但是所有这些通常都可以在同一服务器上进行。
在这种情况下,我需要构建应用程序并将其提供给客户/客户应该能够提取有效的代码。该怎么做。
也许我看不见树木的树林...这就是为什么我要帮助/提示。
答案 0 :(得分:1)
您可以通过多种方式执行此操作,也可以使用多种工具。您可能想要类似于以下内容的管道。
您可以将许多东西用作远程存储位置,例如某种AWS S3存储桶,或更复杂的东西(例如Nexus(有很多免费的替代品)。
然后,您想让客户访问此存储位置(如果您使用的是S3或Digital Ocean Block Storage等),或访问您的分发存储库(例如Nexus)。
您应该能够生成某种SSH密钥,可以将其放置在GitLabCI服务器上并用于发布到这些位置。然后应该是进行HTTP调用以将文件上传到相关源的简单情况。当一切都成功完成时,通常仅针对特定分支机构,才调用此方法。例如,如果所有测试都通过并且您在master分支上,则将所有代码压缩并进行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.