持续集成:在哪里构建项目?

时间:2018-10-29 16:49:40

标签: node.js jenkins continuous-integration

我有一台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构建期间运行npm installnpm run build(在Dockerfile中)。如果需要的话,这将允许我在CI服务器外部运行docker容器(我现在没有用例,但是它看起来更干净,因为它更独立)。但是,图像大小会显着增加,我不确定这是否是推荐的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我会选择选项B。 其背后的原因是,有一些npm软件包可以运行node-gyp,gcc和其他平台相关的构建。 以流行的bcrypt包为例。

使用选项A意味着您的docker和Jenkins机器需要为这种构建保留相同的基础结构,至少可以这样说。