如何从 Vuejs 应用程序构建 docker 图像并通过 GitLab CI/CD 推送到 Nexus 存储库?

How to build docker image from Vuejs application and push to Nexus repository through GitLab CI/CD?

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

这些阶段的流水线很简单

  1. 设置(从管道获取信息)
  2. 构建(npm 安装和 npm 运行 构建)
  3. create docker image(这将执行 docker 使用 Vue 应用程序构建)
  4. 将图像推送到 Nexus

我将 GitLab-运行ner 与 docker 执行器一起使用,我创建了 Docker 文件,其中包含 运行 npm 所需的包,docker.

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

有办法解决这个问题吗?谢谢

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

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

对于您的 use-case,我建议将管道归结为两个步骤:

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

build 步骤之后,您可以使用 Gitlab's Artifacts 传输 build-output / build-artifacts (可能是 builddist 文件夹?)或您在 Dockerfile 从第 1 步到第 2 步中需要的任何其他内容。