【问题标题】:Building multiple angular projects on single jenkins worker node在单个 jenkins 工作节点上构建多个 Angular 项目
【发布时间】:2019-07-06 19:08:18
【问题描述】:

多个开发团队正在开发使用 npm 构建的 Angular 7 项目,其中 package.json 具有其所有依赖项。

这些开发团队将代码提供给单个 DevOps 团队来构建代码。


说,对于 angular project1 npm install 将安装 package.json 提到的所有依赖项,这些依赖项将安装在 jenkins 工作节点上。使用命令 npm run build 构建 Angular 源代码需要这些依赖项


我的理解是,

对于 Angular project2,package.json 可能有不同版本的类似依赖项。

所以,npm install for angular project2 可能不会在相同的 jenkins 工作节点上安装所需的依赖项,这看起来是个问题,因为项目 1 已经安装了这些依赖项(但版本不同)。


1) 是否建议在单个工作节点(jenkins)上构建多个 Angular 项目?

2) 如果不是,每个 Angular 项目构建是否应该在单独的 docker 容器(运行 Jenkins)上进行以解决此问题?

【问题讨论】:

    标签: angular docker jenkins npm jenkins-pipeline


    【解决方案1】:

    幸运和不幸的是,有很多方法可以做到这一点。

    1) 使用单个节点构建多个项目是“可以的”,但可能需要一些文件夹/归档步骤来避免每次都删除/重新安装依赖项。您可能能够将不同构建的依赖关系保存在存档文件中,这样它们就不会最终发生冲突。请参阅this answer 了解起点。

    2) 我发现将项目彼此隔离是构建项目时最简洁的解决方案。虽然我相信这是最好的方法,但我不确定这是否是事实。其他人可以称重吗?

    【讨论】:

    • 首先,npm install 会产生冲突吗?由于我们正在为不同的项目运行......目前我们有 3 个不同的 Angular 项目要构建在同一个节点上......
    • 好问题。我对执行此操作的多种方法不够熟悉,无法确定。如果您正在重置源代码/清理项目之间的文件,我认为它不会产生冲突,因为模块是在项目级别安装的。因此,如果项目 1 和项目 2 具有不同的名称/文件位置(如果这是一种方法),它们不应该冲突。
    • npm install 将在多个项目使用的文件系统空间中安装依赖项...你是什么意思...在项目级别安装依赖项?
    • 开发人员编写他们的代码并提交给 DevOps 团队通过 Jenkins 构建代码。我们需要多个开发团队来构建多个项目...
    • 是的,我明白这一点。但是,如果您查看模块安装的级别,典型的 Angular 项目会将它们安装在 project -> node_modules 中。我不知道您的管道实际上是如何设置的(如上所述有很多方法)。因此,如果您正在执行 cd my-project-1cd my-project-2 然后 npm install 之类的操作,它们不会发生冲突,因为它们将安装在该 projectls 级别。
    猜你喜欢
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多