我有本地公司 TFS 2018 服务器和 Nuget。 我创建了一个 nuget-feed。 我将使用此提要进行 1 次迭代。 然后,我需要为下个月创建下一个提要。这是业务流程。
那么,如何将 nuget 包从旧的 feed 克隆到新的呢?或者,我可以克隆提要吗?
谢谢!
您必须使用 REST API 编写一些脚本才能完成它。目前无法克隆 feed。
我建议不要这样做并纠正您的业务流程。没有理由这样做。如果这是您的最终目标,您可以将标签添加到特定的软件包版本以与版本相对应。
有同样的问题,用JS脚本“nuget-clone.js”解决了它:
const execSync = require("node:child_process").execSync;
const nugetPackages = require("./packages.json");
const source = "https://example.org/_packaging/shared/nuget/v3/index.json";
const clonePackage = ({ source, name, version }) => {
const cmd = `nuget install ${name} -Version ${version} -Source ${source} -OutputDirectory .\\packages -DependencyVersion Ignore`;
const result = execSync(cmd);
return result.toString("utf8");
}
const cloneJob = ({source, packages}) => {
console.log(`Cloning ${packages.length} using source ${source}\n`);
packages.forEach(({name, version}) => {
console.log(`Cloning ${name}.${version}.nupkg`);
const result = clonePackage({source, name, version});
console.log(result);
});
}
cloneJob({ source, packages: nugetPackages });
提供来自
的包裹nuget 列表-AllVersions-NonInteractive-Source https://example.org/_packaging/shared/nuget/v3/index.json>packages.csv
并将 packages.csv 转换为 JSON 数组
[
{ "name": "package name", "version": "package version" }
]
(还没有时间写一个脚本来直接解析csv,也许我稍后会更新帖子......)
将源替换为您的服务器,确保 nuget 已存储凭据。
最后运行“node nuget-clone.js”。
该脚本会将所有 nupkg 文件克隆到子文件夹 .\packages 中。