跳到元数据的末尾
转到元数据开始

概述

弃用的通知

从Visual Studio的2017版本开始,MSBuild Artifactory插件不再被支持。

为了使Artifactory能够继续使用MSBuild, JFrog开发了一个替代的解决方案,可以在JFrog GitHub库它在哪里,也有完整的文档。

目前的MSBuild Artifactory Plugin已被弃用,我们建议在所有版本的Visual Studio中使用新的解决方案。


Artifactory通过MSBuild Artifactory插件为MSBuild、TFS和Visual Studio带来持续集成。这允许您捕获关于已部署工件的信息,解析与MSBuild构建运行相关的Nuget依赖关系和环境数据,并将工件部署到Artifactory。此外,Artifactory捕获的详尽构建信息支持完全可跟踪的构建。

MSBuild Artifactory插件

MSBuild Artifactory插件是一个GitHub上的开源项目你可以自由浏览和分叉。

示例代码

开始之前,这里有一个例子使用MSBuild Artifactory Plugin的多个项目的解决方案

无论您是在运行独立构建还是使用CI服务器,都可以使用MSBuild Artifactory Plugin。无论哪种情况,你都应该注意以下几点:

  1. 独立的集成
    MSBuild Artifactory Plugin与MSBuild过程完全集成,因此它可以作为标准构建的一部分运行。
    该插件使用传统的MSBuild XML配置文件来影响构建过程的不同阶段。
  2. CI服务器集成
    当在持续集成服务器中运行MSBuild构建时,使用插件是透明的,因为它是MSBuild过程中有效的组成部分。唯一的区别是插件从CI服务器收集信息。
    MSBuild Artifactory Plugin完全支持TFS,并收集详尽的构建信息,以实现完全可跟踪的构建。对其他CI服务器(如Jenkins、TeamCity和Bamboo)的支持是局部的,使用这些工具运行时收集的构建信息也相应是局部的。
页面内容


安装

MSBuild Artifactory插件使用Visual Studio作为“项目模板”安装,如下所示:

  • 工具,选择扩展和更新……,选择Visual Studio Gallery源下在线节中,然后搜索"Artifactory"
  • 选择Artifactory模板包找到扩展名,然后单击安装

  • 一旦安装完成,s选举解决方案你想要安装插件到其中。右键单击解决方案节点并选择添加|新项目…选择Artifactory并单击OK。

创建Artifactory项目

解决Nuget依赖,插件需要一个.nuget目录。在开始安装之前,请确保该目录存在。


您应该看到解决方案的以下更改:

  • 链接到Artifactory插件的新自定义项目。
  • 一个.artifactory文件夹已添加到解决方案中。确保此目录已提交给源代码控制。
  • .artifactory文件夹,一个Artifactory.build创建文件。这是主插件配置文件。
  • 两个.targets文件被创建。这些是由插件内部使用的,不应该手动修改。

  • Nuget与插件相关的软件包应该已经安装到解决方案中。
  • 插件还将其自己的MSBuild配置文件导入artifactory.csproj而且.nuget \ NuGet.targets文件,以便添加到MSBuild进程。

最后一步将是通过添加的将相关项目链接到Artifactory项目项目参考.只有链接的项目才会被插件监控。


安装插件依赖关系

以下两个依赖项:Nuget。核心v2.8.2而且Microsoft.Web.Xdt v2.1.1还必须与插件一起安装。

如果您正在从Artifactory的实例中安装插件,您需要确保Artifactory能够访问插件及其依赖项。例如,您可能有一个引用包含插件的本地存储库的虚拟存储库,以及一个引用nuget.org的远程存储库。有关配置Artifactory的更多详细信息,请参阅NuGet存储库


更新

到u更新Artifactory扩展,执行以下步骤:

  • 工具中,选择扩展和更新……,然后,将“Visual Studio Gallery”源码下更新部分。
  • 选择Artifactory模板包找到扩展名,然后单击更新

现有项目(可选步骤)

如果你已经有一个您的解决方案中现有的Artifactory项目模板,并且您想要将它更新到最新的版本,执行以下步骤:

  • 右键单击Artifactory项目和选择管理NuGet包……
  • NuGet包管理窗口下,选择一个来源(例如nuget.org)更新部分。
  • 选择Artifactory找到包,然后单击更新


卸载

  • 删除.artifactory文件夹及其内容。
  • 从解决方案中删除自定义Artifactory项目。

还要确保从文件系统中删除这些项。


从旧的插件实现迁移

要从旧的插件实现迁移,您需要卸载它,然后安装新的实现

  • 遵循中描述的步骤卸载
  • 遵循中描述的步骤安装



