首页 > 解决方案 > 如何从 Vuejs 应用程序构建 docker 映像并通过 GitLab CI/CD 推送到 Nexus 存储库?

问题描述

我有需要构建的 Vuejs 应用程序,以便作为 Docker 映像推送到 Nexus。GitLab 存储库中的所有 Vuejs 内容存储。

这些阶段的管道很简单

  1. 设置(从管道获取信息)
  2. 构建(npm install 和 npm run build)
  3. 创建 docker 镜像(这将使用 Vue 应用程序执行 docker build)
  4. 将图像推送到 Nexus

我将 GitLab-runner 与 docker executor 一起使用,并且我创建了 Dockerfile,其中包含运行 npm、docker 所需的包。

但是,通过所有这些步骤,我注意到每次新阶段开始时 gitlab ci 都会拉取 docker 映像。所以它会将我的管道分解成碎片,我无法从构建的 Vuejs 应用程序构建 docker 图像,也无法将图像推送到 Nexus。

无论如何要解决这个问题?谢谢

标签: dockervue.jsgitlabgitlab-cigitlab-ci-runner

解决方案


是的,这是真的——在 Gitlab 中(除了在 eg 中Jenkins),每个 Job 都使用一个干净的、新签出的存储库运行。生成的工件不会自动从一个作业转移到下一个作业。

这使得有时很难建立连接的管道,但这并非不可能。

对于您的用例,我建议将管道简化为两个步骤:

  1. 构建:设置和构建项目
  2. 发布:Docker 构建并推送到 Nexus

构建步骤之后,您可以使用Gitlab 的工件来传输构建输出/构建工件(可能是buildor文件夹?)或从步骤 1 到步骤 2dist中您需要的任何其他内容。Dockerfile


推荐阅读