使用OneGet与Artifactory

ArtifactoryOneGetNuGet巧克力和Powershell

设置和安装

最近有一种热烈的议论OneGet是微软Powershell的新下载管理器。与OneGet, Windows现在有了一个一流的部署管理器,与多年来使用Apt-Get下载管理器的*inx非常相似。

OneGet是一个命令行工具它在Powershell命令框中运行(目前仅适用于Win 8.1和2012 Server R2)。OneGet使用NuGet打包格式对象中存储的包巧克力色画廊(其他远程源和格式将在将来添加)。已经有不少很好的了OneGet博客已经写好了。快速搜索“OneGetPowershell”会找到这些。

这篇文章的目的是描述如何使用Artifactory作为两者之间的代理OneGet和巧克力画廊。我们为什么需要代理人?想象一下网络连接不可用。想象一下,无法控制实际下载的版本和包。想象一下,托管本地构建的包供开发人员与其他开发人员共享。想象一下,所有二进制文件只有一个源代码,即使它们不是NuGet包。

第一步,我们需要的是为NuGet下载和设置Artifactory包。这已经在上面的链接中描述过了。在Artifactory之后下载设置,创建以下自定义。首先,创建一个远程回购“巧克力厨房”,决心https://chocolatey.org来自互联网。第二,创建一个虚拟回购命名为“chocolatey”,解析为远程回购“chocolatey-gallery”。这允许您搜索本地虚拟回购" chocolatey "表示存储在" chocolatey.org "中的任何物品。从chocolatey.org下载的任何产品都将被缓存到本地的“巧克力图库”中,下次下载时无需上网即可使用。

第二步,执行安装Powershell 5.0正如最近这篇文章所描述的那样。打开管理员命令窗口,启动Powershell。

第三步,需要的设置和使用OneGet正如最近这篇文章所描述的那样。按照说明进行设置OneGet

使用OneGet

现在,OneGet设置,使用OneGet在此机器上安装NuGet包。从Powershell命令行发出以下命令OneGet命令:

Find-Package - nameNuGetvs| Install-Package - verbose

安装NuGet后,列表使用此命令的NuGet包可用的“源”。

把- - - - - -PackageSource

现在只有一种巧克力(NuGet)源可用,名称为“NuGet”。我们想要添加在Artifactory服务器中找到的两个新的Chocolatey (NuGet)源。第一个,将允许访问本地构建并存储为NuGet包(CI构建)第二个在Chocolatey.org网站上可以买到的东西都可以买到。

让我们使用下面的代码OneGet命令:

添加- - - - - -packagesource-供应商Chocolatey -Name JFrog -Locationhttps://tfs:8081/artifactory/api/nuget/nuget-staging-local

添加- - - - - -packagesource-供应商Chocolatey名称localchoco位置https://tfs8081 /artifactory/api/nuget/ chocolatey-gallery

设置Artifactory后,确保Artifactory被用来代理Chocolately画廊。我们可以通过移除原始的NuGet的图库源OneGet命令如下:

删除- - - - - -packagesource- nameNuGet

这将删除“NuGet巧克力(NuGet)包装的来源。现在运行getpackagesource命令将只列出两个来源,”jfrog"和"localchoco,在名称页眉中。两者都位于Artifactory服务器中。“localchocopackagesource将代理https://Chocolatey.org而“jfrogpackagesource将代理Artifactory中的本地发布文件夹https://tfs:8081/artifactory/api/nuget/nuget-release-local

把- - - - - -PackageSource

OneGet命令" find-package "将只列出在存储库中找到的前20个包。注意,Source标题列列出了“jfrog"和"localchoco的消息来源。Jfrog源代码将包含本地构建和存储的包,而localchocoSource将列出在chocolatey.org在线存储库中找到的包。

Find-Package

要从chocolatey.org下载软件包,使用“安装包packagename”命令。这将拉出并安装包和任何依赖项到本地机器。由于我们使用Artifactory作为代理缓存,Artifactory将缓存并存储文件。下面是一个安装示例一个依赖于StrawberryPerl包的包。

安装包

随着和StrawberryPerl包是在本地安装的,这些包缓存在Artifactory中的chocolatey-gallery中。下次任何开发人员需要安装,下载将从Artifactory而不是chocolatey.org图库进行。

现在我们可以使用Powershell了OneGet命令来管理我们的NuGetChocolatey的包装:

把- - - - - -PackageSourceGet-Packages Find-Package Add-PackageSource删除- - - - - -PackageSource安装包Uninstall-Package

例如:

找到包

注意这两个不同的来源。Artifactory将只列出找到的前20个包。

找到包sqlserver

我们也可以使用NuGet命令访问相同的文件。

NuGetList -s https://tfs:8081/artifactory/api/nuget/chocolatey

NuGet列表sqlserver- s https://tfs: 8081 / artifactory / api / nuget /巧克力色

巧克力色的安装

安装包后使用OneGet,它就像一个普通的Chocolatey装置。Nuget包安装到$Chocolateylib目录下。打包后的包被缓存在$AppDataLocalNuGetCache下。如果你没有连接对于互联网,以前安装的软件包可以从这两个位置检索。

Chocolatey libs文件夹是每个开发人员机器上的安装包列表。这对于帮助跟踪多台机器或构建盒上的依赖差异非常重要。

巧克力(NuGet)包二进制文件可能会也可能不会存储在NuGet包。这些文件可以存储在面向公共的本地资源或私有存储库(如2022世界杯阿根廷预选赛赛程BinTray.使用存储在Chocolatey (NuGet)包中的Powershell脚本访问二进制文件。

NuGet工件中的包装信息

除了对NuGet包进行本地控制的好处之外,Artifactory还提供了关于存储的每个包的有价值的信息,包括许可证每个包的信息、所有者信息、作者信息、版本和日期。

标准属性作为元数据存储在Artifactory中。此外,可以轻松地创建和存储任何自定义属性。

对于存储在Artifactory中的每个工件,将计算sha1和md5。它们对于每个工件都是唯一的,并且可以在搜索中使用。

的人工存储库NuGet将有助于减少网络流量,提供对Chocolatey.org的可靠访问,提供批准的软件包版本,并为您的二进制依赖项提供安全和访问控制。

本地专有的NuGet包和其他非NuGet包格式也可能存储在同一台Artifactory服务器上。