配置

一般信息

中配置了MSBuild Artifactory PluginArtifactory.build配置文件。该文件的结构使用MSBuild语言约定,因此所有属性都可以使用保留的属性环境属性

MSBuild可以收集在构建中配置的属性或在环境变量中。这种能力可以在不同的情况下有所帮助:

  • 您可以根据插件运行的构建上下文动态覆盖插件配置。
  • 可以防止将敏感信息检入到源代码控制中。
    例如,如果构建运行在一个构建服务器(例如TFS)下,那么所有的Artifactory凭证都可以由服务器管理员定义,因此,不会被检入/提交给源代码控制。

有关MSBuild属性的更多信息,请参阅MSBuild参考文档

配置说明

有关配置的详细信息,请参阅Artifactory.buildconfiguration file

决议

为了解析包,MSBuild Artifactory Plugin使用NuGet包恢复功能与MSBuild-Integrated包恢复的方法。要支持这一点,安装插件的项目必须是解决方案的一部分.nuget文件夹中。如果.nuget文件夹不存在时,插件将不会覆盖解决方案中的包恢复。

msbuild -集成包恢复方法

请注意以下几点:

  • 即使插件安装在项目级别,它也会覆盖NuGet分辨率所有同一解决方案下的项目。
  • 手动配置.nuget / NuGet.Config文件被插件忽略。
  • 修改.nuget / NuGet.targets文件可能在解析过程中导致意外行为。我们强烈建议您不要手动修改这些文件。
  • .nuget文件夹必须提交给源代码控制。

通过Artifactory确保包解析

为了减轻网络连接不可用的情况,NuGet客户机本地缓存从远程存储库下载的任何工件NuGet本地缓存(在AppData % \当地\ NuGet \缓存)随后,NuGet客户端当试图解析包时,首先检查缓存。因此,从Artifactory中的远程存储库或从NuGet Gallery中下载的工件通常存储在这个本地缓存中,并将在下次尝试引用它们时从缓存中提供。

为了确保NuGet客户端通过Artifactory解析包,您需要删除NuGet本地缓存。

部署

为了支持各种各样的项目模板、解决方案结构和工件类型,MSBuild Artifactory Plugin被设计得非常灵活,允许用户在配置如何部署包方面有很大的自由。

  • 使用一个输入模式,用户可以指定插件将为部署收集的文件的路径。的路径是相对到安装插件的项目,以及到解决方案中由插件引用的其他项目。
  • 使用一个输出模式,用户可以在Artifactory中指定与指定的输入模式
  • 用户还可以指定自定义属性注释所有由指定的输入模式

目标仓库布局

您可以为您的目标存储库定义一个自定义布局,但是要由您来指定正确的Output Pattern,以确保您的工件被部署到存储库中的正确位置。详情请参阅局部存储库

校验和部署

支持Artifactory“一次且仅一次”内容存储,该插件使用校验和部署有效地将包部署到Artifactory。在实际部署工件之前,插件将其校验和传递给Artifactory。

如果包已经存在,那么Artifactory不接受新的副本,它只是在数据库中创建一个新的元数据条目,以指示工件的另一个“副本”存在于指定的部署路径中。

具体项目的部署

Artifactory.build下的文件.artifactory目录适用于解决方案中的所有项目。但是,您可以覆盖特定项目的部署配置Artifactory.build项目范围内的文件。例如,您可以使用它来指定需要部署的工件的完整路径。该插件检测特定于项目的内容Artifactory.build文件,并将部署配置应用到该项目,覆盖通用部署配置。下面的例子展示了“ArtifactoryDemo”。的项目Artifactory.build文件覆盖通用解决方案部署配置。

覆盖通用解决方案部署配置

环境变量

您可以启用EnvironmentVariables标记,以便MSBuild Artifactory Plugin使用构建过程可访问的所有环境变量,并将它们注册到构建信息中。如果在构建服务器下运行,服务器的属性也会被使用和注册。你可以定义IncludePatterns而且ExcludePatterns控制在已发布的构建信息中包含哪些变量。

通配符模式

一个模式可以包含*和?通配符。在排除模式之前应用包括模式。

过多的构建信息可能会降低部署速度

将所有环境变量作为捕获的构建信息的一部分可能会导致非常大的构建对象,进而可能会降低部署速度。

许可证管理的商品

MSBuild Artifactory Plugin支持Artifactory Pro许可证管理的商品.控件中的几个标记控制该特性Artifactory.build配置文件。

