在使用Jenkins时,如何使用package.json从某个分支中提取私有git-repository?

时间:2016-10-07 13:03:53

标签: git jenkins npm

我们有一个主项目,它加载子项目,然后用npm将它们捆绑到一个文件中。这是package.json:

{
  "name": "my-project",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "angular": "^1.5.7"
  },
  "devDependencies": {
    "project-a": "git+ssh://git@bitbucket.org/project-a.git",
    "project-b": "git+ssh://git@bitbucket.org/project-b.git"
  },
  "author": "",
  "license": "ISC"
}

我们想在多个服务器上构建项目,例如掌握和发展,这些是分支机构的名称。现在,如果我们构建开发分支,那么npm应该来自git+ssh://git@bitbucket.org/project-a.git#developgit+ssh://git@bitbucket.org/project-b.git#develop。但我无法找到一种方法告诉npm拉那些分支而不是主人。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

首先,npm会拉出你告诉它的分支。格式是这样的:

"devDependencies": {
    "project-a": "git+ssh://git@bitbucket.org/project-a.git#branchName" 
}

如果没有定义分支,则默认为master。

因此,这给出了一个起点,您需要在运行时通过将分支的名称附加到url来修改依赖项。关于在运行npm install之前将其归档的可能性,您可以通过将关键字(例如#branchName)更改为您想要的工具来处理package.json。使用像sed这样的工具很容易存档

然而,这会让你的git repo"脏" (如未修改的变化)。另一种方法是编写一个cli工具,它将读取你的package.json,提取依赖项并通过调用npm install $ reporul并使用你想要的分支后缀url repo来手动安装它们。也许这个repo提供了一个工具,你可以如果您不想自己写一篇文章,请使用:https://github.com/CrowdArchitects/node-rebranch-dependencies