【问题标题】:Continuous integration: Where to build the project?持续集成:在哪里构建项目?
【发布时间】:2018-10-30 04:16:13
【问题描述】:

我有一个 Jenkins 服务器,我在其上观察一个私有 git 存储库以进行更改,然后触发一个管道脚本(存储库包含一个 nodejs 应用程序)。在这个管道脚本中,我需要执行以下步骤:

  • 安装依赖项 (npm install)
  • 构建我的应用程序(npm run build,它会创建一个 dist 文件夹)
  • 构建一个 docker 容器 (docker build) 并运行该容器(运行 dist 文件夹中的一个脚本)

以下两个选项中的哪一个是推荐的方法,为什么?

选项 A: 在 jenkins 管道中运行 npm installnpm run build 并在 docker 构建期间将 dist 文件夹复制到 docker 容器中。这将允许我只使用 npm install --only=production 在 docker 容器中安装运行时依赖项,从而显着减小图像大小。

选项 B: 在 docker build 期间运行 npm installnpm run build(在 Dockerfile 中)。如果必须,这将允许我在 CI 服务器之外运行 docker 容器(我现在没有用例,但它看起来更干净,因为它更独立)。但是,图像大小会显着增加,我不确定这是否是推荐的方式。

有什么建议吗?

【问题讨论】:

    标签: node.js jenkins continuous-integration


    【解决方案1】:

    我会选择选项 B。 其背后的原因是有一些 npm 包运行 node-gyp、gcc 和其他依赖于平台的构建。 以流行的 bcrypt 包为例。

    使用选项 A 意味着您的 docker 和 Jenkins 机器需要为此类构建保留相同的基础设施,这至少可以说是不常见的。

    【讨论】:

    • 感谢您的意见。这对我来说很有意义。
    猜你喜欢
    • 2013-11-29
    • 2014-11-06
    • 1970-01-01
    • 2017-01-04
    • 2010-09-17
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多