LicenseControl
启用/禁用license控制特性
LicenseViolationRecipients
指定应通过电子邮件接收许可证警报的收件人的地址
AutomaticLicenseDiscovery

设置完成后,Artifactory将在部署时用许可证信息分析并标记构建的依赖项

资源密集型

license自动发现是一项资源密集型操作,可能会降低部署速度。如果不执行自动发现license的操作,仍然可以手动加载license信息通过运行“Auto-Find”

从构建的许可证选项卡。详情请参阅研究建立许可

IncludePublishedArtifacts
许可证检查通常只在已发布包的依赖项上运行。如果设置了此标志,则在部署的工件本身上运行许可证检查(仅对NuGet包有效)
ScopesForLicenseAnalysis
让您指定应该在其上运行许可证分析的范围。

黑鸭代码中心集成

如果您正在使用Artifactory Pro并在黑鸭子您可以通过自动的、非侵入式的、开源组件批准流程运行构建,并监视安全漏洞。

BlackDuckComplianceCheck
启用/禁用license控制特性
CodeCenterApplicationName
现有的Black Duck Code Center应用程序名称
CodeCenterApplicationVersion
现有的Black Duck Code Center应用程序版本
LicenseViolationRecipients
指定应通过电子邮件接收许可证警报的收件人的地址
ScopesForLicenseAnalysis
让您指定应该在其上运行许可证分析的范围。
IncludePublishedArtifacts
许可证检查通常只在已发布包的依赖项上运行。如果设置了此标志,则在部署的工件本身上运行许可证检查(仅对NuGet包有效)
AutoCreateMissingComponent
构建完成并在Artifactory中部署后,自动在Black Duck Code Center应用程序中创建缺失的组件。
AutoDiscardStaleComponent
构建完成并在Artifactory中部署后,在Black Duck Code Center应用程序中自动丢弃陈旧的组件。

网络配置

通过代理部署

MSBuild Artifactory Plugin支持通过网络代理进行部署。的值ProxySettings标签的Artifactory.build配置文件不被插件识别,它将回落到使用http_proxy用于代理配置的环境变量http:// <用户名>:<密码> @proxy.com。

可以通过设置绕过代理绕过标签在插件配置中。

解决代理

由于Nuget客户端的技术问题,您不能通过插件通过代理配置NuGet客户端进行解析。为Nuget客户端通过代理解析工件,您需要在中配置代理设置% APPDATA % \ NuGet \ NuGet。配置

有关如何配置Nuget代理的更多信息,请参阅NuGet配置设置


使用MSBuild Artifactory Plugin运行构建

一旦您完成了MSBuild Artifactory Plugin的设置,您就可以运行项目构建了。该插件在构建结束时生效,并执行以下操作:

  1. 将指定发布的构件发布到选定的目标存储库,并应用适当的路径映射。
  2. 将BuildInfo部署到Artifactory,提供构建的完全可跟踪性,并链接到TFS中的构建。

下面的示例显示了构建日志的Visual Studio输出(最小冗长日志级别:正常)和一些已部署的工件。在底部有一个到Artifactory上Build Info报告的链接。


团队基础服务器(TFS)集成

MSBuild Artifactory Plugin为TFS用户带来了CI Build集成,允许您高效地将工件部署到Artifactory。除了插件已经注册的BuildInfo之外,所有与TFS相关的参数也被记录下来,以促进完全可跟踪的构建。

有关如何在Artifactory中使用构建信息的更多信息,请参阅BuildInfo

MSBuild参数在TFS

MSBuild Artifactory Plugin配置文件支持MSBuild保留的属性环境属性最佳实践是在TFS构建配置中定义这些属性。这使您可以保护敏感信息,并使用不同的属性运行相同的构建。下面是在TFS构建定义中配置的属性示例。

包恢复与团队基础构建

对于teamfoundation Build 2013就地部署,默认的构建过程模板已经实现了NuGet包恢复工作流不需要任何特殊配置。

为了避免从插件外部恢复NuGet包,您需要从工作流中删除它。


许可证

MSBuild Artifactory插件可以在Apache v2许可


截屏视频



发布说明

2.2.0(2016年3月10日)
  1. 支持TFS 2015
2.1.0(2015年8月18日)
  1. 支持Visual Studio 2015
  2. 错误修复MSBAI-7
2.0.0(2015年4月30日)
  1. Artifactory插件作为一个Visual Studio扩展,并在解决方案中用作“项目模板”。
  2. 支持黑鸭子代码中心作为构建过程的一部分。
1.0.0(2014年9月30日)
  1. 第一个发布版本。






  • 没有标签